Diff of the two buildlogs: -- --- b1/build.log 2025-10-12 11:12:49.694866766 +0000 +++ b2/build.log 2025-10-12 11:14:52.067004928 +0000 @@ -1,7 +1,7 @@ W: cgroups are not available on the host, not using them. I: pbuilder: network access will be disabled during build -I: Current time: Sat Oct 11 23:10:13 -12 2025 -I: pbuilder-time-stamp: 1760267413 +I: Current time: Sun Nov 15 07:35:51 +14 2026 +I: pbuilder-time-stamp: 1794677751 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -25,52 +25,84 @@ dpkg-source: info: applying no-network.patch I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/3533577/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/D01_modify_environment starting +debug: Running on codethink03-arm64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Nov 14 17:36 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="3" [2]="3" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.3.3(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='3533577' - PS1='# ' - PS2='> ' + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=12811 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.kBPmQPMt/pbuilderrc_uPr8 --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.kBPmQPMt/b1 --logfile b1/build.log libfirefox-marionette-perl_1.68-1.dsc' - SUDO_GID='109' - SUDO_HOME='/var/lib/jenkins' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/sbin/chroot' - http_proxy='http://192.168.101.4:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.kBPmQPMt/pbuilderrc_PW6K --distribution forky --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.kBPmQPMt/b2 --logfile b2/build.log libfirefox-marionette-perl_1.68-1.dsc' + SUDO_GID=109 + SUDO_HOME=/var/lib/jenkins + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink04-arm64 6.12.48+deb13-cloud-arm64 #1 SMP Debian 6.12.48-1 (2025-09-20) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.12.48+deb13-cloud-arm64 #1 SMP Debian 6.12.48-1 (2025-09-20) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3533577/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -362,7 +394,7 @@ Get: 217 http://deb.debian.org/debian forky/main arm64 xauth arm64 1:1.1.2-1.1 [35.4 kB] Get: 218 http://deb.debian.org/debian forky/main arm64 xserver-common all 2:21.1.18-2 [2417 kB] Get: 219 http://deb.debian.org/debian forky/main arm64 xvfb arm64 2:21.1.18-2 [3130 kB] -Fetched 164 MB in 1s (161 MB/s) +Fetched 164 MB in 1s (215 MB/s) Preconfiguring packages ... Selecting previously unselected package libsystemd-shared:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20000 files and directories currently installed.) @@ -1288,7 +1320,11 @@ fakeroot is already the newest version (1.37.1.2-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/reproducible-path/libfirefox-marionette-perl-1.68/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../libfirefox-marionette-perl_1.68-1_source.changes +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/libfirefox-marionette-perl-1.68/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../libfirefox-marionette-perl_1.68-1_source.changes dpkg-buildpackage: info: source package libfirefox-marionette-perl dpkg-buildpackage: info: source version 1.68-1 dpkg-buildpackage: info: source distribution unstable @@ -1307,12 +1343,12 @@ Mozilla Firefox 140.3.1esr grep -r Mem /proc/meminfo MemTotal: 32809424 kB -MemFree: 5042772 kB -MemAvailable: 7026596 kB +MemFree: 12252700 kB +MemAvailable: 13346480 kB ulimit -a | grep -i mem -memory(kbytes) unlimited -locked memory(kbytes) 8192 -vmemory(kbytes) unlimited +max locked memory (kbytes, -l) 8192 +max memory size (kbytes, -m) unlimited +virtual memory (kbytes, -v) unlimited Warning: prerequisite Test::CheckManifest 0.9 not found. Warning: prerequisite Test::Pod 1.41 not found. Warning: prerequisite Test::Pod::Coverage 1.04 not found. @@ -1324,55 +1360,55 @@ dh_auto_build make -j12 make[1]: Entering directory '/build/reproducible-path/libfirefox-marionette-perl-1.68' -cp lib/Firefox/Marionette/Exception/StaleElement.pm blib/lib/Firefox/Marionette/Exception/StaleElement.pm +cp lib/Firefox/Marionette/Login.pm blib/lib/Firefox/Marionette/Login.pm +cp lib/Firefox/Marionette/Response.pm blib/lib/Firefox/Marionette/Response.pm +cp lib/Firefox/Marionette/Timeouts.pm blib/lib/Firefox/Marionette/Timeouts.pm cp lib/Firefox/Marionette/Element/Rect.pm blib/lib/Firefox/Marionette/Element/Rect.pm -cp lib/Firefox/Marionette/Exception.pm blib/lib/Firefox/Marionette/Exception.pm -cp lib/Firefox/Marionette/ShadowRoot.pm blib/lib/Firefox/Marionette/ShadowRoot.pm cp lib/Firefox/Marionette/Proxy.pm blib/lib/Firefox/Marionette/Proxy.pm -cp lib/Firefox/Marionette/Exception/InsecureCertificate.pm blib/lib/Firefox/Marionette/Exception/InsecureCertificate.pm -cp lib/Firefox/Marionette/Login.pm blib/lib/Firefox/Marionette/Login.pm +cp lib/Firefox/Marionette/GeoLocation.pm blib/lib/Firefox/Marionette/GeoLocation.pm cp lib/Firefox/Marionette/Exception/NoSuchAlert.pm blib/lib/Firefox/Marionette/Exception/NoSuchAlert.pm -cp lib/Firefox/Marionette/Link.pm blib/lib/Firefox/Marionette/Link.pm -cp lib/Firefox/Marionette/Extension/HarExportTrigger.pm blib/lib/Firefox/Marionette/Extension/HarExportTrigger.pm -cp lib/Firefox/Marionette/Profile.pm blib/lib/Firefox/Marionette/Profile.pm cp lib/Firefox/Marionette/Buttons.pm blib/lib/Firefox/Marionette/Buttons.pm -cp lib/Firefox/Marionette/Element.pm blib/lib/Firefox/Marionette/Element.pm -cp lib/Firefox/Marionette.pm blib/lib/Firefox/Marionette.pm -cp lib/Firefox/Marionette/Bookmark.pm blib/lib/Firefox/Marionette/Bookmark.pm -cp lib/Firefox/Marionette/Keys.pm blib/lib/Firefox/Marionette/Keys.pm -cp lib/Firefox/Marionette/Extension/Stealth.pm blib/lib/Firefox/Marionette/Extension/Stealth.pm -cp lib/Firefox/Marionette/Exception/Response.pm blib/lib/Firefox/Marionette/Exception/Response.pm -cp lib/Firefox/Marionette/Response.pm blib/lib/Firefox/Marionette/Response.pm cp lib/Firefox/Marionette/Image.pm blib/lib/Firefox/Marionette/Image.pm -cp lib/Firefox/Marionette/Display.pm blib/lib/Firefox/Marionette/Display.pm -cp lib/Firefox/Marionette/GeoLocation.pm blib/lib/Firefox/Marionette/GeoLocation.pm +cp lib/Firefox/Marionette/Keys.pm blib/lib/Firefox/Marionette/Keys.pm +cp lib/Firefox/Marionette/Bookmark.pm blib/lib/Firefox/Marionette/Bookmark.pm +cp lib/Firefox/Marionette/DNS.pm blib/lib/Firefox/Marionette/DNS.pm cp lib/Firefox/Marionette/Exception/NotFound.pm blib/lib/Firefox/Marionette/Exception/NotFound.pm -cp lib/Firefox/Marionette/Cache.pm blib/lib/Firefox/Marionette/Cache.pm cp lib/Firefox/Marionette/Extension/Timezone.pm blib/lib/Firefox/Marionette/Extension/Timezone.pm +cp lib/Firefox/Marionette/Exception/StaleElement.pm blib/lib/Firefox/Marionette/Exception/StaleElement.pm cp lib/Firefox/Marionette/Capabilities.pm blib/lib/Firefox/Marionette/Capabilities.pm -cp lib/Firefox/Marionette/LocalObject.pm blib/lib/Firefox/Marionette/LocalObject.pm -cp lib/Firefox/Marionette/Cookie.pm blib/lib/Firefox/Marionette/Cookie.pm cp lib/Firefox/Marionette/Certificate.pm blib/lib/Firefox/Marionette/Certificate.pm -cp lib/Firefox/Marionette/DNS.pm blib/lib/Firefox/Marionette/DNS.pm -cp lib/Firefox/Marionette/Timeouts.pm blib/lib/Firefox/Marionette/Timeouts.pm -cp lib/Firefox/Marionette/UpdateStatus.pm blib/lib/Firefox/Marionette/UpdateStatus.pm -cp lib/Firefox/Marionette/WebWindow.pm blib/lib/Firefox/Marionette/WebWindow.pm -cp lib/Firefox/Marionette/WebFrame.pm blib/lib/Firefox/Marionette/WebFrame.pm -cp lib/Waterfox/Marionette/Profile.pm blib/lib/Waterfox/Marionette/Profile.pm +cp lib/Firefox/Marionette/ShadowRoot.pm blib/lib/Firefox/Marionette/ShadowRoot.pm +cp lib/Firefox/Marionette/Profile.pm blib/lib/Firefox/Marionette/Profile.pm +cp lib/Firefox/Marionette.pm blib/lib/Firefox/Marionette.pm +cp lib/Firefox/Marionette/Extension/Stealth.pm blib/lib/Firefox/Marionette/Extension/Stealth.pm +cp lib/Firefox/Marionette/Element.pm blib/lib/Firefox/Marionette/Element.pm +cp lib/Firefox/Marionette/Exception/Response.pm blib/lib/Firefox/Marionette/Exception/Response.pm +cp lib/Firefox/Marionette/Extension/HarExportTrigger.pm blib/lib/Firefox/Marionette/Extension/HarExportTrigger.pm +cp lib/Firefox/Marionette/Cookie.pm blib/lib/Firefox/Marionette/Cookie.pm +cp lib/Firefox/Marionette/Cache.pm blib/lib/Firefox/Marionette/Cache.pm +cp lib/Firefox/Marionette/Display.pm blib/lib/Firefox/Marionette/Display.pm +cp lib/Firefox/Marionette/Exception/InsecureCertificate.pm blib/lib/Firefox/Marionette/Exception/InsecureCertificate.pm +cp lib/Firefox/Marionette/Exception.pm blib/lib/Firefox/Marionette/Exception.pm +cp lib/Firefox/Marionette/Link.pm blib/lib/Firefox/Marionette/Link.pm +cp lib/Firefox/Marionette/LocalObject.pm blib/lib/Firefox/Marionette/LocalObject.pm +cp lib/Firefox/Marionette/WebAuthn/Authenticator.pm blib/lib/Firefox/Marionette/WebAuthn/Authenticator.pm cp lib/Firefox/Marionette/Window/Rect.pm blib/lib/Firefox/Marionette/Window/Rect.pm cp lib/Waterfox/Marionette.pm blib/lib/Waterfox/Marionette.pm -cp lib/Firefox/Marionette/WebAuthn/Authenticator.pm blib/lib/Firefox/Marionette/WebAuthn/Authenticator.pm cp lib/Firefox/Marionette/WebAuthn/Credential.pm blib/lib/Firefox/Marionette/WebAuthn/Credential.pm +cp lib/Firefox/Marionette/WebWindow.pm blib/lib/Firefox/Marionette/WebWindow.pm +cp lib/Firefox/Marionette/UpdateStatus.pm blib/lib/Firefox/Marionette/UpdateStatus.pm +cp lib/Firefox/Marionette/WebFrame.pm blib/lib/Firefox/Marionette/WebFrame.pm +cp lib/Waterfox/Marionette/Profile.pm blib/lib/Waterfox/Marionette/Profile.pm cp ca-bundle-for-firefox blib/script/ca-bundle-for-firefox cp check-firefox-certificate-authorities blib/script/check-firefox-certificate-authorities -"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ca-bundle-for-firefox -"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/check-firefox-certificate-authorities cp firefox-passwords blib/script/firefox-passwords -"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/firefox-passwords +"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/check-firefox-certificate-authorities +"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ca-bundle-for-firefox cp setup-for-firefox-marionette-build.sh blib/script/setup-for-firefox-marionette-build.sh cp ssh-auth-cmd-marionette blib/script/ssh-auth-cmd-marionette -"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/setup-for-firefox-marionette-build.sh +"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/firefox-passwords "/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ssh-auth-cmd-marionette +"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/setup-for-firefox-marionette-build.sh Manifying 4 pod documents Manifying 27 pod documents Manifying 12 pod documents @@ -1391,10 +1427,10 @@ 1..1 ok 1 - use Firefox::Marionette; ok -# Starting test at Sun Oct 12 11:11:05 2025 -[3542699] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +# Starting test at Sat Nov 14 17:36:39 2026 +[21977] Sandbox: CanCreateUserNamespace() clone() failure: EPERM # Version is Mozilla Firefox 140.3.1esr -# XAUTHORITY is /tmp/xvfb-run.l3VHxw/Xauthority +# XAUTHORITY is /tmp/xvfb-run.sVymxN/Xauthority # DISPLAY is :99 Can't exec "dbus-launch": No such file or directory at t/01-marionette.t line 564. # D-Bus appears to be broken. 'dbus-launch' was unable to successfully complete:-1 @@ -1402,12 +1438,12 @@ # Xvfb deb version is 2:21.1.18-2 # grep -r Mem /proc/meminfo # MemTotal: 32809424 kB -# MemFree: 4732444 kB -# MemAvailable: 6716280 kB +# MemFree: 12064764 kB +# MemAvailable: 13201752 kB # ulimit -a | grep -i mem -# memory(kbytes) unlimited -# locked memory(kbytes) 8192 -# vmemory(kbytes) unlimited +# max locked memory (kbytes, -l) 8192 +# max memory size (kbytes, -m) unlimited +# virtual memory (kbytes, -v) unlimited # This firefox installation has 0 existing profiles '/usr/bin/perl --version' did not produce output that could be parsed. Assuming modern Marionette is available at t/01-marionette.t line 668. '/usr/bin/perl --version' did not produce output that could be parsed. Assuming modern Marionette is available at t/01-marionette.t line 668. @@ -1416,16 +1452,16 @@ # Initial tests # Testing has been running for 1 seconds at t/01-marionette.t line 786 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_5WVARJYP_2o/profile --no-remote --new-instance -[3542980] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_sP1Bds3S0Lq/profile --no-remote --new-instance +[22162] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 767:[1,1,null,{"sessionId":"d1b0d8c4-1b94-48a1-b3b2-5df6835854a7","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3542980,"moz:profile":"/tmp/firefox_marionette_local_5WVARJYP_2o/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] +<< 765:[1,1,null,{"sessionId":"84f80968-0ca6-4c83-922a-95dd800d45a9","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":22162,"moz:profile":"/tmp/firefox_marionette_local_sP1Bds3S0Lq/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 179:[0,2,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 66:[1,2,null,{"value":"OBRDFZJGFZ5r7Sg33eRiEaz-HjlFpqOyPGzGr28eXa0"}] +<< 66:[1,2,null,{"value":"D4QjB_GoCmQ13VuPn0m05Yuubx8VDVVJe_PYRes1xXY"}] >> 33:[0,3,"WebDriver:GetCapabilities"] -<< 726:[1,3,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3542980,"moz:profile":"/tmp/firefox_marionette_local_5WVARJYP_2o/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] +<< 724:[1,3,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":22162,"moz:profile":"/tmp/firefox_marionette_local_sP1Bds3S0Lq/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] >> 71:[0,4,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 93:[1,4,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] >> 29:[0,5,"Marionette:GetContext"] @@ -1440,8 +1476,8 @@ << 25:[1,9,null,{"value":null}] # Browser version is 140.3.1 # Operating System is linux 6.12.48+deb13-cloud-arm64 -# Profile Directory is /tmp/firefox_marionette_local_5WVARJYP_2o/profile -# Mozilla PID is 3542980 +# Profile Directory is /tmp/firefox_marionette_local_sP1Bds3S0Lq/profile +# Mozilla PID is 22162 # Firefox BuildID is 20250922173505 # Addons are disabled # User Agent is Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 @@ -1472,29 +1508,23 @@ >> 87:[0,21,"WebDriver:ExecuteScript",{"script":"window.open(\"about:blank\", \"_blank\");"}] << 26:[1,21,null,{"value":null}] >> 30:[0,22,"WebDriver:CloseWindow"] -<< 52:[1,22,null,["e07a9e8d-8945-4497-b215-fd94cbdedc73"]] +<< 52:[1,22,null,["aca43df0-f750-42f7-924b-178f3303d3a3"]] >> 51:[0,23,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 61:[1,23,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing capabilities and accessing proxies -# Using proxy port TCP/37483 -# Using SOCKS port TCP/47723 -# Testing has been running for 9 seconds at t/01-marionette.t line 1198 +# Using proxy port TCP/53793 +# Using SOCKS port TCP/54841 +# Testing has been running for 6 seconds at t/01-marionette.t line 1198 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_yoVwaXXrOlw/profile --no-remote --new-instance --kiosk -[3545314] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_qLNyq2BdQkm/profile --no-remote --new-instance --kiosk +[22543] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} ->> 836:[0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:37483","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:47723","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:44347"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}},"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:37483","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:47723","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:44347"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}] -[Parent 3545314, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 - -(firefox-esr:3545314): GLib-GObject-CRITICAL **: 11:11:15.507: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed -[Parent 3545314, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 +>> 836:[0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:53793","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:54841","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:59441"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}},"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:53793","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:54841","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:59441"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}] +[Parent 22543, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 -(firefox-esr:3545314): GLib-GObject-CRITICAL **: 11:11:15.528: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed -[Parent 3545314, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 - -(firefox-esr:3545314): GLib-GObject-CRITICAL **: 11:11:17.163: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed -<< 1345:[1,1,null,{"sessionId":"27de4a5f-d140-4025-82d4-744e8ba39052","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:37483","noProxy":["local.example.org"],"sslProxy":"localhost:44347","socksProxy":"localhost:47723","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3545314,"moz:profile":"/tmp/firefox_marionette_local_yoVwaXXrOlw/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:37483","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:47723","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:44347"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}] +(firefox-esr:22543): GLib-GObject-CRITICAL **: 17:36:47.198: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed +<< 1343:[1,1,null,{"sessionId":"8cde14ef-f79f-47f7-8861-33bd0e8fb9f8","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:53793","noProxy":["local.example.org"],"sslProxy":"localhost:59441","socksProxy":"localhost:54841","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":22543,"moz:profile":"/tmp/firefox_marionette_local_qLNyq2BdQkm/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:53793","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:54841","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:59441"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 78:[0,3,"WebDriver:SetTimeouts",{"implicit":6543,"pageLoad":54321,"script":4567}] @@ -1523,7 +1553,7 @@ << 31:[1,14,null,{"value":"content"}] >> 49:[0,15,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,15,null,{"value":null}] ->> 2300:[0,16,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"xaO6RGQCoj-e"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2300:[0,16,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"HgTC70qvvCzB"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,16,null,{"value":null}] >> 30:[0,17,"Marionette:GetContext"] << 30:[1,17,null,{"value":"chrome"}] @@ -1533,7 +1563,7 @@ << 31:[1,19,null,{"value":"content"}] >> 49:[0,20,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,20,null,{"value":null}] ->> 2300:[0,21,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"xaO6RGQCoj-e"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2300:[0,21,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"HgTC70qvvCzB"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,21,null,{"value":null}] >> 30:[0,22,"Marionette:GetContext"] << 30:[1,22,null,{"value":"chrome"}] @@ -1553,7 +1583,7 @@ << 31:[1,29,null,{"value":"content"}] >> 49:[0,30,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,30,null,{"value":null}] ->> 2300:[0,31,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"SQ7-ySWW6G1i"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2300:[0,31,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"BUD6UvQXUBgb"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,31,null,{"value":null}] >> 30:[0,32,"Marionette:GetContext"] << 30:[1,32,null,{"value":"chrome"}] @@ -1584,7 +1614,7 @@ >> 49:[0,45,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,45,null,{"value":null}] >> 2275:[0,46,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 139:[1,46,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267477,"lastModified":1760267477,"childCount":5}}] +<< 139:[1,46,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677807,"lastModified":1794677807,"childCount":5}}] >> 30:[0,47,"Marionette:GetContext"] << 30:[1,47,null,{"value":"chrome"}] >> 50:[0,48,"Marionette:SetContext",{"value":"content"}] @@ -1594,7 +1624,7 @@ >> 49:[0,50,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,50,null,{"value":null}] >> 2275:[0,51,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,51,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267477,"lastModified":1760267477,"parentGuid":"root________","childCount":0}}] +<< 174:[1,51,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677807,"lastModified":1794677807,"parentGuid":"root________","childCount":0}}] >> 30:[0,52,"Marionette:GetContext"] << 30:[1,52,null,{"value":"chrome"}] >> 50:[0,53,"Marionette:SetContext",{"value":"content"}] @@ -1603,7 +1633,7 @@ << 31:[1,54,null,{"value":"content"}] >> 49:[0,55,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,55,null,{"value":null}] ->> 2275:[0,56,"WebDriver:ExecuteScript",{"args":["7C-Fiv2tb_hQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,56,"WebDriver:ExecuteScript",{"args":["9KKPo37dJeOu"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,56,null,{"value":null}] >> 30:[0,57,"Marionette:GetContext"] << 30:[1,57,null,{"value":"chrome"}] @@ -1613,8 +1643,8 @@ << 31:[1,59,null,{"value":"content"}] >> 49:[0,60,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,60,null,{"value":null}] ->> 3030:[0,61,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"7C-Fiv2tb_hQ","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 262:[1,61,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"7C-Fiv2tb_hQ","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0,"lastModified":"2023-06-10T02:25:42.000Z"}}] +>> 3030:[0,61,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"9KKPo37dJeOu","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 262:[1,61,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"9KKPo37dJeOu","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0,"lastModified":"2023-06-10T02:25:42.000Z"}}] >> 30:[0,62,"Marionette:GetContext"] << 30:[1,62,null,{"value":"chrome"}] >> 50:[0,63,"Marionette:SetContext",{"value":"content"}] @@ -1624,19 +1654,16 @@ >> 49:[0,65,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,65,null,{"value":null}] >> 2275:[0,66,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 171:[1,66,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267477,"lastModified":1760267477,"parentGuid":"root________","childCount":0}}] +<< 171:[1,66,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677807,"lastModified":1794677807,"parentGuid":"root________","childCount":0}}] >> 30:[0,67,"Marionette:GetContext"] << 30:[1,67,null,{"value":"chrome"}] >> 50:[0,68,"Marionette:SetContext",{"value":"content"}] << 26:[1,68,null,{"value":null}] >> 30:[0,69,"Marionette:GetContext"] -[Parent 3545314, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 - -(firefox-esr:3545314): GLib-GObject-CRITICAL **: 11:11:19.329: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 31:[1,69,null,{"value":"content"}] >> 49:[0,70,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,70,null,{"value":null}] ->> 2275:[0,71,"WebDriver:ExecuteScript",{"args":["xaO6RGQCoj-e"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,71,"WebDriver:ExecuteScript",{"args":["HgTC70qvvCzB"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,71,null,{"value":null}] >> 30:[0,72,"Marionette:GetContext"] << 30:[1,72,null,{"value":"chrome"}] @@ -1646,8 +1673,8 @@ << 31:[1,74,null,{"value":"content"}] >> 49:[0,75,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,75,null,{"value":null}] ->> 2956:[0,76,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"xaO6RGQCoj-e","parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 188:[1,76,null,{"value":{"dateAdded":"2023-06-10T05:04:37.000Z","guid":"xaO6RGQCoj-e","parentGuid":"menu________","title":"CPAN","type":2,"index":0,"lastModified":"2023-06-10T05:04:37.000Z"}}] +>> 2956:[0,76,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"HgTC70qvvCzB","parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 188:[1,76,null,{"value":{"dateAdded":"2023-06-10T05:04:37.000Z","guid":"HgTC70qvvCzB","parentGuid":"menu________","title":"CPAN","type":2,"index":0,"lastModified":"2023-06-10T05:04:37.000Z"}}] >> 30:[0,77,"Marionette:GetContext"] << 30:[1,77,null,{"value":"chrome"}] >> 50:[0,78,"Marionette:SetContext",{"value":"content"}] @@ -1656,7 +1683,7 @@ << 31:[1,79,null,{"value":"content"}] >> 49:[0,80,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,80,null,{"value":null}] ->> 2275:[0,81,"WebDriver:ExecuteScript",{"args":["bt1V2WsGC43S"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,81,"WebDriver:ExecuteScript",{"args":["5YVGDs4tSsHU"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,81,null,{"value":null}] >> 30:[0,82,"Marionette:GetContext"] << 30:[1,82,null,{"value":"chrome"}] @@ -1666,9 +1693,12 @@ << 31:[1,84,null,{"value":"content"}] >> 49:[0,85,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,85,null,{"value":null}] ->> 4135:[0,86,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"bt1V2WsGC43S","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"xaO6RGQCoj-e","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 331:[1,86,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"bt1V2WsGC43S","parentGuid":"xaO6RGQCoj-e","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0,"lastModified":"2023-06-01T09:16:12.000Z"}}] +>> 4135:[0,86,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"5YVGDs4tSsHU","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"HgTC70qvvCzB","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 331:[1,86,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"5YVGDs4tSsHU","parentGuid":"HgTC70qvvCzB","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0,"lastModified":"2023-06-01T09:16:12.000Z"}}] >> 30:[0,87,"Marionette:GetContext"] +[Parent 22543, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 + +(firefox-esr:22543): GLib-GObject-CRITICAL **: 17:36:48.214: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 30:[1,87,null,{"value":"chrome"}] >> 50:[0,88,"Marionette:SetContext",{"value":"content"}] << 26:[1,88,null,{"value":null}] @@ -1676,7 +1706,7 @@ << 31:[1,89,null,{"value":"content"}] >> 49:[0,90,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,90,null,{"value":null}] ->> 2275:[0,91,"WebDriver:ExecuteScript",{"args":["DqTdlplAmShh"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,91,"WebDriver:ExecuteScript",{"args":["GvCYFeY9Vnhx"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,91,null,{"value":null}] >> 30:[0,92,"Marionette:GetContext"] << 30:[1,92,null,{"value":"chrome"}] @@ -1686,8 +1716,8 @@ << 31:[1,94,null,{"value":"content"}] >> 49:[0,95,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,95,null,{"value":null}] ->> 4153:[0,96,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"DqTdlplAmShh","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"xaO6RGQCoj-e","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 349:[1,96,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"DqTdlplAmShh","parentGuid":"xaO6RGQCoj-e","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1,"lastModified":"2023-06-02T02:17:32.000Z"}}] +>> 4153:[0,96,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"GvCYFeY9Vnhx","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"HgTC70qvvCzB","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 349:[1,96,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"GvCYFeY9Vnhx","parentGuid":"HgTC70qvvCzB","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1,"lastModified":"2023-06-02T02:17:32.000Z"}}] >> 30:[0,97,"Marionette:GetContext"] << 30:[1,97,null,{"value":"chrome"}] >> 50:[0,98,"Marionette:SetContext",{"value":"content"}] @@ -1697,7 +1727,7 @@ >> 50:[0,100,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,100,null,{"value":null}] >> 2276:[0,101,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,101,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267477,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] +<< 172:[1,101,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677807,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] >> 31:[0,102,"Marionette:GetContext"] << 31:[1,102,null,{"value":"chrome"}] >> 51:[0,103,"Marionette:SetContext",{"value":"content"}] @@ -1706,7 +1736,7 @@ << 32:[1,104,null,{"value":"content"}] >> 50:[0,105,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,105,null,{"value":null}] ->> 2276:[0,106,"WebDriver:ExecuteScript",{"args":["SQ7-ySWW6G1i"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,106,"WebDriver:ExecuteScript",{"args":["BUD6UvQXUBgb"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,106,null,{"value":null}] >> 31:[0,107,"Marionette:GetContext"] << 31:[1,107,null,{"value":"chrome"}] @@ -1716,8 +1746,8 @@ << 32:[1,109,null,{"value":"content"}] >> 50:[0,110,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,110,null,{"value":null}] ->> 2961:[0,111,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"SQ7-ySWW6G1i","parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 193:[1,111,null,{"value":{"dateAdded":"2023-06-10T05:04:37.000Z","guid":"SQ7-ySWW6G1i","parentGuid":"menu________","title":"Searches","type":2,"index":1,"lastModified":"2023-06-10T05:04:37.000Z"}}] +>> 2961:[0,111,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"BUD6UvQXUBgb","parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 193:[1,111,null,{"value":{"dateAdded":"2023-06-10T05:04:37.000Z","guid":"BUD6UvQXUBgb","parentGuid":"menu________","title":"Searches","type":2,"index":1,"lastModified":"2023-06-10T05:04:37.000Z"}}] >> 31:[0,112,"Marionette:GetContext"] << 31:[1,112,null,{"value":"chrome"}] >> 51:[0,113,"Marionette:SetContext",{"value":"content"}] @@ -1726,7 +1756,7 @@ << 32:[1,114,null,{"value":"content"}] >> 50:[0,115,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,115,null,{"value":null}] ->> 2276:[0,116,"WebDriver:ExecuteScript",{"args":["pOUeYqOA3wDj"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,116,"WebDriver:ExecuteScript",{"args":["cZlzG8VWxnbL"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,116,null,{"value":null}] >> 31:[0,117,"Marionette:GetContext"] << 31:[1,117,null,{"value":"chrome"}] @@ -1736,8 +1766,8 @@ << 32:[1,119,null,{"value":"content"}] >> 50:[0,120,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,120,null,{"value":null}] ->> 4273:[0,121,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"pOUeYqOA3wDj","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQklEQVQ4jaWTT0xbdQDHP+9f+17/UGAtBQIkmywDVERnZoJmISaCMcAyN5w4EndQY3bw5ElRSdBwWswOxh3mdIkeAJ0kbstwZMkuiH9QMgfbCDB0UrLSFvra0vb1vffzYDTj7Of2vXxO3w/8T6QHx3Lf/pDQPIeKknLCk88/rRVLnoKuZ12f54ZXckaMTetazXezeQnEDoEA6e7hA61SuWc4UL+vR3/hOPreR5EcB8cu4mxtYU2Nk57/YdLeMt/b0/zzrDSE+59g5diBx5RdkcnwoRNRpWk/pdgS29cukhkbQ44ECb70BsHn+2B9hY0vT6ey68s9zV/fnAaQ73Z06GrIN1w18FbUUQxiAx3YsWUq3jlN7blvUMNVmKNn+Ku/HSuTJdL3eqU/XDO00rs7CiA7dXZHoPmpHrm+ifi7r6F392O8+CYaYDzRTnjkLJ6mFggFiQ+fxAk3ENrd/Bz+SM9YH4pcRAx6u/rJTI6i1DSgvHySW4sJkps5XAHznkaSRj2qUBGKQebKKNqzR5CCwd6H51sUWcpbbWp5Jeb4ZyihcuRQGNPcJp6ykCWIxZMUaqvwP+JDb9Ip/ngVbXczsqweLAuZimoUC37FF8COJ5Cr6/FkU7S1VKPZ93BXx+mVHPKNf2KVu4gNjfQvy+AKVJnQetiV1JLmKQnhat59e7FzJvn5GaKdRyFzG2fpbVLTVTjCh1ypkZsTyKEIrrVNSYg1KyELueT3Thfu3EB/pgt3M4F989d/HuJrxwmPgDeAYWg4MQl3yyR45FXI5RC2WIhs6K6sCvfz4uWvKOvqR8pkcBbvYAEoFXjKDiP9HuHStmB13UFO5gl2HsW+fgGlWPikcWnJUtX7pYmsunjR+GOhO/rROdKnhvjtpzE+1S5jm2mSPQlWq1xGbmVoe/8MpNbYmJuZSpr3rjeAkB+amk27TnYw8e3Z+4qhUv3FJfy76rDtIpJu8IraznHRQdOpC0g+iJ//OGWtxT5om1hN72xh4PFW2aj4MNTyZLfUeYx8OESgMoq34JBZmMW5Mkpu5fb3bsYc3NM6t7OFf5nuqzNq9NqDlvAMirzVZhTzAUvzWiWfd0bDPW9Z5kTL+PzmgzX+DWN5abKzgxf8AAAAAElFTkSuQmCC","parentGuid":"SQ7-ySWW6G1i","title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 277:[1,121,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"pOUeYqOA3wDj","parentGuid":"SQ7-ySWW6G1i","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0,"lastModified":"2023-06-02T01:52:51.000Z"}}] +>> 4273:[0,121,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"cZlzG8VWxnbL","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQklEQVQ4jaWTT0xbdQDHP+9f+17/UGAtBQIkmywDVERnZoJmISaCMcAyN5w4EndQY3bw5ElRSdBwWswOxh3mdIkeAJ0kbstwZMkuiH9QMgfbCDB0UrLSFvra0vb1vffzYDTj7Of2vXxO3w/8T6QHx3Lf/pDQPIeKknLCk88/rRVLnoKuZ12f54ZXckaMTetazXezeQnEDoEA6e7hA61SuWc4UL+vR3/hOPreR5EcB8cu4mxtYU2Nk57/YdLeMt/b0/zzrDSE+59g5diBx5RdkcnwoRNRpWk/pdgS29cukhkbQ44ECb70BsHn+2B9hY0vT6ey68s9zV/fnAaQ73Z06GrIN1w18FbUUQxiAx3YsWUq3jlN7blvUMNVmKNn+Ku/HSuTJdL3eqU/XDO00rs7CiA7dXZHoPmpHrm+ifi7r6F392O8+CYaYDzRTnjkLJ6mFggFiQ+fxAk3ENrd/Bz+SM9YH4pcRAx6u/rJTI6i1DSgvHySW4sJkps5XAHznkaSRj2qUBGKQebKKNqzR5CCwd6H51sUWcpbbWp5Jeb4ZyihcuRQGNPcJp6ykCWIxZMUaqvwP+JDb9Ip/ngVbXczsqweLAuZimoUC37FF8COJ5Cr6/FkU7S1VKPZ93BXx+mVHPKNf2KVu4gNjfQvy+AKVJnQetiV1JLmKQnhat59e7FzJvn5GaKdRyFzG2fpbVLTVTjCh1ypkZsTyKEIrrVNSYg1KyELueT3Thfu3EB/pgt3M4F989d/HuJrxwmPgDeAYWg4MQl3yyR45FXI5RC2WIhs6K6sCvfz4uWvKOvqR8pkcBbvYAEoFXjKDiP9HuHStmB13UFO5gl2HsW+fgGlWPikcWnJUtX7pYmsunjR+GOhO/rROdKnhvjtpzE+1S5jm2mSPQlWq1xGbmVoe/8MpNbYmJuZSpr3rjeAkB+amk27TnYw8e3Z+4qhUv3FJfy76rDtIpJu8IraznHRQdOpC0g+iJ//OGWtxT5om1hN72xh4PFW2aj4MNTyZLfUeYx8OESgMoq34JBZmMW5Mkpu5fb3bsYc3NM6t7OFf5nuqzNq9NqDlvAMirzVZhTzAUvzWiWfd0bDPW9Z5kTL+PzmgzX+DWN5abKzgxf8AAAAAElFTkSuQmCC","parentGuid":"BUD6UvQXUBgb","title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 277:[1,121,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"cZlzG8VWxnbL","parentGuid":"BUD6UvQXUBgb","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0,"lastModified":"2023-06-02T01:52:51.000Z"}}] >> 31:[0,122,"Marionette:GetContext"] << 31:[1,122,null,{"value":"chrome"}] >> 51:[0,123,"Marionette:SetContext",{"value":"content"}] @@ -1746,7 +1776,7 @@ << 32:[1,124,null,{"value":"content"}] >> 50:[0,125,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,125,null,{"value":null}] ->> 2276:[0,126,"WebDriver:ExecuteScript",{"args":["gUIp5vvS5bJb"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,126,"WebDriver:ExecuteScript",{"args":["sqLFCaDBcm6o"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,126,null,{"value":null}] >> 31:[0,127,"Marionette:GetContext"] << 31:[1,127,null,{"value":"chrome"}] @@ -1756,8 +1786,8 @@ << 32:[1,129,null,{"value":"content"}] >> 50:[0,130,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,130,null,{"value":null}] ->> 4160:[0,131,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"gUIp5vvS5bJb","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 373:[1,131,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"gUIp5vvS5bJb","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":2,"lastModified":"1970-01-20T12:13:31.000Z"}}] +>> 4160:[0,131,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"sqLFCaDBcm6o","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 373:[1,131,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"sqLFCaDBcm6o","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":2,"lastModified":"1970-01-20T12:13:31.000Z"}}] >> 31:[0,132,"Marionette:GetContext"] << 31:[1,132,null,{"value":"chrome"}] >> 51:[0,133,"Marionette:SetContext",{"value":"content"}] @@ -1766,7 +1796,7 @@ << 32:[1,134,null,{"value":"content"}] >> 50:[0,135,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,135,null,{"value":null}] ->> 2276:[0,136,"WebDriver:ExecuteScript",{"args":["aUJcwtiJSQoT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,136,"WebDriver:ExecuteScript",{"args":["2AX_JfcoYcQK"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,136,null,{"value":null}] >> 31:[0,137,"Marionette:GetContext"] << 31:[1,137,null,{"value":"chrome"}] @@ -1776,32 +1806,32 @@ << 32:[1,139,null,{"value":"content"}] >> 50:[0,140,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,140,null,{"value":null}] ->> 3015:[0,141,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"aUJcwtiJSQoT","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 247:[1,141,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"aUJcwtiJSQoT","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":3,"lastModified":"2023-06-10T02:28:01.000Z"}}] +>> 3015:[0,141,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"2AX_JfcoYcQK","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 247:[1,141,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"2AX_JfcoYcQK","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":3,"lastModified":"2023-06-10T02:28:01.000Z"}}] >> 31:[0,142,"Marionette:GetContext"] << 31:[1,142,null,{"value":"chrome"}] >> 51:[0,143,"Marionette:SetContext",{"value":"content"}] << 27:[1,143,null,{"value":null}] >> 181:[0,144,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 68:[1,144,null,{"value":"tbtXAfJhE-wDJozV7DO5-zf2J9r4kfZKSlbfoZ_Fc2I"}] +<< 68:[1,144,null,{"value":"b_dWNaFeLG8OhmTy93qihmlIu9QCvpL85jR_XHK5YFQ"}] >> 31:[0,145,"Marionette:GetContext"] << 32:[1,145,null,{"value":"content"}] >> 51:[0,146,"Marionette:SetContext",{"value":"content"}] << 27:[1,146,null,{"value":null}] >> 121:[0,147,"WebDriver:ExecuteScript",{"script":"return (async function() { return await window.HAR.triggerExport() })();\n"}] -<< 336:[1,147,{"error":"javascript error","message":"TypeError: can't access property \"triggerExport\", window.HAR is undefined","stacktrace":"@moz-nullprincipal:{7d6e9601-0bac-40d1-b322-6137c7cb3daf}:2:34\n@moz-nullprincipal:{7d6e9601-0bac-40d1-b322-6137c7cb3daf}:2:76\n@moz-nullprincipal:{7d6e9601-0bac-40d1-b322-6137c7cb3daf}:4:8\n"},null] +<< 336:[1,147,{"error":"javascript error","message":"TypeError: can't access property \"triggerExport\", window.HAR is undefined","stacktrace":"@moz-nullprincipal:{3301b7c1-875c-4cae-bfc6-2fd48aa33ab1}:2:34\n@moz-nullprincipal:{3301b7c1-875c-4cae-bfc6-2fd48aa33ab1}:2:76\n@moz-nullprincipal:{3301b7c1-875c-4cae-bfc6-2fd48aa33ab1}:4:8\n"},null] >> 31:[0,148,"Marionette:GetContext"] << 32:[1,148,null,{"value":"content"}] >> 50:[0,149,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,149,null,{"value":null}] >> 839:[0,150,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 334:[1,150,null,{"value":[{"guid":"bt1V2WsGC43S","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"xaO6RGQCoj-e","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 334:[1,150,null,{"value":[{"guid":"5YVGDs4tSsHU","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"HgTC70qvvCzB","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,151,"Marionette:GetContext"] << 31:[1,151,null,{"value":"chrome"}] >> 50:[0,152,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,152,null,{"value":null}] ->> 2276:[0,153,"WebDriver:ExecuteScript",{"args":["bt1V2WsGC43S"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 1420:[1,153,null,{"value":{"guid":"bt1V2WsGC43S","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"xaO6RGQCoj-e","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC"}}] +>> 2276:[0,153,"WebDriver:ExecuteScript",{"args":["5YVGDs4tSsHU"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 1420:[1,153,null,{"value":{"guid":"5YVGDs4tSsHU","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"HgTC70qvvCzB","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC"}}] >> 31:[0,154,"Marionette:GetContext"] << 31:[1,154,null,{"value":"chrome"}] >> 50:[0,155,"Marionette:SetContext",{"value":"chrome"}] @@ -1815,13 +1845,13 @@ >> 50:[0,159,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,159,null,{"value":null}] >> 817:[0,160,"WebDriver:ExecuteScript",{"args":[{"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 249:[1,160,null,{"value":[{"guid":"aUJcwtiJSQoT","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"menu________","url":"https://perlmonks.org/"}]}] +<< 249:[1,160,null,{"value":[{"guid":"2AX_JfcoYcQK","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"menu________","url":"https://perlmonks.org/"}]}] >> 31:[0,161,"Marionette:GetContext"] << 31:[1,161,null,{"value":"chrome"}] >> 50:[0,162,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,162,null,{"value":null}] ->> 2276:[0,163,"WebDriver:ExecuteScript",{"args":["aUJcwtiJSQoT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 225:[1,163,null,{"value":{"guid":"aUJcwtiJSQoT","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364081,"parentGuid":"menu________","url":"https://perlmonks.org/","tags":[]}}] +>> 2276:[0,163,"WebDriver:ExecuteScript",{"args":["2AX_JfcoYcQK"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 225:[1,163,null,{"value":{"guid":"2AX_JfcoYcQK","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364081,"parentGuid":"menu________","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,164,"Marionette:GetContext"] << 31:[1,164,null,{"value":"chrome"}] >> 50:[0,165,"Marionette:SetContext",{"value":"chrome"}] @@ -1831,29 +1861,29 @@ >> 51:[0,167,"Marionette:SetContext",{"value":"content"}] << 27:[1,167,null,{"value":null}] >> 35:[0,168,"WebDriver:GetCapabilities"] -<< 1307:[1,168,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:37483","noProxy":["local.example.org"],"sslProxy":"localhost:44347","socksProxy":"localhost:47723","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3545314,"moz:profile":"/tmp/firefox_marionette_local_yoVwaXXrOlw/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":6543,"pageLoad":54321,"script":4567},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:37483","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:47723","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:44347"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] +<< 1305:[1,168,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:53793","noProxy":["local.example.org"],"sslProxy":"localhost:59441","socksProxy":"localhost:54841","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":22543,"moz:profile":"/tmp/firefox_marionette_local_qLNyq2BdQkm/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":6543,"pageLoad":54321,"script":4567},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:53793","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:54841","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:59441"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] # $capabilities->moz_use_non_spec_compliant_pointer_origin is not supported for 140.3.1 -# Testing has been running for 15 seconds at t/01-marionette.t line 1310 +# Testing has been running for 9 seconds at t/01-marionette.t line 1310 >> 35:[0,169,"WebDriver:GetCapabilities"] -<< 1307:[1,169,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:37483","noProxy":["local.example.org"],"sslProxy":"localhost:44347","socksProxy":"localhost:47723","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3545314,"moz:profile":"/tmp/firefox_marionette_local_yoVwaXXrOlw/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":6543,"pageLoad":54321,"script":4567},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:37483","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:47723","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:44347"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] -# Testing has been running for 15 seconds at t/01-marionette.t line 1340 +<< 1305:[1,169,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:53793","noProxy":["local.example.org"],"sslProxy":"localhost:59441","socksProxy":"localhost:54841","socksVersion":5},"unhandledPromptBehavior":"accept and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":22543,"moz:profile":"/tmp/firefox_marionette_local_qLNyq2BdQkm/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":6543,"pageLoad":54321,"script":4567},"setWindowRect":true,"strictFileInteractability":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:53793","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:54841","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:59441"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] +# Testing has been running for 9 seconds at t/01-marionette.t line 1340 >> 52:[0,170,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,170,null,{"cause":"shutdown","forced":false,"in_app":true}] -# Starting new firefox for testing proxies with proxy port TCP/53653 -# Testing has been running for 16 seconds at t/01-marionette.t line 1461 +# Starting new firefox for testing proxies with proxy port TCP/53823 +# Testing has been running for 10 seconds at t/01-marionette.t line 1461 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_Zi9kMuoTWy_/profile --no-remote --new-instance --devtools -[3547960] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_su2zcVGmnFX/profile --no-remote --new-instance --devtools +[23192] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} ->> 220:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:53653","proxyType":"pac"}}},"proxy":{"proxyAutoconfigUrl":"http://localhost:53653","proxyType":"pac"}}] -<< 946:[1,1,null,{"sessionId":"4854aa4a-5e9f-451b-8263-3a451c31abb1","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:53653"},"unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3547960,"moz:profile":"/tmp/firefox_marionette_local_Zi9kMuoTWy_/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:53653","proxyType":"pac"}}}}}] +>> 220:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:53823","proxyType":"pac"}}},"proxy":{"proxyAutoconfigUrl":"http://localhost:53823","proxyType":"pac"}}] +<< 944:[1,1,null,{"sessionId":"b8abe002-5cee-488d-8c29-043020123acb","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:53823"},"unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":23192,"moz:profile":"/tmp/firefox_marionette_local_su2zcVGmnFX/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:53823","proxyType":"pac"}}}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 76:[0,3,"WebDriver:SetTimeouts",{"implicit":0,"pageLoad":65432,"script":30000}] << 25:[1,3,null,{"value":null}] >> 179:[0,4,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 66:[1,4,null,{"value":"8sXi9moNztjrmXc6dCutouWihcw7aIWh-kzJ-6fpnc4"}] +<< 66:[1,4,null,{"value":"3XwXaf0wLqK1RoHEZoVXvMhdOTSgQd_MrvEhNlMDODg"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] @@ -1965,23 +1995,23 @@ >> 50:[0,59,"Marionette:SetContext",{"value":"content"}] << 26:[1,59,null,{"value":null}] >> 34:[0,60,"WebDriver:GetCapabilities"] -<< 905:[1,60,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:53653"},"unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3547960,"moz:profile":"/tmp/firefox_marionette_local_Zi9kMuoTWy_/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":65432,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:53653","proxyType":"pac"}}}}}}] ->> 173:[0,61,"WebDriver:Navigate",{"sessionId":"4854aa4a-5e9f-451b-8263-3a451c31abb1","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] +<< 903:[1,60,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:53823"},"unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":23192,"moz:profile":"/tmp/firefox_marionette_local_su2zcVGmnFX/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":65432,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:53823","proxyType":"pac"}}}}}}] +>> 173:[0,61,"WebDriver:Navigate",{"sessionId":"b8abe002-5cee-488d-8c29-043020123acb","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] << 26:[1,61,null,{"value":null}] >> 862:[0,62,"WebDriver:ExecuteScript",{"script":"return (async function() { function getGeo() { return new Promise((resolve, reject) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(resolve, reject, { maximumAge: 0, enableHighAccuracy: true }); } else { reject(\"navigator.geolocation is unavailable\"); } }) }; return await getGeo().then((response) => { let d = new Date(); return { \"timezone_offset\": d.getTimezoneOffset(), \"latitude\": response[\"coords\"][\"latitude\"], \"longitude\": response[\"coords\"][\"longitude\"], \"altitude\": response[\"coords\"][\"altitude\"], \"accuracy\": response[\"coords\"][\"accuracy\"], \"altitudeAccuracy\": response[\"coords\"][\"altitudeAccuracy\"], \"heading\": response[\"coords\"][\"heading\"], \"speed\": response[\"coords\"][\"speed\"], }; }).catch((err) => { throw err.message }); })(); "}] -<< 155:[1,62,null,{"value":{"timezone_offset":720,"latitude":40,"longitude":24,"altitude":null,"accuracy":0,"altitudeAccuracy":null,"heading":null,"speed":null}}] +<< 156:[1,62,null,{"value":{"timezone_offset":-840,"latitude":40,"longitude":24,"altitude":null,"accuracy":0,"altitudeAccuracy":null,"heading":null,"speed":null}}] >> 51:[0,63,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 61:[1,63,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing proxies again using default proxy port TCP/3128 # Starting new firefox for testing PDFs and script elements -# Testing has been running for 25 seconds at t/01-marionette.t line 1579 +# Testing has been running for 16 seconds at t/01-marionette.t line 1579 ** firefox --version -** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_QU23W6b_O63/profile --no-remote --new-instance -[3549440] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_srTWsuk1hE1/profile --no-remote --new-instance +[25193] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 126:[0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}}}] -<< 835:[1,1,null,{"sessionId":"1af9eaf1-f725-454c-8cd9-e2c0bd80ba78","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3549440,"moz:profile":"/tmp/firefox_marionette_local_QU23W6b_O63/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}},"proxy":{}}}] +<< 833:[1,1,null,{"sessionId":"214da267-459e-4528-9371-fc3054338a2f","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":25193,"moz:profile":"/tmp/firefox_marionette_local_srTWsuk1hE1/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}},"proxy":{}}}] >> 29:[0,2,"Marionette:GetContext"] << 30:[1,2,null,{"value":"content"}] >> 48:[0,3,"Marionette:SetContext",{"value":"chrome"}] @@ -2006,7 +2036,7 @@ << 31:[1,12,null,{"value":"content"}] >> 49:[0,13,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,13,null,{"value":null}] ->> 2300:[0,14,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"diJaqmLq7xeQ"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2300:[0,14,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"mW7HSW2of92t"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,14,null,{"value":null}] >> 30:[0,15,"Marionette:GetContext"] << 30:[1,15,null,{"value":"chrome"}] @@ -2016,7 +2046,7 @@ << 31:[1,17,null,{"value":"content"}] >> 49:[0,18,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,18,null,{"value":null}] ->> 2300:[0,19,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"diJaqmLq7xeQ"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2300:[0,19,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"mW7HSW2of92t"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,19,null,{"value":null}] >> 30:[0,20,"Marionette:GetContext"] << 30:[1,20,null,{"value":"chrome"}] @@ -2036,7 +2066,7 @@ << 31:[1,27,null,{"value":"content"}] >> 49:[0,28,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,28,null,{"value":null}] ->> 2300:[0,29,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"hLPplJwUoV_b"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2300:[0,29,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"OkJM3EcjKoh2"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,29,null,{"value":null}] >> 30:[0,30,"Marionette:GetContext"] << 30:[1,30,null,{"value":"chrome"}] @@ -2067,7 +2097,7 @@ >> 49:[0,43,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,43,null,{"value":null}] >> 2275:[0,44,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 139:[1,44,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267494,"lastModified":1760267494,"childCount":5}}] +<< 139:[1,44,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677817,"lastModified":1794677817,"childCount":5}}] >> 30:[0,45,"Marionette:GetContext"] << 30:[1,45,null,{"value":"chrome"}] >> 50:[0,46,"Marionette:SetContext",{"value":"content"}] @@ -2077,7 +2107,7 @@ >> 49:[0,48,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,48,null,{"value":null}] >> 2275:[0,49,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,49,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267494,"lastModified":1760267494,"parentGuid":"root________","childCount":0}}] +<< 174:[1,49,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677817,"lastModified":1794677817,"parentGuid":"root________","childCount":0}}] >> 30:[0,50,"Marionette:GetContext"] << 30:[1,50,null,{"value":"chrome"}] >> 50:[0,51,"Marionette:SetContext",{"value":"content"}] @@ -2086,7 +2116,7 @@ << 31:[1,52,null,{"value":"content"}] >> 49:[0,53,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,53,null,{"value":null}] ->> 2275:[0,54,"WebDriver:ExecuteScript",{"args":["0t_7s5qXS_3T"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,54,"WebDriver:ExecuteScript",{"args":["VA0eTmAeYz-V"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,54,null,{"value":null}] >> 30:[0,55,"Marionette:GetContext"] << 30:[1,55,null,{"value":"chrome"}] @@ -2096,8 +2126,8 @@ << 31:[1,57,null,{"value":"content"}] >> 49:[0,58,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,58,null,{"value":null}] ->> 3030:[0,59,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"0t_7s5qXS_3T","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 262:[1,59,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"0t_7s5qXS_3T","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0,"lastModified":"2023-06-10T02:25:42.000Z"}}] +>> 3030:[0,59,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"VA0eTmAeYz-V","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 262:[1,59,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"VA0eTmAeYz-V","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0,"lastModified":"2023-06-10T02:25:42.000Z"}}] >> 30:[0,60,"Marionette:GetContext"] << 30:[1,60,null,{"value":"chrome"}] >> 50:[0,61,"Marionette:SetContext",{"value":"content"}] @@ -2107,7 +2137,7 @@ >> 49:[0,63,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,63,null,{"value":null}] >> 2275:[0,64,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 171:[1,64,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267494,"lastModified":1760267494,"parentGuid":"root________","childCount":0}}] +<< 171:[1,64,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677817,"lastModified":1794677817,"parentGuid":"root________","childCount":0}}] >> 30:[0,65,"Marionette:GetContext"] << 30:[1,65,null,{"value":"chrome"}] >> 50:[0,66,"Marionette:SetContext",{"value":"content"}] @@ -2116,7 +2146,7 @@ << 31:[1,67,null,{"value":"content"}] >> 49:[0,68,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,68,null,{"value":null}] ->> 2275:[0,69,"WebDriver:ExecuteScript",{"args":["diJaqmLq7xeQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,69,"WebDriver:ExecuteScript",{"args":["mW7HSW2of92t"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,69,null,{"value":null}] >> 30:[0,70,"Marionette:GetContext"] << 30:[1,70,null,{"value":"chrome"}] @@ -2126,8 +2156,8 @@ << 31:[1,72,null,{"value":"content"}] >> 49:[0,73,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,73,null,{"value":null}] ->> 2956:[0,74,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364609,"guid":"diJaqmLq7xeQ","parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 188:[1,74,null,{"value":{"dateAdded":"2023-06-10T02:36:49.000Z","guid":"diJaqmLq7xeQ","parentGuid":"menu________","title":"CPAN","type":2,"index":0,"lastModified":"2023-06-10T02:36:49.000Z"}}] +>> 2956:[0,74,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364609,"guid":"mW7HSW2of92t","parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 188:[1,74,null,{"value":{"dateAdded":"2023-06-10T02:36:49.000Z","guid":"mW7HSW2of92t","parentGuid":"menu________","title":"CPAN","type":2,"index":0,"lastModified":"2023-06-10T02:36:49.000Z"}}] >> 30:[0,75,"Marionette:GetContext"] << 30:[1,75,null,{"value":"chrome"}] >> 50:[0,76,"Marionette:SetContext",{"value":"content"}] @@ -2136,7 +2166,7 @@ << 31:[1,77,null,{"value":"content"}] >> 49:[0,78,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,78,null,{"value":null}] ->> 2275:[0,79,"WebDriver:ExecuteScript",{"args":["oiZeMkzFq1GN"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,79,"WebDriver:ExecuteScript",{"args":["8zftg0Eu-3I2"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,79,null,{"value":null}] >> 30:[0,80,"Marionette:GetContext"] << 30:[1,80,null,{"value":"chrome"}] @@ -2146,8 +2176,8 @@ << 31:[1,82,null,{"value":"content"}] >> 49:[0,83,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,83,null,{"value":null}] ->> 4135:[0,84,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"oiZeMkzFq1GN","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"diJaqmLq7xeQ","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 331:[1,84,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"oiZeMkzFq1GN","parentGuid":"diJaqmLq7xeQ","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0,"lastModified":"2023-06-01T09:16:12.000Z"}}] +>> 4135:[0,84,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"8zftg0Eu-3I2","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"mW7HSW2of92t","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 331:[1,84,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"8zftg0Eu-3I2","parentGuid":"mW7HSW2of92t","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0,"lastModified":"2023-06-01T09:16:12.000Z"}}] >> 30:[0,85,"Marionette:GetContext"] << 30:[1,85,null,{"value":"chrome"}] >> 50:[0,86,"Marionette:SetContext",{"value":"content"}] @@ -2156,7 +2186,7 @@ << 31:[1,87,null,{"value":"content"}] >> 49:[0,88,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,88,null,{"value":null}] ->> 2275:[0,89,"WebDriver:ExecuteScript",{"args":["wtxhl902HawF"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2275:[0,89,"WebDriver:ExecuteScript",{"args":["iKkf5vrHZRJE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 26:[1,89,null,{"value":null}] >> 30:[0,90,"Marionette:GetContext"] << 30:[1,90,null,{"value":"chrome"}] @@ -2166,8 +2196,8 @@ << 31:[1,92,null,{"value":"content"}] >> 49:[0,93,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,93,null,{"value":null}] ->> 4153:[0,94,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"wtxhl902HawF","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"diJaqmLq7xeQ","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 349:[1,94,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"wtxhl902HawF","parentGuid":"diJaqmLq7xeQ","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1,"lastModified":"2023-06-02T02:17:32.000Z"}}] +>> 4153:[0,94,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"iKkf5vrHZRJE","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC","parentGuid":"mW7HSW2of92t","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 349:[1,94,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"iKkf5vrHZRJE","parentGuid":"mW7HSW2of92t","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1,"lastModified":"2023-06-02T02:17:32.000Z"}}] >> 30:[0,95,"Marionette:GetContext"] << 30:[1,95,null,{"value":"chrome"}] >> 50:[0,96,"Marionette:SetContext",{"value":"content"}] @@ -2177,7 +2207,7 @@ >> 49:[0,98,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,98,null,{"value":null}] >> 2275:[0,99,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 171:[1,99,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267494,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] +<< 171:[1,99,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677817,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] >> 31:[0,100,"Marionette:GetContext"] << 31:[1,100,null,{"value":"chrome"}] >> 51:[0,101,"Marionette:SetContext",{"value":"content"}] @@ -2186,7 +2216,7 @@ << 32:[1,102,null,{"value":"content"}] >> 50:[0,103,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,103,null,{"value":null}] ->> 2276:[0,104,"WebDriver:ExecuteScript",{"args":["hLPplJwUoV_b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,104,"WebDriver:ExecuteScript",{"args":["OkJM3EcjKoh2"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,104,null,{"value":null}] >> 31:[0,105,"Marionette:GetContext"] << 31:[1,105,null,{"value":"chrome"}] @@ -2196,8 +2226,8 @@ << 32:[1,107,null,{"value":"content"}] >> 50:[0,108,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,108,null,{"value":null}] ->> 2961:[0,109,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364609,"guid":"hLPplJwUoV_b","parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 193:[1,109,null,{"value":{"dateAdded":"2023-06-10T02:36:49.000Z","guid":"hLPplJwUoV_b","parentGuid":"menu________","title":"Searches","type":2,"index":1,"lastModified":"2023-06-10T02:36:49.000Z"}}] +>> 2961:[0,109,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364609,"guid":"OkJM3EcjKoh2","parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 193:[1,109,null,{"value":{"dateAdded":"2023-06-10T02:36:49.000Z","guid":"OkJM3EcjKoh2","parentGuid":"menu________","title":"Searches","type":2,"index":1,"lastModified":"2023-06-10T02:36:49.000Z"}}] >> 31:[0,110,"Marionette:GetContext"] << 31:[1,110,null,{"value":"chrome"}] >> 51:[0,111,"Marionette:SetContext",{"value":"content"}] @@ -2206,7 +2236,7 @@ << 32:[1,112,null,{"value":"content"}] >> 50:[0,113,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,113,null,{"value":null}] ->> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["UWYpkNP4TaLf"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["T16svDtFZIQ4"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,114,null,{"value":null}] >> 31:[0,115,"Marionette:GetContext"] << 31:[1,115,null,{"value":"chrome"}] @@ -2216,8 +2246,8 @@ << 32:[1,117,null,{"value":"content"}] >> 50:[0,118,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,118,null,{"value":null}] ->> 4273:[0,119,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"UWYpkNP4TaLf","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQklEQVQ4jaWTT0xbdQDHP+9f+17/UGAtBQIkmywDVERnZoJmISaCMcAyN5w4EndQY3bw5ElRSdBwWswOxh3mdIkeAJ0kbstwZMkuiH9QMgfbCDB0UrLSFvra0vb1vffzYDTj7Of2vXxO3w/8T6QHx3Lf/pDQPIeKknLCk88/rRVLnoKuZ12f54ZXckaMTetazXezeQnEDoEA6e7hA61SuWc4UL+vR3/hOPreR5EcB8cu4mxtYU2Nk57/YdLeMt/b0/zzrDSE+59g5diBx5RdkcnwoRNRpWk/pdgS29cukhkbQ44ECb70BsHn+2B9hY0vT6ey68s9zV/fnAaQ73Z06GrIN1w18FbUUQxiAx3YsWUq3jlN7blvUMNVmKNn+Ku/HSuTJdL3eqU/XDO00rs7CiA7dXZHoPmpHrm+ifi7r6F392O8+CYaYDzRTnjkLJ6mFggFiQ+fxAk3ENrd/Bz+SM9YH4pcRAx6u/rJTI6i1DSgvHySW4sJkps5XAHznkaSRj2qUBGKQebKKNqzR5CCwd6H51sUWcpbbWp5Jeb4ZyihcuRQGNPcJp6ykCWIxZMUaqvwP+JDb9Ip/ngVbXczsqweLAuZimoUC37FF8COJ5Cr6/FkU7S1VKPZ93BXx+mVHPKNf2KVu4gNjfQvy+AKVJnQetiV1JLmKQnhat59e7FzJvn5GaKdRyFzG2fpbVLTVTjCh1ypkZsTyKEIrrVNSYg1KyELueT3Thfu3EB/pgt3M4F989d/HuJrxwmPgDeAYWg4MQl3yyR45FXI5RC2WIhs6K6sCvfz4uWvKOvqR8pkcBbvYAEoFXjKDiP9HuHStmB13UFO5gl2HsW+fgGlWPikcWnJUtX7pYmsunjR+GOhO/rROdKnhvjtpzE+1S5jm2mSPQlWq1xGbmVoe/8MpNbYmJuZSpr3rjeAkB+amk27TnYw8e3Z+4qhUv3FJfy76rDtIpJu8IraznHRQdOpC0g+iJ//OGWtxT5om1hN72xh4PFW2aj4MNTyZLfUeYx8OESgMoq34JBZmMW5Mkpu5fb3bsYc3NM6t7OFf5nuqzNq9NqDlvAMirzVZhTzAUvzWiWfd0bDPW9Z5kTL+PzmgzX+DWN5abKzgxf8AAAAAElFTkSuQmCC","parentGuid":"hLPplJwUoV_b","title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 277:[1,119,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"UWYpkNP4TaLf","parentGuid":"hLPplJwUoV_b","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0,"lastModified":"2023-06-02T01:52:51.000Z"}}] +>> 4273:[0,119,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"T16svDtFZIQ4","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADQklEQVQ4jaWTT0xbdQDHP+9f+17/UGAtBQIkmywDVERnZoJmISaCMcAyN5w4EndQY3bw5ElRSdBwWswOxh3mdIkeAJ0kbstwZMkuiH9QMgfbCDB0UrLSFvra0vb1vffzYDTj7Of2vXxO3w/8T6QHx3Lf/pDQPIeKknLCk88/rRVLnoKuZ12f54ZXckaMTetazXezeQnEDoEA6e7hA61SuWc4UL+vR3/hOPreR5EcB8cu4mxtYU2Nk57/YdLeMt/b0/zzrDSE+59g5diBx5RdkcnwoRNRpWk/pdgS29cukhkbQ44ECb70BsHn+2B9hY0vT6ey68s9zV/fnAaQ73Z06GrIN1w18FbUUQxiAx3YsWUq3jlN7blvUMNVmKNn+Ku/HSuTJdL3eqU/XDO00rs7CiA7dXZHoPmpHrm+ifi7r6F392O8+CYaYDzRTnjkLJ6mFggFiQ+fxAk3ENrd/Bz+SM9YH4pcRAx6u/rJTI6i1DSgvHySW4sJkps5XAHznkaSRj2qUBGKQebKKNqzR5CCwd6H51sUWcpbbWp5Jeb4ZyihcuRQGNPcJp6ykCWIxZMUaqvwP+JDb9Ip/ngVbXczsqweLAuZimoUC37FF8COJ5Cr6/FkU7S1VKPZ93BXx+mVHPKNf2KVu4gNjfQvy+AKVJnQetiV1JLmKQnhat59e7FzJvn5GaKdRyFzG2fpbVLTVTjCh1ypkZsTyKEIrrVNSYg1KyELueT3Thfu3EB/pgt3M4F989d/HuJrxwmPgDeAYWg4MQl3yyR45FXI5RC2WIhs6K6sCvfz4uWvKOvqR8pkcBbvYAEoFXjKDiP9HuHStmB13UFO5gl2HsW+fgGlWPikcWnJUtX7pYmsunjR+GOhO/rROdKnhvjtpzE+1S5jm2mSPQlWq1xGbmVoe/8MpNbYmJuZSpr3rjeAkB+amk27TnYw8e3Z+4qhUv3FJfy76rDtIpJu8IraznHRQdOpC0g+iJ//OGWtxT5om1hN72xh4PFW2aj4MNTyZLfUeYx8OESgMoq34JBZmMW5Mkpu5fb3bsYc3NM6t7OFf5nuqzNq9NqDlvAMirzVZhTzAUvzWiWfd0bDPW9Z5kTL+PzmgzX+DWN5abKzgxf8AAAAAElFTkSuQmCC","parentGuid":"OkJM3EcjKoh2","title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 277:[1,119,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"T16svDtFZIQ4","parentGuid":"OkJM3EcjKoh2","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0,"lastModified":"2023-06-02T01:52:51.000Z"}}] >> 31:[0,120,"Marionette:GetContext"] << 31:[1,120,null,{"value":"chrome"}] >> 51:[0,121,"Marionette:SetContext",{"value":"content"}] @@ -2226,7 +2256,7 @@ << 32:[1,122,null,{"value":"content"}] >> 50:[0,123,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,123,null,{"value":null}] ->> 2276:[0,124,"WebDriver:ExecuteScript",{"args":["3dl6BOTY7rjz"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,124,"WebDriver:ExecuteScript",{"args":["7nowYAfz0Ard"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,124,null,{"value":null}] >> 31:[0,125,"Marionette:GetContext"] << 31:[1,125,null,{"value":"chrome"}] @@ -2236,8 +2266,8 @@ << 32:[1,127,null,{"value":"content"}] >> 50:[0,128,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,128,null,{"value":null}] ->> 4160:[0,129,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"3dl6BOTY7rjz","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 373:[1,129,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"3dl6BOTY7rjz","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":2,"lastModified":"1970-01-20T12:13:31.000Z"}}] +>> 4160:[0,129,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"7nowYAfz0Ard","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 373:[1,129,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"7nowYAfz0Ard","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":2,"lastModified":"1970-01-20T12:13:31.000Z"}}] >> 31:[0,130,"Marionette:GetContext"] << 31:[1,130,null,{"value":"chrome"}] >> 51:[0,131,"Marionette:SetContext",{"value":"content"}] @@ -2246,7 +2276,7 @@ << 32:[1,132,null,{"value":"content"}] >> 50:[0,133,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,133,null,{"value":null}] ->> 2276:[0,134,"WebDriver:ExecuteScript",{"args":["f7QgorFpRZbE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,134,"WebDriver:ExecuteScript",{"args":["87hKoatjsF1d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,134,null,{"value":null}] >> 31:[0,135,"Marionette:GetContext"] << 31:[1,135,null,{"value":"chrome"}] @@ -2256,20 +2286,20 @@ << 32:[1,137,null,{"value":"content"}] >> 50:[0,138,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,138,null,{"value":null}] ->> 3015:[0,139,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"f7QgorFpRZbE","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 247:[1,139,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"f7QgorFpRZbE","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":3,"lastModified":"2023-06-10T02:28:01.000Z"}}] +>> 3015:[0,139,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"87hKoatjsF1d","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 247:[1,139,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"87hKoatjsF1d","parentGuid":"menu________","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":3,"lastModified":"2023-06-10T02:28:01.000Z"}}] >> 31:[0,140,"Marionette:GetContext"] << 31:[1,140,null,{"value":"chrome"}] >> 51:[0,141,"Marionette:SetContext",{"value":"content"}] << 27:[1,141,null,{"value":null}] >> 73:[0,142,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 95:[1,142,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] ->> 121:[0,143,"Addon:Install",{"path":"/tmp/firefox_marionette_local_QU23W6b_O63/extension/stealth-0.0.1.xpi","temporary":true}] -<< 81:[1,143,null,{"value":"5ed85f114ef03efb937e87252200789d9716e23e@temporary-addon"}] +>> 121:[0,143,"Addon:Install",{"path":"/tmp/firefox_marionette_local_srTWsuk1hE1/extension/stealth-0.0.1.xpi","temporary":true}] +<< 81:[1,143,null,{"value":"5065980be5da2121e869f9ee675d12a4875f4731@temporary-addon"}] >> 1173:[0,144,"WebDriver:ExecuteScript",{"script":"{ if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loading Firefox::Marionette::Extension::Stealth\"); } let navProto = Object.getPrototypeOf(window.navigator); let winProto = Object.getPrototypeOf(window); let fm_def_2 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return false } else { throw TypeError(decodeURIComponent(\\x27%27get webdriver%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_2.toString = function fm_def() { return \"function webdriver() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(navProto, \"webdriver\", {get: fm_def_2, enumerable: false, configurable: true}); console.clear = function() { console.log(\"Firefox::Marionette::Extension::Stealth blocked an attempt at clearing the console...\") }; console.clear.toString = function clear_def() { return \"function clear() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; let getUserMedia = navProto.mozGetUserMedia; if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loaded Firefox::Marionette::Extension::Stealth\"); } } "}] << 27:[1,144,null,{"value":null}] >> 181:[0,145,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 68:[1,145,null,{"value":"MxQtafTIyUJSKkgowfwWqUlu0cenVQ_4YEJgGwvpJX0"}] +<< 68:[1,145,null,{"value":"0pab_ZBazaLUbBRzvZ8Tc9irTkB1hnxM_FybvBMa1h8"}] >> 31:[0,146,"Marionette:GetContext"] << 32:[1,146,null,{"value":"content"}] >> 50:[0,147,"Marionette:SetContext",{"value":"chrome"}] @@ -2368,13 +2398,13 @@ >> 50:[0,193,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,193,null,{"value":null}] >> 839:[0,194,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 334:[1,194,null,{"value":[{"guid":"oiZeMkzFq1GN","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"diJaqmLq7xeQ","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 334:[1,194,null,{"value":[{"guid":"8zftg0Eu-3I2","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"mW7HSW2of92t","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,195,"Marionette:GetContext"] << 31:[1,195,null,{"value":"chrome"}] >> 50:[0,196,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,196,null,{"value":null}] ->> 2276:[0,197,"WebDriver:ExecuteScript",{"args":["oiZeMkzFq1GN"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 1420:[1,197,null,{"value":{"guid":"oiZeMkzFq1GN","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"diJaqmLq7xeQ","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC"}}] +>> 2276:[0,197,"WebDriver:ExecuteScript",{"args":["8zftg0Eu-3I2"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 1420:[1,197,null,{"value":{"guid":"8zftg0Eu-3I2","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"mW7HSW2of92t","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACuElEQVQ4jW2Tz2tcVRTHP+fc915nJiEa6UqkmUnptkwoQp2UWKGF6iq4EEFw40ZcuBKRLuoUKYLQP6DgtpsK6rIFEUogiQxMaghuLDo4LhKCSROTycx9997johkYod/VWXzPj+/3nCNt0Dakx3MXG4WxZJrttHrdhwBt0C/BBAxgpd68qmiDGDqL/c0tQARgtbHwkRP9tqKKAINQru1lRzfeefr0EMBAfqlf+r6a6TJAMKNM8dblPze+ksdzFxsVl/8hCNGSB9JsVlSejUb3Lv+18THA+vzCF7PuzNd7wY9Ou+Y15+TYl1e0MJYqqkRLXkQKsPzfGDDVN9ugAClxfWABMCcihUEJgHJNTbMdAYBklqIgZaaCEPfbkABMZNchgJSYJbDgUBTd1lav+3AQyrXZrKhk4twZ5yoZSoJvGCOkuz4ZNeeqTlRfyoraQfS9wfHwvgN49+z0d+LdKwmZjin8Pkrx01bvyY9t0E9A3z7c/vvD6bM/R5W6RfNDyp8o7f2l7a1/GOscr+1FsU3ED8D9j2MgvACTxMkCkzCQTMDaoDfmFz5PiesmsktIdxf7TzrjRIG0Pt+8EJPeVGVOkq0fnMQ7srN5LADr9Us/zOb58sACGcIoGcPSL13pb648v4PmBTP5dcYV1ZFFapqxX/pOv9d9Q1fqzavVTJf3gh8NYwxHMZzkKrg8uz0eNSa9OeOK6mH0A59i2A+jk5k8f/21cwsfqKKNU56IaAZS+GRI5NWxDyJWH1lEoABxIC5aQpXzSgydYIZAbmYebDTlHObixnsQAdRYq2lGhNKgFEwUJSGrutjf3CpTvFVzTqacK2ZcUXsWfM88n40lHJzEO/ul77ycFdUp54ppV+RH3t9r9bqP5LnJ2Nq55iLKNUW3B8fD+2/t/nY0+c4PwJ1qPp+Q1Vav+wjgPzwESZU81nd+AAAAAElFTkSuQmCC"}}] >> 31:[0,198,"Marionette:GetContext"] << 31:[1,198,null,{"value":"chrome"}] >> 50:[0,199,"Marionette:SetContext",{"value":"chrome"}] @@ -2388,13 +2418,13 @@ >> 50:[0,203,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,203,null,{"value":null}] >> 817:[0,204,"WebDriver:ExecuteScript",{"args":[{"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 249:[1,204,null,{"value":[{"guid":"f7QgorFpRZbE","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"menu________","url":"https://perlmonks.org/"}]}] +<< 249:[1,204,null,{"value":[{"guid":"87hKoatjsF1d","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"menu________","url":"https://perlmonks.org/"}]}] >> 31:[0,205,"Marionette:GetContext"] << 31:[1,205,null,{"value":"chrome"}] >> 50:[0,206,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,206,null,{"value":null}] ->> 2276:[0,207,"WebDriver:ExecuteScript",{"args":["f7QgorFpRZbE"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 225:[1,207,null,{"value":{"guid":"f7QgorFpRZbE","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364081,"parentGuid":"menu________","url":"https://perlmonks.org/","tags":[]}}] +>> 2276:[0,207,"WebDriver:ExecuteScript",{"args":["87hKoatjsF1d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 225:[1,207,null,{"value":{"guid":"87hKoatjsF1d","index":3,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364081,"parentGuid":"menu________","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,208,"Marionette:GetContext"] << 31:[1,208,null,{"value":"chrome"}] >> 50:[0,209,"Marionette:SetContext",{"value":"chrome"}] @@ -2403,41 +2433,41 @@ << 31:[1,210,null,{"value":"chrome"}] >> 51:[0,211,"Marionette:SetContext",{"value":"content"}] << 27:[1,211,null,{"value":null}] ->> 170:[0,212,"WebDriver:Navigate",{"sessionId":"1af9eaf1-f725-454c-8cd9-e2c0bd80ba78","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/aria.html"}] +>> 170:[0,212,"WebDriver:Navigate",{"sessionId":"214da267-459e-4528-9371-fc3054338a2f","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/aria.html"}] << 27:[1,212,null,{"value":null}] >> 62:[0,213,"WebDriver:FindElement",{"using":"id","value":"close"}] -<< 101:[1,213,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0650ad7c-f214-4c3d-ad8f-f7fa054a9d71"}}] ->> 82:[0,214,"WebDriver:GetComputedLabel",{"id":"0650ad7c-f214-4c3d-ad8f-f7fa054a9d71"}] -[Parent 3549440, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 +<< 101:[1,213,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"901353ee-3bc4-4a31-afd7-94dfe14f846f"}}] +>> 82:[0,214,"WebDriver:GetComputedLabel",{"id":"901353ee-3bc4-4a31-afd7-94dfe14f846f"}] +[Parent 25193, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 -(firefox-esr:3549440): GLib-GObject-CRITICAL **: 11:11:37.036: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed -[Parent 3549440, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 +(firefox-esr:25193): GLib-GObject-CRITICAL **: 17:36:58.407: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed +[Parent 25193, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 -(firefox-esr:3549440): GLib-GObject-CRITICAL **: 11:11:37.036: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed +(firefox-esr:25193): GLib-GObject-CRITICAL **: 17:36:58.407: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 30:[1,214,null,{"value":"Close"}] ->> 82:[0,215,"WebDriver:GetComputedLabel",{"id":"0650ad7c-f214-4c3d-ad8f-f7fa054a9d71"}] +>> 82:[0,215,"WebDriver:GetComputedLabel",{"id":"901353ee-3bc4-4a31-afd7-94dfe14f846f"}] << 30:[1,215,null,{"value":"Close"}] >> 62:[0,216,"WebDriver:FindElement",{"using":"id","value":"close"}] -<< 101:[1,216,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0650ad7c-f214-4c3d-ad8f-f7fa054a9d71"}}] ->> 82:[0,217,"WebDriver:GetComputedLabel",{"id":"0650ad7c-f214-4c3d-ad8f-f7fa054a9d71"}] +<< 101:[1,216,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"901353ee-3bc4-4a31-afd7-94dfe14f846f"}}] +>> 82:[0,217,"WebDriver:GetComputedLabel",{"id":"901353ee-3bc4-4a31-afd7-94dfe14f846f"}] << 30:[1,217,null,{"value":"Close"}] >> 62:[0,218,"WebDriver:FindElement",{"using":"id","value":"close"}] -<< 101:[1,218,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0650ad7c-f214-4c3d-ad8f-f7fa054a9d71"}}] ->> 82:[0,219,"WebDriver:GetComputedLabel",{"id":"0650ad7c-f214-4c3d-ad8f-f7fa054a9d71"}] +<< 101:[1,218,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"901353ee-3bc4-4a31-afd7-94dfe14f846f"}}] +>> 82:[0,219,"WebDriver:GetComputedLabel",{"id":"901353ee-3bc4-4a31-afd7-94dfe14f846f"}] << 30:[1,219,null,{"value":"Close"}] >> 61:[0,220,"WebDriver:FindElement",{"using":"id","value":"save"}] -<< 101:[1,220,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"a3611409-2278-48b4-8c76-b25854a16c1e"}}] ->> 81:[0,221,"WebDriver:GetComputedRole",{"id":"a3611409-2278-48b4-8c76-b25854a16c1e"}] +<< 101:[1,220,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"839748f5-6cd0-46d0-9075-42abdeff94b9"}}] +>> 81:[0,221,"WebDriver:GetComputedRole",{"id":"839748f5-6cd0-46d0-9075-42abdeff94b9"}] << 31:[1,221,null,{"value":"button"}] ->> 81:[0,222,"WebDriver:GetComputedRole",{"id":"a3611409-2278-48b4-8c76-b25854a16c1e"}] +>> 81:[0,222,"WebDriver:GetComputedRole",{"id":"839748f5-6cd0-46d0-9075-42abdeff94b9"}] << 31:[1,222,null,{"value":"button"}] >> 61:[0,223,"WebDriver:FindElement",{"using":"id","value":"save"}] -<< 101:[1,223,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"a3611409-2278-48b4-8c76-b25854a16c1e"}}] ->> 81:[0,224,"WebDriver:GetComputedRole",{"id":"a3611409-2278-48b4-8c76-b25854a16c1e"}] +<< 101:[1,223,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"839748f5-6cd0-46d0-9075-42abdeff94b9"}}] +>> 81:[0,224,"WebDriver:GetComputedRole",{"id":"839748f5-6cd0-46d0-9075-42abdeff94b9"}] << 31:[1,224,null,{"value":"button"}] >> 61:[0,225,"WebDriver:FindElement",{"using":"id","value":"save"}] -<< 101:[1,225,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"a3611409-2278-48b4-8c76-b25854a16c1e"}}] ->> 81:[0,226,"WebDriver:GetComputedRole",{"id":"a3611409-2278-48b4-8c76-b25854a16c1e"}] +<< 101:[1,225,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"839748f5-6cd0-46d0-9075-42abdeff94b9"}}] +>> 81:[0,226,"WebDriver:GetComputedRole",{"id":"839748f5-6cd0-46d0-9075-42abdeff94b9"}] << 31:[1,226,null,{"value":"button"}] >> 73:[0,227,"WebDriver:ExecuteScript",{"script":"return navigator.languages"}] << 37:[1,227,null,{"value":["en-US","en"]}] @@ -2579,14 +2609,14 @@ << 27:[1,295,null,{"value":null}] >> 5951:[0,296,"WebDriver:ExecuteScript",{"script":"{ if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loading Firefox::Marionette::Extension::Stealth\"); } let navProto = Object.getPrototypeOf(window.navigator); let winProto = Object.getPrototypeOf(window); let fm_def_2 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return false } else { throw TypeError(decodeURIComponent(\\x27%27get webdriver%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_2.toString = function fm_def() { return \"function webdriver() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(navProto, \"webdriver\", {get: fm_def_2, enumerable: false, configurable: true}); console.clear = function() { console.log(\"Firefox::Marionette::Extension::Stealth blocked an attempt at clearing the console...\") }; console.clear.toString = function clear_def() { return \"function clear() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; let getUserMedia = navProto.mozGetUserMedia; let fm_def_3 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get appVersion%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_3.toString = function fm_def() { return \"function appVersion() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); let fm_def_4 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get oscpu%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_4.toString = function fm_def() { return \"function oscpu() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); let fm_def_5 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get platform%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_5.toString = function fm_def() { return \"function platform() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); let fm_def_6 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get product%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_6.toString = function fm_def() { return \"function product() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); let fm_def_7 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get productSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_7.toString = function fm_def() { return \"function productSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); let fm_def_8 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Firefox%3A%3AMarionette%20v1.68%20test%20suite\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get userAgent%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_8.toString = function fm_def() { return \"function userAgent() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); let fm_def_9 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendor%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_9.toString = function fm_def() { return \"function vendor() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); let fm_def_10 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendorSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_10.toString = function fm_def() { return \"function vendorSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loaded Firefox::Marionette::Extension::Stealth\"); } } "}] << 27:[1,296,null,{"value":null}] ->> 91:[0,297,"Addon:Uninstall",{"id":"5ed85f114ef03efb937e87252200789d9716e23e@temporary-addon"}] +>> 91:[0,297,"Addon:Uninstall",{"id":"5065980be5da2121e869f9ee675d12a4875f4731@temporary-addon"}] << 27:[1,297,null,{"value":null}] ->> 121:[0,298,"Addon:Install",{"path":"/tmp/firefox_marionette_local_QU23W6b_O63/extension/stealth-0.0.1.xpi","temporary":true}] -<< 81:[1,298,null,{"value":"5ed85f114ef03efb937e87252200789d9716e23e@temporary-addon"}] ->> 174:[0,299,"WebDriver:Navigate",{"sessionId":"1af9eaf1-f725-454c-8cd9-e2c0bd80ba78","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] -[Parent 3549440, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 +>> 121:[0,298,"Addon:Install",{"path":"/tmp/firefox_marionette_local_srTWsuk1hE1/extension/stealth-0.0.1.xpi","temporary":true}] +<< 81:[1,298,null,{"value":"5065980be5da2121e869f9ee675d12a4875f4731@temporary-addon"}] +>> 174:[0,299,"WebDriver:Navigate",{"sessionId":"214da267-459e-4528-9371-fc3054338a2f","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] +[Parent 25193, Main Thread] WARNING: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 -(firefox-esr:3549440): GLib-GObject-CRITICAL **: 11:11:37.708: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed +(firefox-esr:25193): GLib-GObject-CRITICAL **: 17:36:58.886: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 27:[1,299,null,{"value":null}] >> 73:[0,300,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 61:[1,300,null,{"value":"Firefox::Marionette v1.68 test suite"}] @@ -2672,113 +2702,113 @@ << 27:[1,340,null,{"value":null}] >> 7061:[0,341,"WebDriver:ExecuteScript",{"script":"{ if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loading Firefox::Marionette::Extension::Stealth\"); } let navProto = Object.getPrototypeOf(window.navigator); let winProto = Object.getPrototypeOf(window); let fm_def_2 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return false } else { throw TypeError(decodeURIComponent(\\x27%27get webdriver%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_2.toString = function fm_def() { return \"function webdriver() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(navProto, \"webdriver\", {get: fm_def_2, enumerable: false, configurable: true}); console.clear = function() { console.log(\"Firefox::Marionette::Extension::Stealth blocked an attempt at clearing the console...\") }; console.clear.toString = function clear_def() { return \"function clear() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; let getUserMedia = navProto.mozGetUserMedia; delete navigator.webkitPersistentStorage; delete navigator.webkitTemporaryStorage; delete window.webkitResolveLocalFileSystemURL; delete window.webkitMediaStream; delete window.webkitSpeechGrammar; delete window.ApplePayError; delete window.CSSPrimitiveValue; delete window.Counter; delete navigator.getStorageUpdates; delete window.WebKitMediaKeys; if (\"onmozfullscreenchange\" in window) { } else { Object.defineProperty(window, \"onmozfullscreenchange\", {value: undefined, writable: true, configurable: true}); } if (\"mozInnerScreenX\" in window) { } else { Object.defineProperty(window, \"mozInnerScreenX\", {value: 0, writable: true, configurable: true}); } if (\"CSSMozDocumentRule\" in window) { } else { Object.defineProperty(window, \"CSSMozDocumentRule\", {value: undefined, writable: true, configurable: true}); } if (\"CanvasCaptureMediaStream\" in window) { } else { Object.defineProperty(window, \"CanvasCaptureMediaStream\", {value: undefined, writable: true, configurable: true}); } let fm_def_3 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x275.0%20%28X11%29\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get appVersion%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_3.toString = function fm_def() { return \"function appVersion() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"appVersion\", {get: fm_def_3, enumerable: true, configurable: true}); let fm_def_4 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Linux%20x86_64\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get oscpu%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_4.toString = function fm_def() { return \"function oscpu() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"oscpu\", {get: fm_def_4, enumerable: true, configurable: true}); let fm_def_5 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Linux%20x86_64\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get platform%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_5.toString = function fm_def() { return \"function platform() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"platform\", {get: fm_def_5, enumerable: true, configurable: true}); let fm_def_6 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Gecko\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get product%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_6.toString = function fm_def() { return \"function product() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"product\", {get: fm_def_6, enumerable: true, configurable: true}); let fm_def_7 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x2720100101\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get productSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_7.toString = function fm_def() { return \"function productSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"productSub\", {get: fm_def_7, enumerable: true, configurable: true}); let fm_def_8 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27Mozilla%2F5.0%20%28X11%3B%20Linux%20x86_64%3B%20rv%3A140.0%29%20Gecko%2F20100101%20Firefox%2F140.0\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get userAgent%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_8.toString = function fm_def() { return \"function userAgent() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"userAgent\", {get: fm_def_8, enumerable: true, configurable: true}); let fm_def_9 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendor%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_9.toString = function fm_def() { return \"function vendor() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendor\", {get: fm_def_9, enumerable: true, configurable: true}); let fm_def_10 = new Function(\"if (Navigator.prototype.isPrototypeOf(this)) { return decodeURIComponent(\\x27\\x27) } else { throw TypeError(decodeURIComponent(\\x27%27get vendorSub%27 called on an object that does not implement interface Navigator.\\x27)); } \"); fm_def_10.toString = function fm_def() { return \"function vendorSub() {\\n\\x20\\x20\\x20\\x20[native code]\\n}\" }; Object.defineProperty(window.Navigator, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); Object.defineProperty(navProto, \"vendorSub\", {get: fm_def_10, enumerable: true, configurable: true}); if ((\"console\" in window) && (\"log\" in window.console)) { console.log(\"Loaded Firefox::Marionette::Extension::Stealth\"); } } "}] << 27:[1,341,null,{"value":null}] ->> 91:[0,342,"Addon:Uninstall",{"id":"5ed85f114ef03efb937e87252200789d9716e23e@temporary-addon"}] +>> 91:[0,342,"Addon:Uninstall",{"id":"5065980be5da2121e869f9ee675d12a4875f4731@temporary-addon"}] << 27:[1,342,null,{"value":null}] ->> 121:[0,343,"Addon:Install",{"path":"/tmp/firefox_marionette_local_QU23W6b_O63/extension/stealth-0.0.1.xpi","temporary":true}] -<< 81:[1,343,null,{"value":"5ed85f114ef03efb937e87252200789d9716e23e@temporary-addon"}] +>> 121:[0,343,"Addon:Install",{"path":"/tmp/firefox_marionette_local_srTWsuk1hE1/extension/stealth-0.0.1.xpi","temporary":true}] +<< 81:[1,343,null,{"value":"5065980be5da2121e869f9ee675d12a4875f4731@temporary-addon"}] >> 68:[0,344,"WebDriver:FindElement",{"using":"class name","value":"add"}] -<< 101:[1,344,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"843bc8dc-d650-4cc9-9915-4e3bc4f7fb86"}}] ->> 156:[0,345,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"843bc8dc-d650-4cc9-9915-4e3bc4f7fb86"}],"script":"arguments[0].remove()"}] +<< 101:[1,344,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c25503cf-865a-45ec-9b93-e51e076fa155"}}] +>> 156:[0,345,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c25503cf-865a-45ec-9b93-e51e076fa155"}],"script":"arguments[0].remove()"}] << 27:[1,345,null,{"value":null}] >> 68:[0,346,"WebDriver:FindElement",{"using":"class name","value":"add"}] << 390:[1,346,{"error":"no such element","message":"Unable to locate element: add","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nNoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5\ndom.find/<@chrome://remote/content/shared/DOM.sys.mjs:136:16\n"},null] >> 71:[0,347,"WebDriver:FindElement",{"using":"class name","value":"update"}] -<< 101:[1,347,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"251b6509-c142-422e-aeea-401ea98248f0"}}] ->> 156:[0,348,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"251b6509-c142-422e-aeea-401ea98248f0"}],"script":"arguments[0].remove()"}] +<< 101:[1,347,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c773c0ad-3c6c-41f9-bb70-1720809d4669"}}] +>> 156:[0,348,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c773c0ad-3c6c-41f9-bb70-1720809d4669"}],"script":"arguments[0].remove()"}] << 27:[1,348,null,{"value":null}] >> 71:[0,349,"WebDriver:FindElement",{"using":"class name","value":"update"}] << 393:[1,349,{"error":"no such element","message":"Unable to locate element: update","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nNoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5\ndom.find/<@chrome://remote/content/shared/DOM.sys.mjs:136:16\n"},null] ->> 174:[0,350,"WebDriver:Navigate",{"sessionId":"1af9eaf1-f725-454c-8cd9-e2c0bd80ba78","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] +>> 174:[0,350,"WebDriver:Navigate",{"sessionId":"214da267-459e-4528-9371-fc3054338a2f","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] << 27:[1,350,null,{"value":null}] >> 73:[0,351,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] << 95:[1,351,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] >> 68:[0,352,"WebDriver:FindElement",{"using":"class name","value":"add"}] -<< 101:[1,352,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"ef965b18-c3d5-4cc9-8f05-a9db228885db"}}] ->> 78:[0,353,"WebDriver:ElementClick",{"id":"ef965b18-c3d5-4cc9-8f05-a9db228885db"}] +<< 101:[1,352,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c5c43e7d-fa81-4420-b257-abc1a15fd4eb"}}] +>> 78:[0,353,"WebDriver:ElementClick",{"id":"c5c43e7d-fa81-4420-b257-abc1a15fd4eb"}] << 27:[1,353,null,{"value":null}] >> 67:[0,354,"WebDriver:FindElement",{"using":"tag name","value":"span"}] -<< 101:[1,354,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}}] ->> 166:[0,355,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}],"script":"return arguments[0].children[0]"}] -<< 101:[1,355,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"ef965b18-c3d5-4cc9-8f05-a9db228885db"}}] ->> 83:[0,356,"WebDriver:GetElementTagName",{"id":"ef965b18-c3d5-4cc9-8f05-a9db228885db"}] +<< 101:[1,354,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}}] +>> 166:[0,355,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}],"script":"return arguments[0].children[0]"}] +<< 101:[1,355,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c5c43e7d-fa81-4420-b257-abc1a15fd4eb"}}] +>> 83:[0,356,"WebDriver:GetElementTagName",{"id":"c5c43e7d-fa81-4420-b257-abc1a15fd4eb"}] << 31:[1,356,null,{"value":"button"}] >> 76:[0,357,"WebDriver:FindElement",{"using":"tag name","value":"custom-square"}] -<< 101:[1,357,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"dd21bfc3-34b0-4478-b359-2e99e5222723"}}] ->> 177:[0,358,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"dd21bfc3-34b0-4478-b359-2e99e5222723"}],"script":"return arguments[0].shadowRoot.children[0]"}] -<< 101:[1,358,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"}}] ->> 201:[0,359,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}],"script":"if (arguments[0].shadowRoot) { return true } else { return false }"}] +<< 101:[1,357,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"893b142a-1336-411f-b2e8-df9f83a32cd6"}}] +>> 177:[0,358,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"893b142a-1336-411f-b2e8-df9f83a32cd6"}],"script":"return arguments[0].shadowRoot.children[0]"}] +<< 101:[1,358,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"9a198459-350d-4ba5-9100-2b5975b6af0d"}}] +>> 201:[0,359,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}],"script":"if (arguments[0].shadowRoot) { return true } else { return false }"}] << 28:[1,359,null,{"value":false}] ->> 201:[0,360,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"dd21bfc3-34b0-4478-b359-2e99e5222723"}],"script":"if (arguments[0].shadowRoot) { return true } else { return false }"}] +>> 201:[0,360,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"893b142a-1336-411f-b2e8-df9f83a32cd6"}],"script":"if (arguments[0].shadowRoot) { return true } else { return false }"}] << 27:[1,360,null,{"value":true}] ->> 83:[0,361,"WebDriver:GetElementTagName",{"id":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"}] +>> 83:[0,361,"WebDriver:GetElementTagName",{"id":"9a198459-350d-4ba5-9100-2b5975b6af0d"}] << 30:[1,361,null,{"value":"style"}] ->> 79:[0,362,"WebDriver:GetShadowRoot",{"id":"dd21bfc3-34b0-4478-b359-2e99e5222723"}] -<< 100:[1,362,null,{"value":{"shadow-6066-11e4-a52e-4f735466cecf":"0623bbd7-4c89-4afc-b10d-5206951db32c"}}] ->> 162:[0,363,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"0623bbd7-4c89-4afc-b10d-5206951db32c"}],"script":"return arguments[0].children"}] -<< 498:[1,363,null,{"value":[{"element-6066-11e4-a52e-4f735466cecf":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"},{"element-6066-11e4-a52e-4f735466cecf":"096a72e5-ef87-4194-8308-68f9bbd4bdea"},{"element-6066-11e4-a52e-4f735466cecf":"d1fe0eb6-663f-41bf-bb54-746a4e828373"},{"element-6066-11e4-a52e-4f735466cecf":"5c4463dc-7db7-46ff-a1b4-86648f4ab320"},{"element-6066-11e4-a52e-4f735466cecf":"6d3c0f04-8864-4e25-b973-43b32145ed19"},{"element-6066-11e4-a52e-4f735466cecf":"f70ef958-735e-4bb2-b72a-487e68128207"}]}] ->> 83:[0,364,"WebDriver:GetElementTagName",{"id":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"}] +>> 79:[0,362,"WebDriver:GetShadowRoot",{"id":"893b142a-1336-411f-b2e8-df9f83a32cd6"}] +<< 100:[1,362,null,{"value":{"shadow-6066-11e4-a52e-4f735466cecf":"e58bbc13-d201-4228-ab54-6da7cb008dea"}}] +>> 162:[0,363,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"e58bbc13-d201-4228-ab54-6da7cb008dea"}],"script":"return arguments[0].children"}] +<< 498:[1,363,null,{"value":[{"element-6066-11e4-a52e-4f735466cecf":"9a198459-350d-4ba5-9100-2b5975b6af0d"},{"element-6066-11e4-a52e-4f735466cecf":"563fb678-4571-44a9-9703-4f644728cc8d"},{"element-6066-11e4-a52e-4f735466cecf":"c81aae56-07d6-45a4-be54-5e6db96f5c27"},{"element-6066-11e4-a52e-4f735466cecf":"5701d3c3-4045-46ed-8149-98cf43f865e4"},{"element-6066-11e4-a52e-4f735466cecf":"d7535e14-c5e0-4c3b-b8f5-3926cdb67d72"},{"element-6066-11e4-a52e-4f735466cecf":"7d99fe59-c325-48f9-8e4e-5beec85d7ead"}]}] +>> 83:[0,364,"WebDriver:GetElementTagName",{"id":"9a198459-350d-4ba5-9100-2b5975b6af0d"}] << 30:[1,364,null,{"value":"style"}] ->> 83:[0,365,"WebDriver:GetElementTagName",{"id":"096a72e5-ef87-4194-8308-68f9bbd4bdea"}] +>> 83:[0,365,"WebDriver:GetElementTagName",{"id":"563fb678-4571-44a9-9703-4f644728cc8d"}] << 28:[1,365,null,{"value":"div"}] ->> 165:[0,366,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"0623bbd7-4c89-4afc-b10d-5206951db32c"}],"script":"return arguments[0].children[0]"}] -<< 101:[1,366,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"}}] ->> 83:[0,367,"WebDriver:GetElementTagName",{"id":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"}] +>> 165:[0,366,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"e58bbc13-d201-4228-ab54-6da7cb008dea"}],"script":"return arguments[0].children[0]"}] +<< 101:[1,366,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"9a198459-350d-4ba5-9100-2b5975b6af0d"}}] +>> 83:[0,367,"WebDriver:GetElementTagName",{"id":"9a198459-350d-4ba5-9100-2b5975b6af0d"}] << 30:[1,367,null,{"value":"style"}] ->> 172:[0,368,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"0623bbd7-4c89-4afc-b10d-5206951db32c"}],"script":"return [ 2, arguments[0].children[0] ]"}] -<< 105:[1,368,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"}]}] ->> 83:[0,369,"WebDriver:GetElementTagName",{"id":"21f9bd10-2b80-48e0-95ae-8f91e0ab28dc"}] +>> 172:[0,368,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"e58bbc13-d201-4228-ab54-6da7cb008dea"}],"script":"return [ 2, arguments[0].children[0] ]"}] +<< 105:[1,368,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"9a198459-350d-4ba5-9100-2b5975b6af0d"}]}] +>> 83:[0,369,"WebDriver:GetElementTagName",{"id":"9a198459-350d-4ba5-9100-2b5975b6af0d"}] << 30:[1,369,null,{"value":"style"}] ->> 132:[0,370,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"id","value":"outer-div"}] -<< 101:[1,370,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"096a72e5-ef87-4194-8308-68f9bbd4bdea"}}] ->> 100:[0,371,"WebDriver:GetElementAttribute",{"id":"096a72e5-ef87-4194-8308-68f9bbd4bdea","name":"title"}] +>> 132:[0,370,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"id","value":"outer-div"}] +<< 101:[1,370,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"563fb678-4571-44a9-9703-4f644728cc8d"}}] +>> 100:[0,371,"WebDriver:GetElementAttribute",{"id":"563fb678-4571-44a9-9703-4f644728cc8d","name":"title"}] << 45:[1,371,null,{"value":"In the Shadow Realms"}] ->> 134:[0,372,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"tag name","value":"span"}] +>> 134:[0,372,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"tag name","value":"span"}] << 463:[1,372,{"error":"invalid selector","message":"Given tag name expression \"span\" is invalid: TypeError: startNode.getElementsByTagName is not a function","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] ->> 138:[0,373,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"css selector","value":"span"}] -<< 172:[1,373,null,[{"element-6066-11e4-a52e-4f735466cecf":"5c4463dc-7db7-46ff-a1b4-86648f4ab320"},{"element-6066-11e4-a52e-4f735466cecf":"6d3c0f04-8864-4e25-b973-43b32145ed19"}]] ->> 83:[0,374,"WebDriver:GetElementTagName",{"id":"5c4463dc-7db7-46ff-a1b4-86648f4ab320"}] +>> 138:[0,373,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"css selector","value":"span"}] +<< 172:[1,373,null,[{"element-6066-11e4-a52e-4f735466cecf":"5701d3c3-4045-46ed-8149-98cf43f865e4"},{"element-6066-11e4-a52e-4f735466cecf":"d7535e14-c5e0-4c3b-b8f5-3926cdb67d72"}]] +>> 83:[0,374,"WebDriver:GetElementTagName",{"id":"5701d3c3-4045-46ed-8149-98cf43f865e4"}] << 29:[1,374,null,{"value":"span"}] ->> 83:[0,375,"WebDriver:GetElementTagName",{"id":"6d3c0f04-8864-4e25-b973-43b32145ed19"}] +>> 83:[0,375,"WebDriver:GetElementTagName",{"id":"d7535e14-c5e0-4c3b-b8f5-3926cdb67d72"}] << 29:[1,375,null,{"value":"span"}] ->> 135:[0,376,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"tag name","value":"notag"}] +>> 135:[0,376,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"tag name","value":"notag"}] << 464:[1,376,{"error":"invalid selector","message":"Given tag name expression \"notag\" is invalid: TypeError: startNode.getElementsByTagName is not a function","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] ->> 139:[0,377,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"css selector","value":"notag"}] +>> 139:[0,377,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"css selector","value":"notag"}] << 15:[1,377,null,[]] ->> 134:[0,378,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"name","value":"meta-name"}] +>> 134:[0,378,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"name","value":"meta-name"}] << 450:[1,378,{"error":"invalid selector","message":"Given name expression \"meta-name\" is invalid: NotSupportedError: Operation is not supported","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] ->> 152:[0,379,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"css selector","value":"[name=\"meta-name\""}] -<< 101:[1,379,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"d1fe0eb6-663f-41bf-bb54-746a4e828373"}}] ->> 100:[0,380,"WebDriver:GetElementAttribute",{"id":"d1fe0eb6-663f-41bf-bb54-746a4e828373","name":"title"}] +>> 152:[0,379,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"css selector","value":"[name=\"meta-name\""}] +<< 101:[1,379,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"c81aae56-07d6-45a4-be54-5e6db96f5c27"}}] +>> 100:[0,380,"WebDriver:GetElementAttribute",{"id":"c81aae56-07d6-45a4-be54-5e6db96f5c27","name":"title"}] << 34:[1,380,null,{"value":"Very META"}] ->> 146:[0,381,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"class name","value":"outer-div-class"}] +>> 146:[0,381,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"class name","value":"outer-div-class"}] << 478:[1,381,{"error":"invalid selector","message":"Given class name expression \"outer-div-class\" is invalid: TypeError: startNode.getElementsByClassName is not a function","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nfind_@chrome://remote/content/shared/DOM.sys.mjs:170:11\n"},null] ->> 149:[0,382,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"css selector","value":".outer-div-class"}] -<< 101:[1,382,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"096a72e5-ef87-4194-8308-68f9bbd4bdea"}}] ->> 100:[0,383,"WebDriver:GetElementAttribute",{"id":"096a72e5-ef87-4194-8308-68f9bbd4bdea","name":"title"}] +>> 149:[0,382,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"css selector","value":".outer-div-class"}] +<< 101:[1,382,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"563fb678-4571-44a9-9703-4f644728cc8d"}}] +>> 100:[0,383,"WebDriver:GetElementAttribute",{"id":"563fb678-4571-44a9-9703-4f644728cc8d","name":"title"}] << 45:[1,383,null,{"value":"In the Shadow Realms"}] ->> 138:[0,384,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"link text","value":"MetaCPAN"}] -<< 101:[1,384,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"f70ef958-735e-4bb2-b72a-487e68128207"}}] ->> 99:[0,385,"WebDriver:GetElementAttribute",{"id":"f70ef958-735e-4bb2-b72a-487e68128207","name":"href"}] +>> 138:[0,384,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"link text","value":"MetaCPAN"}] +<< 101:[1,384,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"7d99fe59-c325-48f9-8e4e-5beec85d7ead"}}] +>> 99:[0,385,"WebDriver:GetElementAttribute",{"id":"7d99fe59-c325-48f9-8e4e-5beec85d7ead","name":"href"}] << 45:[1,385,null,{"value":"https://metacpan.org"}] ->> 142:[0,386,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"0623bbd7-4c89-4afc-b10d-5206951db32c","using":"partial link text","value":"Meta"}] -<< 101:[1,386,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"f70ef958-735e-4bb2-b72a-487e68128207"}}] ->> 99:[0,387,"WebDriver:GetElementAttribute",{"id":"f70ef958-735e-4bb2-b72a-487e68128207","name":"href"}] +>> 142:[0,386,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"e58bbc13-d201-4228-ab54-6da7cb008dea","using":"partial link text","value":"Meta"}] +<< 101:[1,386,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"7d99fe59-c325-48f9-8e4e-5beec85d7ead"}}] +>> 99:[0,387,"WebDriver:GetElementAttribute",{"id":"7d99fe59-c325-48f9-8e4e-5beec85d7ead","name":"href"}] << 45:[1,387,null,{"value":"https://metacpan.org"}] ->> 135:[0,388,"WebDriver:FindElement",{"using":{"shadow-6066-11e4-a52e-4f735466cecf":"0623bbd7-4c89-4afc-b10d-5206951db32c"},"value":"//div"}] +>> 135:[0,388,"WebDriver:FindElement",{"using":{"shadow-6066-11e4-a52e-4f735466cecf":"e58bbc13-d201-4228-ab54-6da7cb008dea"},"value":"//div"}] << 782:[1,388,{"error":"invalid selector","message":"Strategy not supported: [object Object]","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nInvalidSelectorError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:452:5\nGeckoDriver.prototype.findElement@chrome://remote/content/marionette/driver.sys.mjs:1740:11\ndespatch@chrome://remote/content/marionette/server.sys.mjs:318:40\nexecute@chrome://remote/content/marionette/server.sys.mjs:289:16\nonPacket/<@chrome://remote/content/marionette/server.sys.mjs:262:20\nonPacket@chrome://remote/content/marionette/server.sys.mjs:263:9\n_onJSONObjectReady/<@chrome://remote/content/marionette/transport.sys.mjs:494:20\n"},null] ->> 147:[0,389,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}],"script":"return [2,1]"}] +>> 147:[0,389,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}],"script":"return [2,1]"}] << 28:[1,389,null,{"value":[2,1]}] ->> 158:[0,390,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}],"script":"return [2,arguments[0]]"}] -<< 105:[1,390,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}]}] ->> 83:[0,391,"WebDriver:GetElementTagName",{"id":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}] +>> 158:[0,390,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}],"script":"return [2,arguments[0]]"}] +<< 105:[1,390,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}]}] +>> 83:[0,391,"WebDriver:GetElementTagName",{"id":"1103f490-b0ab-45de-8f36-e323a7d38a93"}] << 29:[1,391,null,{"value":"span"}] ->> 163:[0,392,"WebDriver:ExecuteScript",{"args":[{"elem":{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}}],"script":"return arguments[0]"}] -<< 110:[1,392,null,{"value":{"elem":{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}}}] ->> 83:[0,393,"WebDriver:GetElementTagName",{"id":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}] +>> 163:[0,392,"WebDriver:ExecuteScript",{"args":[{"elem":{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}}],"script":"return arguments[0]"}] +<< 110:[1,392,null,{"value":{"elem":{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}}}] +>> 83:[0,393,"WebDriver:GetElementTagName",{"id":"1103f490-b0ab-45de-8f36-e323a7d38a93"}] << 29:[1,393,null,{"value":"span"}] ->> 143:[0,394,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}],"script":"return 2"}] +>> 143:[0,394,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}],"script":"return 2"}] << 24:[1,394,null,{"value":2}] ->> 154:[0,395,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"c70a93cf-2ac1-44b1-9453-bc55dfe3685d"}],"script":"return { value: 2 }"}] +>> 154:[0,395,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1103f490-b0ab-45de-8f36-e323a7d38a93"}],"script":"return { value: 2 }"}] << 34:[1,395,null,{"value":{"value":2}}] >> 73:[0,396,"WebDriver:ExecuteScript",{"script":"return navigator.webdriver"}] << 28:[1,396,null,{"value":false}] @@ -3517,22 +3547,22 @@ >> 51:[0,763,"Marionette:SetContext",{"value":"content"}] << 27:[1,763,null,{"value":null}] >> 35:[0,764,"WebDriver:GetCapabilities"] -<< 796:[1,764,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3549440,"moz:profile":"/tmp/firefox_marionette_local_QU23W6b_O63/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}},"proxy":{}}}}] +<< 794:[1,764,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":25193,"moz:profile":"/tmp/firefox_marionette_local_srTWsuk1hE1/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true}},"proxy":{}}}}] # Starting new firefox for testing logins -# Testing has been running for 34 seconds at t/01-marionette.t line 2132 +# Testing has been running for 21 seconds at t/01-marionette.t line 2132 ** firefox --version -** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_RwjOliGy9Ki/profile --no-remote --new-instance -[3550915] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_byOScAm8EiW/profile --no-remote --new-instance +[27375] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 767:[1,1,null,{"sessionId":"7fee587d-6ab0-4ecb-af00-17824807ec4e","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3550915,"moz:profile":"/tmp/firefox_marionette_local_RwjOliGy9Ki/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] +<< 765:[1,1,null,{"sessionId":"b2be0ede-8a3c-42aa-8998-22922873fe78","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":27375,"moz:profile":"/tmp/firefox_marionette_local_byOScAm8EiW/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 29:[0,2,"Marionette:GetContext"] << 30:[1,2,null,{"value":"content"}] >> 48:[0,3,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,3,null,{"value":null}] >> 2274:[0,4,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 138:[1,4,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267502,"lastModified":1760267502,"childCount":5}}] +<< 138:[1,4,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677822,"lastModified":1794677822,"childCount":5}}] >> 29:[0,5,"Marionette:GetContext"] << 29:[1,5,null,{"value":"chrome"}] >> 49:[0,6,"Marionette:SetContext",{"value":"content"}] @@ -3542,7 +3572,7 @@ >> 48:[0,8,"Marionette:SetContext",{"value":"chrome"}] << 25:[1,8,null,{"value":null}] >> 2274:[0,9,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 170:[1,9,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 170:[1,9,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 30:[0,10,"Marionette:GetContext"] << 30:[1,10,null,{"value":"chrome"}] >> 50:[0,11,"Marionette:SetContext",{"value":"content"}] @@ -3692,7 +3722,7 @@ >> 49:[0,83,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,83,null,{"value":null}] >> 2275:[0,84,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,84,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,84,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 30:[0,85,"Marionette:GetContext"] << 30:[1,85,null,{"value":"chrome"}] >> 50:[0,86,"Marionette:SetContext",{"value":"content"}] @@ -3722,7 +3752,7 @@ >> 49:[0,98,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,98,null,{"value":null}] >> 2275:[0,99,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,99,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,99,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,100,"Marionette:GetContext"] << 31:[1,100,null,{"value":"chrome"}] >> 51:[0,101,"Marionette:SetContext",{"value":"content"}] @@ -3752,13 +3782,13 @@ >> 50:[0,113,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,113,null,{"value":null}] >> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,114,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,114,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,115,"Marionette:GetContext"] << 31:[1,115,null,{"value":"chrome"}] >> 51:[0,116,"Marionette:SetContext",{"value":"content"}] << 27:[1,116,null,{"value":null}] >> 181:[0,117,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 68:[1,117,null,{"value":"Xlv1mVbjA9MAv1RU_bwN8v61oRHrpL_AVNgh9xQTvSk"}] +<< 68:[1,117,null,{"value":"M2Tp-WgQNG9sXnBcPmcJT4-nAtR_q5qAysapLyacxZ0"}] >> 52:[0,765,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,765,null,{"cause":"shutdown","forced":false,"in_app":true}] >> 178:[0,118,"WebDriver:ExecuteScript",{"script":"let c = document.createElement('canvas'); return c.getContext('webgl2') ? true : c.getContext('experimental-webgl') ? true : false;"}] @@ -3769,7 +3799,7 @@ >> 50:[0,120,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,120,null,{"value":null}] >> 2276:[0,121,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 140:[1,121,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267502,"lastModified":1686364081,"childCount":5}}] +<< 140:[1,121,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677822,"lastModified":1686364081,"childCount":5}}] >> 31:[0,122,"Marionette:GetContext"] << 31:[1,122,null,{"value":"chrome"}] >> 51:[0,123,"Marionette:SetContext",{"value":"content"}] @@ -3779,7 +3809,7 @@ >> 50:[0,125,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,125,null,{"value":null}] >> 2276:[0,126,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 169:[1,126,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] +<< 169:[1,126,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] >> 31:[0,127,"Marionette:GetContext"] << 31:[1,127,null,{"value":"chrome"}] >> 51:[0,128,"Marionette:SetContext",{"value":"content"}] @@ -3939,7 +3969,7 @@ >> 50:[0,205,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,205,null,{"value":null}] >> 2276:[0,206,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,206,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 175:[1,206,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,207,"Marionette:GetContext"] << 31:[1,207,null,{"value":"chrome"}] >> 51:[0,208,"Marionette:SetContext",{"value":"content"}] @@ -3979,7 +4009,7 @@ >> 50:[0,225,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,225,null,{"value":null}] >> 2276:[0,226,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,226,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 175:[1,226,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,227,"Marionette:GetContext"] << 31:[1,227,null,{"value":"chrome"}] >> 51:[0,228,"Marionette:SetContext",{"value":"content"}] @@ -4019,7 +4049,7 @@ >> 50:[0,245,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,245,null,{"value":null}] >> 2276:[0,246,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,246,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,246,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,247,"Marionette:GetContext"] << 31:[1,247,null,{"value":"chrome"}] >> 51:[0,248,"Marionette:SetContext",{"value":"content"}] @@ -4139,13 +4169,13 @@ >> 50:[0,305,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,305,null,{"value":null}] >> 787:[0,306,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 2768:[1,306,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:46.953Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:44.144Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2025-10-12T11:11:46.953Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] +<< 2768:[1,306,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:04.905Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:02.924Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2026-11-14T17:37:04.905Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,307,"Marionette:GetContext"] << 31:[1,307,null,{"value":"chrome"}] >> 50:[0,308,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,308,null,{"value":null}] >> 2276:[0,309,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,309,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1760267506,"parentGuid":"root________","childCount":4}}] +<< 172:[1,309,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1794677824,"parentGuid":"root________","childCount":4}}] >> 31:[0,310,"Marionette:GetContext"] << 31:[1,310,null,{"value":"chrome"}] >> 50:[0,311,"Marionette:SetContext",{"value":"chrome"}] @@ -4155,7 +4185,7 @@ >> 50:[0,313,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,313,null,{"value":null}] >> 2276:[0,314,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,314,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 175:[1,314,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,315,"Marionette:GetContext"] << 31:[1,315,null,{"value":"chrome"}] >> 50:[0,316,"Marionette:SetContext",{"value":"chrome"}] @@ -4165,7 +4195,7 @@ >> 50:[0,318,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,318,null,{"value":null}] >> 2276:[0,319,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,319,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267504,"parentGuid":"root________","childCount":4}}] +<< 172:[1,319,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":4}}] >> 31:[0,320,"Marionette:GetContext"] << 31:[1,320,null,{"value":"chrome"}] >> 50:[0,321,"Marionette:SetContext",{"value":"chrome"}] @@ -4175,7 +4205,7 @@ >> 50:[0,323,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,323,null,{"value":null}] >> 2276:[0,324,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,324,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 175:[1,324,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,325,"Marionette:GetContext"] << 31:[1,325,null,{"value":"chrome"}] >> 50:[0,326,"Marionette:SetContext",{"value":"chrome"}] @@ -4185,7 +4215,7 @@ >> 50:[0,328,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,328,null,{"value":null}] >> 2276:[0,329,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,329,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,329,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,330,"Marionette:GetContext"] << 31:[1,330,null,{"value":"chrome"}] >> 50:[0,331,"Marionette:SetContext",{"value":"chrome"}] @@ -4195,7 +4225,7 @@ >> 50:[0,333,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,333,null,{"value":null}] >> 2276:[0,334,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,334,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1760267506,"parentGuid":"menu________","childCount":1}}] +<< 172:[1,334,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1794677824,"parentGuid":"menu________","childCount":1}}] >> 31:[0,335,"Marionette:GetContext"] << 31:[1,335,null,{"value":"chrome"}] >> 50:[0,336,"Marionette:SetContext",{"value":"chrome"}] @@ -4368,7 +4398,7 @@ << 32:[1,419,null,{"value":"content"}] >> 50:[0,420,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,420,null,{"value":null}] ->> 2301:[0,421,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"KVwSziH6n33l"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2301:[0,421,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"FZDYpvi99UBy"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,421,null,{"value":null}] >> 31:[0,422,"Marionette:GetContext"] << 31:[1,422,null,{"value":"chrome"}] @@ -4378,7 +4408,7 @@ << 32:[1,424,null,{"value":"content"}] >> 50:[0,425,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,425,null,{"value":null}] ->> 2301:[0,426,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"KVwSziH6n33l"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2301:[0,426,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"FZDYpvi99UBy"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,426,null,{"value":null}] >> 31:[0,427,"Marionette:GetContext"] << 31:[1,427,null,{"value":"chrome"}] @@ -4398,7 +4428,7 @@ << 32:[1,434,null,{"value":"content"}] >> 50:[0,435,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,435,null,{"value":null}] ->> 2301:[0,436,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"5GPHA7ifrXf-"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2301:[0,436,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"cxv007oO5m2A"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,436,null,{"value":null}] >> 31:[0,437,"Marionette:GetContext"] << 31:[1,437,null,{"value":"chrome"}] @@ -4449,7 +4479,7 @@ >> 50:[0,460,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,460,null,{"value":null}] >> 2276:[0,461,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 140:[1,461,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267502,"lastModified":1760267507,"childCount":5}}] +<< 140:[1,461,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677822,"lastModified":1794677825,"childCount":5}}] >> 31:[0,462,"Marionette:GetContext"] << 31:[1,462,null,{"value":"chrome"}] >> 51:[0,463,"Marionette:SetContext",{"value":"content"}] @@ -4459,7 +4489,7 @@ >> 50:[0,465,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,465,null,{"value":null}] >> 2276:[0,466,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,466,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1760267507,"parentGuid":"root________","childCount":0}}] +<< 172:[1,466,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1794677825,"parentGuid":"root________","childCount":0}}] >> 31:[0,467,"Marionette:GetContext"] << 31:[1,467,null,{"value":"chrome"}] >> 51:[0,468,"Marionette:SetContext",{"value":"content"}] @@ -4468,7 +4498,7 @@ << 32:[1,469,null,{"value":"content"}] >> 50:[0,470,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,470,null,{"value":null}] ->> 2276:[0,471,"WebDriver:ExecuteScript",{"args":["KVwSziH6n33l"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,471,"WebDriver:ExecuteScript",{"args":["FZDYpvi99UBy"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,471,null,{"value":null}] >> 31:[0,472,"Marionette:GetContext"] << 31:[1,472,null,{"value":"chrome"}] @@ -4478,8 +4508,8 @@ << 32:[1,474,null,{"value":"content"}] >> 50:[0,475,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,475,null,{"value":null}] ->> 2983:[0,476,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685611344,"guid":"KVwSziH6n33l","lastModified":1685672402,"parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 189:[1,476,null,{"value":{"dateAdded":"2023-06-01T09:22:24.000Z","guid":"KVwSziH6n33l","lastModified":"2023-06-02T02:20:02.000Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0}}] +>> 2983:[0,476,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685611344,"guid":"FZDYpvi99UBy","lastModified":1685672402,"parentGuid":"menu________","title":"CPAN","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 189:[1,476,null,{"value":{"dateAdded":"2023-06-01T09:22:24.000Z","guid":"FZDYpvi99UBy","lastModified":"2023-06-02T02:20:02.000Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0}}] >> 31:[0,477,"Marionette:GetContext"] << 31:[1,477,null,{"value":"chrome"}] >> 51:[0,478,"Marionette:SetContext",{"value":"content"}] @@ -4488,7 +4518,7 @@ << 32:[1,479,null,{"value":"content"}] >> 50:[0,480,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,480,null,{"value":null}] ->> 2276:[0,481,"WebDriver:ExecuteScript",{"args":["MFCbFMSp0dhv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,481,"WebDriver:ExecuteScript",{"args":["ENQsoFK19qx8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,481,null,{"value":null}] >> 31:[0,482,"Marionette:GetContext"] << 31:[1,482,null,{"value":"chrome"}] @@ -4498,8 +4528,8 @@ << 32:[1,484,null,{"value":"content"}] >> 50:[0,485,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,485,null,{"value":null}] ->> 5500:[0,486,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"MFCbFMSp0dhv","icon":"data:image/png;base64,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","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"KVwSziH6n33l","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 332:[1,486,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"MFCbFMSp0dhv","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"KVwSziH6n33l","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0}}] +>> 5500:[0,486,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"ENQsoFK19qx8","icon":"data:image/png;base64,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","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"FZDYpvi99UBy","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 332:[1,486,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"ENQsoFK19qx8","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"FZDYpvi99UBy","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0}}] >> 31:[0,487,"Marionette:GetContext"] << 31:[1,487,null,{"value":"chrome"}] >> 51:[0,488,"Marionette:SetContext",{"value":"content"}] @@ -4508,7 +4538,7 @@ << 32:[1,489,null,{"value":"content"}] >> 50:[0,490,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,490,null,{"value":null}] ->> 2276:[0,491,"WebDriver:ExecuteScript",{"args":["wl08u9l9goEh"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,491,"WebDriver:ExecuteScript",{"args":["TMGYRYFIK5Ip"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,491,null,{"value":null}] >> 31:[0,492,"Marionette:GetContext"] << 31:[1,492,null,{"value":"chrome"}] @@ -4518,8 +4548,8 @@ << 32:[1,494,null,{"value":"content"}] >> 50:[0,495,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,495,null,{"value":null}] ->> 5532:[0,496,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"wl08u9l9goEh","icon":"data:image/png;base64,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","iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","lastModified":1685672252,"parentGuid":"KVwSziH6n33l","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 350:[1,496,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"wl08u9l9goEh","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"KVwSziH6n33l","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1}}] +>> 5532:[0,496,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"TMGYRYFIK5Ip","icon":"data:image/png;base64,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","iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","lastModified":1685672252,"parentGuid":"FZDYpvi99UBy","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 350:[1,496,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"TMGYRYFIK5Ip","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"FZDYpvi99UBy","title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","index":1}}] >> 31:[0,497,"Marionette:GetContext"] << 31:[1,497,null,{"value":"chrome"}] >> 51:[0,498,"Marionette:SetContext",{"value":"content"}] @@ -4529,7 +4559,7 @@ >> 50:[0,500,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,500,null,{"value":null}] >> 2276:[0,501,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,501,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] +<< 172:[1,501,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] >> 31:[0,502,"Marionette:GetContext"] << 31:[1,502,null,{"value":"chrome"}] >> 51:[0,503,"Marionette:SetContext",{"value":"content"}] @@ -4538,7 +4568,7 @@ << 32:[1,504,null,{"value":"content"}] >> 50:[0,505,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,505,null,{"value":null}] ->> 2276:[0,506,"WebDriver:ExecuteScript",{"args":["5GPHA7ifrXf-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,506,"WebDriver:ExecuteScript",{"args":["cxv007oO5m2A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,506,null,{"value":null}] >> 31:[0,507,"Marionette:GetContext"] << 31:[1,507,null,{"value":"chrome"}] @@ -4548,8 +4578,8 @@ << 32:[1,509,null,{"value":"content"}] >> 50:[0,510,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,510,null,{"value":null}] ->> 2987:[0,511,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670822,"guid":"5GPHA7ifrXf-","lastModified":1685672383,"parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 193:[1,511,null,{"value":{"dateAdded":"2023-06-02T01:53:42.000Z","guid":"5GPHA7ifrXf-","lastModified":"2023-06-02T02:19:43.000Z","parentGuid":"menu________","title":"Searches","type":2,"index":1}}] +>> 2987:[0,511,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670822,"guid":"cxv007oO5m2A","lastModified":1685672383,"parentGuid":"menu________","title":"Searches","type":2}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 193:[1,511,null,{"value":{"dateAdded":"2023-06-02T01:53:42.000Z","guid":"cxv007oO5m2A","lastModified":"2023-06-02T02:19:43.000Z","parentGuid":"menu________","title":"Searches","type":2,"index":1}}] >> 31:[0,512,"Marionette:GetContext"] << 31:[1,512,null,{"value":"chrome"}] >> 51:[0,513,"Marionette:SetContext",{"value":"content"}] @@ -4558,7 +4588,7 @@ << 32:[1,514,null,{"value":"content"}] >> 50:[0,515,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,515,null,{"value":null}] ->> 2276:[0,516,"WebDriver:ExecuteScript",{"args":["0Z8gsDV1r6v0"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,516,"WebDriver:ExecuteScript",{"args":["9Rh6L_ww5Ohq"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,516,null,{"value":null}] >> 31:[0,517,"Marionette:GetContext"] << 31:[1,517,null,{"value":"chrome"}] @@ -4568,8 +4598,8 @@ << 32:[1,519,null,{"value":"content"}] >> 50:[0,520,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,520,null,{"value":null}] ->> 4499:[0,521,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"0Z8gsDV1r6v0","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII=","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"5GPHA7ifrXf-","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 277:[1,521,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"0Z8gsDV1r6v0","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"5GPHA7ifrXf-","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0}}] +>> 4499:[0,521,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"9Rh6L_ww5Ohq","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII=","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"cxv007oO5m2A","tags":["perl","\ud83d\udc2b","UTF8","ddg"],"title":"perl \ud83d\udc2b at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 277:[1,521,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"9Rh6L_ww5Ohq","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"cxv007oO5m2A","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0}}] >> 31:[0,522,"Marionette:GetContext"] << 31:[1,522,null,{"value":"chrome"}] >> 51:[0,523,"Marionette:SetContext",{"value":"content"}] @@ -4578,7 +4608,7 @@ << 32:[1,524,null,{"value":"content"}] >> 50:[0,525,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,525,null,{"value":null}] ->> 2276:[0,526,"WebDriver:ExecuteScript",{"args":["KMmLqJKuYhoD"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,526,"WebDriver:ExecuteScript",{"args":["tVmlzKKfhM1X"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,526,null,{"value":null}] >> 31:[0,527,"Marionette:GetContext"] << 31:[1,527,null,{"value":"chrome"}] @@ -4588,8 +4618,8 @@ << 32:[1,529,null,{"value":"content"}] >> 50:[0,530,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,530,null,{"value":null}] ->> 2919:[0,531,"WebDriver:ExecuteScript",{"args":[{"guid":"KMmLqJKuYhoD","parentGuid":"menu________","type":3}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 185:[1,531,null,{"value":{"guid":"KMmLqJKuYhoD","parentGuid":"menu________","type":3,"index":2,"title":"","dateAdded":"2025-10-12T11:11:47.725Z","lastModified":"2025-10-12T11:11:47.725Z"}}] +>> 2919:[0,531,"WebDriver:ExecuteScript",{"args":[{"guid":"tVmlzKKfhM1X","parentGuid":"menu________","type":3}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 185:[1,531,null,{"value":{"guid":"tVmlzKKfhM1X","parentGuid":"menu________","type":3,"index":2,"title":"","dateAdded":"2026-11-14T17:37:05.436Z","lastModified":"2026-11-14T17:37:05.436Z"}}] >> 31:[0,532,"Marionette:GetContext"] << 31:[1,532,null,{"value":"chrome"}] >> 51:[0,533,"Marionette:SetContext",{"value":"content"}] @@ -4598,7 +4628,7 @@ << 32:[1,534,null,{"value":"content"}] >> 50:[0,535,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,535,null,{"value":null}] ->> 2276:[0,536,"WebDriver:ExecuteScript",{"args":["yqmjzAio9kZx"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,536,"WebDriver:ExecuteScript",{"args":["_jddvHwIYuAv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,536,null,{"value":null}] >> 31:[0,537,"Marionette:GetContext"] << 31:[1,537,null,{"value":"chrome"}] @@ -4608,8 +4638,8 @@ << 32:[1,539,null,{"value":"content"}] >> 50:[0,540,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,540,null,{"value":null}] ->> 4264:[0,541,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"yqmjzAio9kZx","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","lastModified":1685672392,"parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 373:[1,541,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"yqmjzAio9kZx","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":3}}] +>> 4264:[0,541,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"_jddvHwIYuAv","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC","iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","lastModified":1685672392,"parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 373:[1,541,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"_jddvHwIYuAv","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","type":1,"url":"https://github.com/david-dick/firefox-marionette","index":3}}] >> 31:[0,542,"Marionette:GetContext"] << 31:[1,542,null,{"value":"chrome"}] >> 51:[0,543,"Marionette:SetContext",{"value":"content"}] @@ -4619,7 +4649,7 @@ >> 50:[0,545,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,545,null,{"value":null}] >> 2276:[0,546,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,546,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1760267507,"parentGuid":"root________","childCount":0}}] +<< 175:[1,546,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1794677825,"parentGuid":"root________","childCount":0}}] >> 31:[0,547,"Marionette:GetContext"] << 31:[1,547,null,{"value":"chrome"}] >> 51:[0,548,"Marionette:SetContext",{"value":"content"}] @@ -4628,7 +4658,7 @@ << 32:[1,549,null,{"value":"content"}] >> 50:[0,550,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,550,null,{"value":null}] ->> 2276:[0,551,"WebDriver:ExecuteScript",{"args":["sD7UWds8792c"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,551,"WebDriver:ExecuteScript",{"args":["Y0IdgsFjmZo4"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,551,null,{"value":null}] >> 31:[0,552,"Marionette:GetContext"] << 31:[1,552,null,{"value":"chrome"}] @@ -4638,8 +4668,8 @@ << 32:[1,554,null,{"value":"content"}] >> 50:[0,555,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,555,null,{"value":null}] ->> 3057:[0,556,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"sD7UWds8792c","lastModified":1686363942,"parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 263:[1,556,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"sD7UWds8792c","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0}}] +>> 3057:[0,556,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"Y0IdgsFjmZo4","lastModified":1686363942,"parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 263:[1,556,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"Y0IdgsFjmZo4","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","title":"PAUSE: The CPAN back stage entrance","type":1,"url":"https://pause.perl.org/pause/query","index":0}}] >> 31:[0,557,"Marionette:GetContext"] << 31:[1,557,null,{"value":"chrome"}] >> 51:[0,558,"Marionette:SetContext",{"value":"content"}] @@ -4649,7 +4679,7 @@ >> 50:[0,560,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,560,null,{"value":null}] >> 2276:[0,561,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,561,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1760267507,"parentGuid":"root________","childCount":0}}] +<< 175:[1,561,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1794677825,"parentGuid":"root________","childCount":0}}] >> 31:[0,562,"Marionette:GetContext"] << 31:[1,562,null,{"value":"chrome"}] >> 51:[0,563,"Marionette:SetContext",{"value":"content"}] @@ -4658,7 +4688,7 @@ << 32:[1,564,null,{"value":"content"}] >> 50:[0,565,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,565,null,{"value":null}] ->> 2276:[0,566,"WebDriver:ExecuteScript",{"args":["tgS1h0BHFthI"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +>> 2276:[0,566,"WebDriver:ExecuteScript",{"args":["bjzC9jM0TcEb"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] << 27:[1,566,null,{"value":null}] >> 31:[0,567,"Marionette:GetContext"] << 31:[1,567,null,{"value":"chrome"}] @@ -4668,8 +4698,8 @@ << 32:[1,569,null,{"value":"content"}] >> 50:[0,570,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,570,null,{"value":null}] ->> 3041:[0,571,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"tgS1h0BHFthI","lastModified":1686364095,"parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 247:[1,571,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"tgS1h0BHFthI","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":0}}] +>> 3041:[0,571,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"bjzC9jM0TcEb","lastModified":1686364095,"parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] +<< 247:[1,571,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"bjzC9jM0TcEb","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":0}}] >> 31:[0,572,"Marionette:GetContext"] << 31:[1,572,null,{"value":"chrome"}] >> 51:[0,573,"Marionette:SetContext",{"value":"content"}] @@ -4679,13 +4709,13 @@ >> 50:[0,575,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,575,null,{"value":null}] >> 787:[0,576,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 3078:[1,576,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:47.689Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"KVwSziH6n33l","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"menu________"},{"guid":"MFCbFMSp0dhv","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"wl08u9l9goEh","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"5GPHA7ifrXf-","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"0Z8gsDV1r6v0","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"5GPHA7ifrXf-","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"KMmLqJKuYhoD","index":2,"type":3,"title":"","dateAdded":"2025-10-12T11:11:47.725Z","lastModified":"2025-10-12T11:11:47.725Z","parentGuid":"menu________"},{"guid":"yqmjzAio9kZx","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"sD7UWds8792c","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"tgS1h0BHFthI","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] +<< 3078:[1,576,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:05.414Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"FZDYpvi99UBy","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"menu________"},{"guid":"ENQsoFK19qx8","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"TMGYRYFIK5Ip","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"cxv007oO5m2A","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"9Rh6L_ww5Ohq","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"cxv007oO5m2A","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"tVmlzKKfhM1X","index":2,"type":3,"title":"","dateAdded":"2026-11-14T17:37:05.436Z","lastModified":"2026-11-14T17:37:05.436Z","parentGuid":"menu________"},{"guid":"_jddvHwIYuAv","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"Y0IdgsFjmZo4","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"bjzC9jM0TcEb","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,577,"Marionette:GetContext"] << 31:[1,577,null,{"value":"chrome"}] >> 50:[0,578,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,578,null,{"value":null}] >> 2276:[0,579,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 169:[1,579,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] +<< 169:[1,579,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] >> 31:[0,580,"Marionette:GetContext"] << 31:[1,580,null,{"value":"chrome"}] >> 50:[0,581,"Marionette:SetContext",{"value":"chrome"}] @@ -4695,7 +4725,7 @@ >> 50:[0,583,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,583,null,{"value":null}] >> 2276:[0,584,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,584,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 175:[1,584,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,585,"Marionette:GetContext"] << 31:[1,585,null,{"value":"chrome"}] >> 50:[0,586,"Marionette:SetContext",{"value":"chrome"}] @@ -4705,7 +4735,7 @@ >> 50:[0,588,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,588,null,{"value":null}] >> 2276:[0,589,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,589,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267507,"parentGuid":"root________","childCount":4}}] +<< 172:[1,589,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677825,"parentGuid":"root________","childCount":4}}] >> 31:[0,590,"Marionette:GetContext"] << 31:[1,590,null,{"value":"chrome"}] >> 50:[0,591,"Marionette:SetContext",{"value":"chrome"}] @@ -4715,7 +4745,7 @@ >> 50:[0,593,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,593,null,{"value":null}] >> 2276:[0,594,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,594,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 175:[1,594,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,595,"Marionette:GetContext"] << 31:[1,595,null,{"value":"chrome"}] >> 50:[0,596,"Marionette:SetContext",{"value":"chrome"}] @@ -4725,7 +4755,7 @@ >> 50:[0,598,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,598,null,{"value":null}] >> 2276:[0,599,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,599,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,599,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,600,"Marionette:GetContext"] << 31:[1,600,null,{"value":"chrome"}] >> 50:[0,601,"Marionette:SetContext",{"value":"chrome"}] @@ -4734,8 +4764,8 @@ << 31:[1,602,null,{"value":"chrome"}] >> 50:[0,603,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,603,null,{"value":null}] ->> 2276:[0,604,"WebDriver:ExecuteScript",{"args":["KVwSziH6n33l"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,604,null,{"value":{"guid":"KVwSziH6n33l","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685672252,"parentGuid":"menu________","childCount":2}}] +>> 2276:[0,604,"WebDriver:ExecuteScript",{"args":["FZDYpvi99UBy"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 172:[1,604,null,{"value":{"guid":"FZDYpvi99UBy","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685672252,"parentGuid":"menu________","childCount":2}}] >> 31:[0,605,"Marionette:GetContext"] << 31:[1,605,null,{"value":"chrome"}] >> 50:[0,606,"Marionette:SetContext",{"value":"chrome"}] @@ -4744,8 +4774,8 @@ << 31:[1,607,null,{"value":"chrome"}] >> 50:[0,608,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,608,null,{"value":null}] ->> 2276:[0,609,"WebDriver:ExecuteScript",{"args":["MFCbFMSp0dhv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 2684:[1,609,null,{"value":{"guid":"MFCbFMSp0dhv","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] +>> 2276:[0,609,"WebDriver:ExecuteScript",{"args":["ENQsoFK19qx8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 2684:[1,609,null,{"value":{"guid":"ENQsoFK19qx8","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGbElEQVRYhcWWTWwV1xXHf+fcO8/PNjYFTFH5MIJNJJQIDE0LwU4faRaojUQlJHaITbtglVUWjbpwF0gsk32zqCxFFUiVsijpJvIjDkppagG1RMTG1FZJRWMixd+emXtPF2/med7DJptKudLTzJt77v/8z/eFypoEzwvWd+0D3AD3YoxGB4ZUwc9B/tHQSwP7BnsvR3MNLO5B9JlKaD5dXJu4sPBoqZTbTvklCAB3jo5cJMpbIhwSs1Ww6TyGibH5mdlx0HEwwKSq/G+HT/zC0D8OJMlQIBIBBRzKUpYtCPHK6bn7t7YiUSqfGn7lqPf+Zr/6kwCx2PcoyzEH4m9Pz967biACJlXlPUnylxCNzGIKpkKLJkhMRGtOhY0s+2U3icKi+MnB4wf6vP6zz/vdqyGk0jJQSgyBZKevyWK+fu2nj+//7gY4Afho6KWBH/b3zyZOh3ILGaIJZoaIbD5j5sUlWYgL/11ZOXph4dFSaYWBCsTPj5z8eIdLzq+EbB2ROma2GWwRzKJhse68X0+z0TPz9+8owL7B3ssDSTKUWUy3Vm6GaJJZTAeSZGjfYO9lgCYNVyqfOjBy3IueXw5pAHraykWkgqWAOUCde5sixERzjUAETNsHS+XlMjMwDUSiuUb5uUlDAZy30bo6ZDPstM9XMAVxaTQC4Sc3OFbT1kbcE6slUbLuApIyqSzuAWjQjJsiDLHd6sKLGGIy8KNh198iIPpM2wlXYdz130qXiT6rWt8SYaFq/HPnK5iKYGJL/5kPKwqgEpoOBSR2uK07iZDoUFRCs/xceiHk8tl6NKzg2GFIiSkihoWaCuD+fomHqQI8XVybWMqyhUS0hsWseqBaBYlobSnLFp4urk0UyoNANNCxJ/ce5Bb/usPVHLDxnCFFFQASAAnhfQCdBH9h4dGSEK84Fby4xMxSwwIWc8OCmaVeXOJUEOKVsiNKEbXfFwavZuHXy3n6Ta9zdTNLwXKwUGIA8gPf49OQXTszf/9Ouw98r52wBPi+ZkEHwP9jGnYk4ZYY20zDCoA0aThoZXhZakXCWbf8dyn6mqYB7KUht2nG8a5afY5AaUW1xhs0o2xb5FuvcdCfVTC+pmlleF54aDsXWituL3RvISfdbq6u7guLVDdKhlMHRo4n3kZNGDJjIeTy2diTew+65bYyoHTx7f0vH6p5fUPUHY6iqzEyPTo3PQmt8JyjmbcJlKCfHDx+oC9xf/Ci5+u6SXQ9BjLix2tp+M3P//3gyVYkSuUGcvfIyHvA1T7nEymclhNZy/OHJvnVs49nPrVWDwjSUb/qv9jha7uXQxqqMTfQHa7mlvP0mzzmr47Nz8yWY7h0e3EvkLvDJ5qDPfXXF0MGFrNqaOrOeYCVLLs4Ovfgz5M0vJaWeO9v9nm/eyVk64IoogmIRzQRRFdCtt7n/W7v/c3CdW2CZdXcPTLy3mBP/fVv83TNijtEG0PUr4eQZdHwqn+a2n9q+BzNXKHVNPrVn1wNIUWk3qJcuYwAiNRXQ0j71Z+8c3TkYhnLcdBzNPPb+18+BFxdDBlAXaoYxbuIJsFsY4erJT6J70CZ1VHealllm8OnOoiKdyk7ZyEPUJZazesbfc4nWMykOv+rU7V1qfEbFkD0zTYBNQ4W/pQuqzdBWu8SC3nYbDIAou5wmXAdE7D6KxQEMyDunRoe3lVcSGytSBQ62XY+N7W15Ksriq52fKjeqKo4LRKYkPbmezdKytO++0Ky5VNiS86modVeSy/EyHROxLq92EXIsOhVwPjyx19NrypAHsPEcshMIMEstgG6LhMCyXLILI9hAuA2zVhW0ejc9ORanj+sO+etvNRUMdphlJCgYPoBgE7S8GPzM7OIvbvT1wQsYjGzYlxai3QGFnf6miD27tj8zGxRARE226tJfhXAiSZitmFYpI1jwcw2dvqkZylPb702N/2hgeg5mvk46OnZe9cX8/VrPc77PueTRFRVRBNR7XM+6XHeL+br107P3rtell7p3UsQJmn4s49nPl3JsovRYtbvkp6aOqci6kS17rwfcEnPt1l6K/mX/mozH8q0av2xz4dPnFXn3g7EV8UYNGER9AsJ4f0z8/fvFF0PthjNZXud2n9q2CfxHUTfFOLeKKQYX2L6wWtz0x9C59xor+qkusGx2tTwK7tucKy21f52q3sSTg0P7/rH/lN9FZJilSH4Pylr2D7oCD10AAAAAElFTkSuQmCC"}}] >> 31:[0,610,"Marionette:GetContext"] << 31:[1,610,null,{"value":"chrome"}] >> 50:[0,611,"Marionette:SetContext",{"value":"chrome"}] @@ -4754,8 +4784,8 @@ << 31:[1,612,null,{"value":"chrome"}] >> 50:[0,613,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,613,null,{"value":null}] ->> 2276:[0,614,"WebDriver:ExecuteScript",{"args":["wl08u9l9goEh"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 2716:[1,614,null,{"value":{"guid":"wl08u9l9goEh","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] +>> 2276:[0,614,"WebDriver:ExecuteScript",{"args":["TMGYRYFIK5Ip"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 2716:[1,614,null,{"value":{"guid":"TMGYRYFIK5Ip","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,615,"Marionette:GetContext"] << 31:[1,615,null,{"value":"chrome"}] >> 50:[0,616,"Marionette:SetContext",{"value":"chrome"}] @@ -4764,8 +4794,8 @@ << 31:[1,617,null,{"value":"chrome"}] >> 50:[0,618,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,618,null,{"value":null}] ->> 2276:[0,619,"WebDriver:ExecuteScript",{"args":["5GPHA7ifrXf-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,619,null,{"value":{"guid":"5GPHA7ifrXf-","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 2276:[0,619,"WebDriver:ExecuteScript",{"args":["cxv007oO5m2A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 176:[1,619,null,{"value":{"guid":"cxv007oO5m2A","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 31:[0,620,"Marionette:GetContext"] << 31:[1,620,null,{"value":"chrome"}] >> 50:[0,621,"Marionette:SetContext",{"value":"chrome"}] @@ -4774,8 +4804,8 @@ << 31:[1,622,null,{"value":"chrome"}] >> 50:[0,623,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,623,null,{"value":null}] ->> 2276:[0,624,"WebDriver:ExecuteScript",{"args":["0Z8gsDV1r6v0"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 1649:[1,624,null,{"value":{"guid":"0Z8gsDV1r6v0","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"5GPHA7ifrXf-","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] +>> 2276:[0,624,"WebDriver:ExecuteScript",{"args":["9Rh6L_ww5Ohq"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 1649:[1,624,null,{"value":{"guid":"9Rh6L_ww5Ohq","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"cxv007oO5m2A","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 31:[0,625,"Marionette:GetContext"] << 31:[1,625,null,{"value":"chrome"}] >> 50:[0,626,"Marionette:SetContext",{"value":"chrome"}] @@ -4784,8 +4814,8 @@ << 31:[1,627,null,{"value":"chrome"}] >> 50:[0,628,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,628,null,{"value":null}] ->> 2276:[0,629,"WebDriver:ExecuteScript",{"args":["KMmLqJKuYhoD"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 153:[1,629,null,{"value":{"guid":"KMmLqJKuYhoD","index":2,"type":3,"title":"","dateAdded":1760267507,"lastModified":1760267507,"parentGuid":"menu________"}}] +>> 2276:[0,629,"WebDriver:ExecuteScript",{"args":["tVmlzKKfhM1X"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 153:[1,629,null,{"value":{"guid":"tVmlzKKfhM1X","index":2,"type":3,"title":"","dateAdded":1794677825,"lastModified":1794677825,"parentGuid":"menu________"}}] >> 31:[0,630,"Marionette:GetContext"] << 31:[1,630,null,{"value":"chrome"}] >> 50:[0,631,"Marionette:SetContext",{"value":"chrome"}] @@ -4794,8 +4824,8 @@ << 31:[1,632,null,{"value":"chrome"}] >> 50:[0,633,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,633,null,{"value":null}] ->> 2276:[0,634,"WebDriver:ExecuteScript",{"args":["yqmjzAio9kZx"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 1446:[1,634,null,{"value":{"guid":"yqmjzAio9kZx","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] +>> 2276:[0,634,"WebDriver:ExecuteScript",{"args":["_jddvHwIYuAv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 1446:[1,634,null,{"value":{"guid":"_jddvHwIYuAv","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 31:[0,635,"Marionette:GetContext"] << 31:[1,635,null,{"value":"chrome"}] >> 50:[0,636,"Marionette:SetContext",{"value":"chrome"}] @@ -4804,8 +4834,8 @@ << 31:[1,637,null,{"value":"chrome"}] >> 50:[0,638,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,638,null,{"value":null}] ->> 2276:[0,639,"WebDriver:ExecuteScript",{"args":["sD7UWds8792c"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 241:[1,639,null,{"value":{"guid":"sD7UWds8792c","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] +>> 2276:[0,639,"WebDriver:ExecuteScript",{"args":["Y0IdgsFjmZo4"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 241:[1,639,null,{"value":{"guid":"Y0IdgsFjmZo4","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 31:[0,640,"Marionette:GetContext"] << 31:[1,640,null,{"value":"chrome"}] >> 50:[0,641,"Marionette:SetContext",{"value":"chrome"}] @@ -4814,8 +4844,8 @@ << 31:[1,642,null,{"value":"chrome"}] >> 50:[0,643,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,643,null,{"value":null}] ->> 2276:[0,644,"WebDriver:ExecuteScript",{"args":["tgS1h0BHFthI"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 225:[1,644,null,{"value":{"guid":"tgS1h0BHFthI","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 2276:[0,644,"WebDriver:ExecuteScript",{"args":["bjzC9jM0TcEb"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 225:[1,644,null,{"value":{"guid":"bjzC9jM0TcEb","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,645,"Marionette:GetContext"] << 31:[1,645,null,{"value":"chrome"}] >> 50:[0,646,"Marionette:SetContext",{"value":"chrome"}] @@ -4829,13 +4859,13 @@ >> 50:[0,650,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,650,null,{"value":null}] >> 839:[0,651,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/pod/Firefox::Marionette"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 334:[1,651,null,{"value":[{"guid":"MFCbFMSp0dhv","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 334:[1,651,null,{"value":[{"guid":"ENQsoFK19qx8","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 31:[0,652,"Marionette:GetContext"] << 31:[1,652,null,{"value":"chrome"}] >> 50:[0,653,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,653,null,{"value":null}] ->> 2276:[0,654,"WebDriver:ExecuteScript",{"args":["MFCbFMSp0dhv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 2684:[1,654,null,{"value":{"guid":"MFCbFMSp0dhv","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGbElEQVRYhcWWTWwV1xXHf+fcO8/PNjYFTFH5MIJNJJQIDE0LwU4faRaojUQlJHaITbtglVUWjbpwF0gsk32zqCxFFUiVsijpJvIjDkppagG1RMTG1FZJRWMixd+emXtPF2/med7DJptKudLTzJt77v/8z/eFypoEzwvWd+0D3AD3YoxGB4ZUwc9B/tHQSwP7BnsvR3MNLO5B9JlKaD5dXJu4sPBoqZTbTvklCAB3jo5cJMpbIhwSs1Ww6TyGibH5mdlx0HEwwKSq/G+HT/zC0D8OJMlQIBIBBRzKUpYtCPHK6bn7t7YiUSqfGn7lqPf+Zr/6kwCx2PcoyzEH4m9Pz967biACJlXlPUnylxCNzGIKpkKLJkhMRGtOhY0s+2U3icKi+MnB4wf6vP6zz/vdqyGk0jJQSgyBZKevyWK+fu2nj+//7gY4Afho6KWBH/b3zyZOh3ILGaIJZoaIbD5j5sUlWYgL/11ZOXph4dFSaYWBCsTPj5z8eIdLzq+EbB2ROma2GWwRzKJhse68X0+z0TPz9+8owL7B3ssDSTKUWUy3Vm6GaJJZTAeSZGjfYO9lgCYNVyqfOjBy3IueXw5pAHraykWkgqWAOUCde5sixERzjUAETNsHS+XlMjMwDUSiuUb5uUlDAZy30bo6ZDPstM9XMAVxaTQC4Sc3OFbT1kbcE6slUbLuApIyqSzuAWjQjJsiDLHd6sKLGGIy8KNh198iIPpM2wlXYdz130qXiT6rWt8SYaFq/HPnK5iKYGJL/5kPKwqgEpoOBSR2uK07iZDoUFRCs/xceiHk8tl6NKzg2GFIiSkihoWaCuD+fomHqQI8XVybWMqyhUS0hsWseqBaBYlobSnLFp4urk0UyoNANNCxJ/ce5Bb/usPVHLDxnCFFFQASAAnhfQCdBH9h4dGSEK84Fby4xMxSwwIWc8OCmaVeXOJUEOKVsiNKEbXfFwavZuHXy3n6Ta9zdTNLwXKwUGIA8gPf49OQXTszf/9Ouw98r52wBPi+ZkEHwP9jGnYk4ZYY20zDCoA0aThoZXhZakXCWbf8dyn6mqYB7KUht2nG8a5afY5AaUW1xhs0o2xb5FuvcdCfVTC+pmlleF54aDsXWituL3RvISfdbq6u7guLVDdKhlMHRo4n3kZNGDJjIeTy2diTew+65bYyoHTx7f0vH6p5fUPUHY6iqzEyPTo3PQmt8JyjmbcJlKCfHDx+oC9xf/Ci5+u6SXQ9BjLix2tp+M3P//3gyVYkSuUGcvfIyHvA1T7nEymclhNZy/OHJvnVs49nPrVWDwjSUb/qv9jha7uXQxqqMTfQHa7mlvP0mzzmr47Nz8yWY7h0e3EvkLvDJ5qDPfXXF0MGFrNqaOrOeYCVLLs4Ovfgz5M0vJaWeO9v9nm/eyVk64IoogmIRzQRRFdCtt7n/W7v/c3CdW2CZdXcPTLy3mBP/fVv83TNijtEG0PUr4eQZdHwqn+a2n9q+BzNXKHVNPrVn1wNIUWk3qJcuYwAiNRXQ0j71Z+8c3TkYhnLcdBzNPPb+18+BFxdDBlAXaoYxbuIJsFsY4erJT6J70CZ1VHealllm8OnOoiKdyk7ZyEPUJZazesbfc4nWMykOv+rU7V1qfEbFkD0zTYBNQ4W/pQuqzdBWu8SC3nYbDIAou5wmXAdE7D6KxQEMyDunRoe3lVcSGytSBQ62XY+N7W15Ksriq52fKjeqKo4LRKYkPbmezdKytO++0Ky5VNiS86modVeSy/EyHROxLq92EXIsOhVwPjyx19NrypAHsPEcshMIMEstgG6LhMCyXLILI9hAuA2zVhW0ejc9ORanj+sO+etvNRUMdphlJCgYPoBgE7S8GPzM7OIvbvT1wQsYjGzYlxai3QGFnf6miD27tj8zGxRARE226tJfhXAiSZitmFYpI1jwcw2dvqkZylPb702N/2hgeg5mvk46OnZe9cX8/VrPc77PueTRFRVRBNR7XM+6XHeL+br107P3rtell7p3UsQJmn4s49nPl3JsovRYtbvkp6aOqci6kS17rwfcEnPt1l6K/mX/mozH8q0av2xz4dPnFXn3g7EV8UYNGER9AsJ4f0z8/fvFF0PthjNZXud2n9q2CfxHUTfFOLeKKQYX2L6wWtz0x9C59xor+qkusGx2tTwK7tucKy21f52q3sSTg0P7/rH/lN9FZJilSH4Pylr2D7oCD10AAAAAElFTkSuQmCC"}}] +>> 2276:[0,654,"WebDriver:ExecuteScript",{"args":["ENQsoFK19qx8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 2684:[1,654,null,{"value":{"guid":"ENQsoFK19qx8","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 31:[0,655,"Marionette:GetContext"] << 31:[1,655,null,{"value":"chrome"}] >> 50:[0,656,"Marionette:SetContext",{"value":"chrome"}] @@ -4849,13 +4879,13 @@ >> 50:[0,660,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,660,null,{"value":null}] >> 808:[0,661,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 662:[1,661,null,{"value":[{"guid":"MFCbFMSp0dhv","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"wl08u9l9goEh","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] +<< 662:[1,661,null,{"value":[{"guid":"ENQsoFK19qx8","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"TMGYRYFIK5Ip","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 31:[0,662,"Marionette:GetContext"] << 31:[1,662,null,{"value":"chrome"}] >> 50:[0,663,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,663,null,{"value":null}] ->> 2276:[0,664,"WebDriver:ExecuteScript",{"args":["MFCbFMSp0dhv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 2684:[1,664,null,{"value":{"guid":"MFCbFMSp0dhv","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] +>> 2276:[0,664,"WebDriver:ExecuteScript",{"args":["ENQsoFK19qx8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 2684:[1,664,null,{"value":{"guid":"ENQsoFK19qx8","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","icon":"data:image/png;base64,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"}}] >> 31:[0,665,"Marionette:GetContext"] << 31:[1,665,null,{"value":"chrome"}] >> 50:[0,666,"Marionette:SetContext",{"value":"chrome"}] @@ -4864,8 +4894,8 @@ << 31:[1,667,null,{"value":"chrome"}] >> 50:[0,668,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,668,null,{"value":null}] ->> 2276:[0,669,"WebDriver:ExecuteScript",{"args":["wl08u9l9goEh"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 2716:[1,669,null,{"value":{"guid":"wl08u9l9goEh","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] +>> 2276:[0,669,"WebDriver:ExecuteScript",{"args":["TMGYRYFIK5Ip"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 2716:[1,669,null,{"value":{"guid":"TMGYRYFIK5Ip","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,670,"Marionette:GetContext"] << 31:[1,670,null,{"value":"chrome"}] >> 50:[0,671,"Marionette:SetContext",{"value":"chrome"}] @@ -4878,7 +4908,7 @@ << 32:[1,674,null,{"value":"content"}] >> 50:[0,675,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,675,null,{"value":null}] ->> 799:[0,676,"WebDriver:ExecuteScript",{"args":["MFCbFMSp0dhv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,676,"WebDriver:ExecuteScript",{"args":["ENQsoFK19qx8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,676,null,{"value":null}] >> 31:[0,677,"Marionette:GetContext"] << 31:[1,677,null,{"value":"chrome"}] @@ -4899,13 +4929,13 @@ >> 50:[0,685,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,685,null,{"value":null}] >> 817:[0,686,"WebDriver:ExecuteScript",{"args":[{"url":"https://perlmonks.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 249:[1,686,null,{"value":[{"guid":"tgS1h0BHFthI","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] +<< 249:[1,686,null,{"value":[{"guid":"bjzC9jM0TcEb","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,687,"Marionette:GetContext"] << 31:[1,687,null,{"value":"chrome"}] >> 50:[0,688,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,688,null,{"value":null}] ->> 2276:[0,689,"WebDriver:ExecuteScript",{"args":["tgS1h0BHFthI"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 225:[1,689,null,{"value":{"guid":"tgS1h0BHFthI","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 2276:[0,689,"WebDriver:ExecuteScript",{"args":["bjzC9jM0TcEb"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 225:[1,689,null,{"value":{"guid":"bjzC9jM0TcEb","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,690,"Marionette:GetContext"] << 31:[1,690,null,{"value":"chrome"}] >> 50:[0,691,"Marionette:SetContext",{"value":"chrome"}] @@ -4919,13 +4949,13 @@ >> 50:[0,695,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,695,null,{"value":null}] >> 808:[0,696,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 352:[1,696,null,{"value":[{"guid":"wl08u9l9goEh","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] +<< 352:[1,696,null,{"value":[{"guid":"TMGYRYFIK5Ip","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"}]}] >> 31:[0,697,"Marionette:GetContext"] << 31:[1,697,null,{"value":"chrome"}] >> 50:[0,698,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,698,null,{"value":null}] ->> 2276:[0,699,"WebDriver:ExecuteScript",{"args":["wl08u9l9goEh"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 2716:[1,699,null,{"value":{"guid":"wl08u9l9goEh","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] +>> 2276:[0,699,"WebDriver:ExecuteScript",{"args":["TMGYRYFIK5Ip"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 2716:[1,699,null,{"value":{"guid":"TMGYRYFIK5Ip","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,700,"Marionette:GetContext"] << 31:[1,700,null,{"value":"chrome"}] >> 50:[0,701,"Marionette:SetContext",{"value":"chrome"}] @@ -4939,13 +4969,13 @@ >> 50:[0,705,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,705,null,{"value":null}] >> 809:[0,706,"WebDriver:ExecuteScript",{"args":["https://duckduckgo.com"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 279:[1,706,null,{"value":[{"guid":"0Z8gsDV1r6v0","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"5GPHA7ifrXf-","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}]}] +<< 279:[1,706,null,{"value":[{"guid":"9Rh6L_ww5Ohq","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"cxv007oO5m2A","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"}]}] >> 31:[0,707,"Marionette:GetContext"] << 31:[1,707,null,{"value":"chrome"}] >> 50:[0,708,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,708,null,{"value":null}] ->> 2276:[0,709,"WebDriver:ExecuteScript",{"args":["0Z8gsDV1r6v0"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 1649:[1,709,null,{"value":{"guid":"0Z8gsDV1r6v0","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"5GPHA7ifrXf-","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] +>> 2276:[0,709,"WebDriver:ExecuteScript",{"args":["9Rh6L_ww5Ohq"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 1649:[1,709,null,{"value":{"guid":"9Rh6L_ww5Ohq","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"cxv007oO5m2A","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 31:[0,710,"Marionette:GetContext"] << 31:[1,710,null,{"value":"chrome"}] >> 50:[0,711,"Marionette:SetContext",{"value":"chrome"}] @@ -4959,13 +4989,13 @@ >> 50:[0,715,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,715,null,{"value":null}] >> 787:[0,716,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 2768:[1,716,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:48.152Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:47.689Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"KVwSziH6n33l","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2025-10-12T11:11:48.152Z","parentGuid":"menu________"},{"guid":"wl08u9l9goEh","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"5GPHA7ifrXf-","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"0Z8gsDV1r6v0","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"5GPHA7ifrXf-","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"KMmLqJKuYhoD","index":2,"type":3,"title":"","dateAdded":"2025-10-12T11:11:47.725Z","lastModified":"2025-10-12T11:11:47.725Z","parentGuid":"menu________"},{"guid":"yqmjzAio9kZx","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"sD7UWds8792c","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"tgS1h0BHFthI","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] +<< 2768:[1,716,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:05.811Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:05.414Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"FZDYpvi99UBy","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2026-11-14T17:37:05.811Z","parentGuid":"menu________"},{"guid":"TMGYRYFIK5Ip","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"cxv007oO5m2A","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"9Rh6L_ww5Ohq","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"cxv007oO5m2A","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"tVmlzKKfhM1X","index":2,"type":3,"title":"","dateAdded":"2026-11-14T17:37:05.436Z","lastModified":"2026-11-14T17:37:05.436Z","parentGuid":"menu________"},{"guid":"_jddvHwIYuAv","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"Y0IdgsFjmZo4","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"bjzC9jM0TcEb","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,717,"Marionette:GetContext"] << 31:[1,717,null,{"value":"chrome"}] >> 50:[0,718,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,718,null,{"value":null}] >> 2276:[0,719,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,719,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":4}}] +<< 172:[1,719,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1794677825,"parentGuid":"root________","childCount":4}}] >> 31:[0,720,"Marionette:GetContext"] << 31:[1,720,null,{"value":"chrome"}] >> 50:[0,721,"Marionette:SetContext",{"value":"chrome"}] @@ -4975,7 +5005,7 @@ >> 50:[0,723,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,723,null,{"value":null}] >> 2276:[0,724,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,724,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 175:[1,724,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,725,"Marionette:GetContext"] << 31:[1,725,null,{"value":"chrome"}] >> 50:[0,726,"Marionette:SetContext",{"value":"chrome"}] @@ -4985,7 +5015,7 @@ >> 50:[0,728,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,728,null,{"value":null}] >> 2276:[0,729,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,729,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267507,"parentGuid":"root________","childCount":4}}] +<< 172:[1,729,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677825,"parentGuid":"root________","childCount":4}}] >> 31:[0,730,"Marionette:GetContext"] << 31:[1,730,null,{"value":"chrome"}] >> 50:[0,731,"Marionette:SetContext",{"value":"chrome"}] @@ -4995,7 +5025,7 @@ >> 50:[0,733,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,733,null,{"value":null}] >> 2276:[0,734,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,734,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 175:[1,734,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,735,"Marionette:GetContext"] << 31:[1,735,null,{"value":"chrome"}] >> 50:[0,736,"Marionette:SetContext",{"value":"chrome"}] @@ -5005,7 +5035,7 @@ >> 50:[0,738,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,738,null,{"value":null}] >> 2276:[0,739,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,739,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,739,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,740,"Marionette:GetContext"] << 31:[1,740,null,{"value":"chrome"}] >> 50:[0,741,"Marionette:SetContext",{"value":"chrome"}] @@ -5014,8 +5044,8 @@ << 31:[1,742,null,{"value":"chrome"}] >> 50:[0,743,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,743,null,{"value":null}] ->> 2276:[0,744,"WebDriver:ExecuteScript",{"args":["KVwSziH6n33l"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,744,null,{"value":{"guid":"KVwSziH6n33l","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1760267508,"parentGuid":"menu________","childCount":1}}] +>> 2276:[0,744,"WebDriver:ExecuteScript",{"args":["FZDYpvi99UBy"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 172:[1,744,null,{"value":{"guid":"FZDYpvi99UBy","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1794677825,"parentGuid":"menu________","childCount":1}}] >> 31:[0,745,"Marionette:GetContext"] << 31:[1,745,null,{"value":"chrome"}] >> 50:[0,746,"Marionette:SetContext",{"value":"chrome"}] @@ -5024,8 +5054,8 @@ << 31:[1,747,null,{"value":"chrome"}] >> 50:[0,748,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,748,null,{"value":null}] ->> 2276:[0,749,"WebDriver:ExecuteScript",{"args":["wl08u9l9goEh"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 2716:[1,749,null,{"value":{"guid":"wl08u9l9goEh","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"KVwSziH6n33l","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] +>> 2276:[0,749,"WebDriver:ExecuteScript",{"args":["TMGYRYFIK5Ip"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 2716:[1,749,null,{"value":{"guid":"TMGYRYFIK5Ip","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"FZDYpvi99UBy","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[],"iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","icon":"data:image/png;base64,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"}}] >> 31:[0,750,"Marionette:GetContext"] << 31:[1,750,null,{"value":"chrome"}] >> 50:[0,751,"Marionette:SetContext",{"value":"chrome"}] @@ -5034,8 +5064,8 @@ << 31:[1,752,null,{"value":"chrome"}] >> 50:[0,753,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,753,null,{"value":null}] ->> 2276:[0,754,"WebDriver:ExecuteScript",{"args":["5GPHA7ifrXf-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,754,null,{"value":{"guid":"5GPHA7ifrXf-","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 2276:[0,754,"WebDriver:ExecuteScript",{"args":["cxv007oO5m2A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 176:[1,754,null,{"value":{"guid":"cxv007oO5m2A","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] >> 31:[0,755,"Marionette:GetContext"] << 31:[1,755,null,{"value":"chrome"}] >> 50:[0,756,"Marionette:SetContext",{"value":"chrome"}] @@ -5044,8 +5074,8 @@ << 31:[1,757,null,{"value":"chrome"}] >> 50:[0,758,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,758,null,{"value":null}] ->> 2276:[0,759,"WebDriver:ExecuteScript",{"args":["0Z8gsDV1r6v0"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 1649:[1,759,null,{"value":{"guid":"0Z8gsDV1r6v0","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"5GPHA7ifrXf-","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] +>> 2276:[0,759,"WebDriver:ExecuteScript",{"args":["9Rh6L_ww5Ohq"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 1649:[1,759,null,{"value":{"guid":"9Rh6L_ww5Ohq","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"cxv007oO5m2A","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"],"iconUrl":"https://duckduckgo.com/favicon.ico","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADgElEQVQ4T6WTa0xbdRiHf/9259DT0pV2a7m4zo2OKTNjNo3TBNAtUbKQNigpQwOMLXHGTRN1yTAaNKCbW7yGqRnJdKibU2FkCMxZYFPi7FBhKW4tc4O2yCgUWmjp/fScHhm6TD/7fns/PL/kvTwE/7PIv/mxCoNCoOiyBKF20vFIIRVP0nFGEhYY+nea8IeYefZCdtdQbBESbnNLAYsdcT2xuYBk0G+ma+8xSUqrIMnbCMLz4LkE+EAAbF8bgvYBCxcIvpab/9sQaUDqFrsU4KzcvEm8QmNZWVabKb7XgKRnFNEL3Qi1tkKklkO+/RnIt1UAU07MfnlkLuwZNeWfvmpdCnBt2SIRrxe1qne+bEpGk/A17oXyxVcgK38W3GUrfO/UITk7DSEeg6axGTQtwsyppl7OM1qT2+nyktHqom0qQ+E5mXkvJswPQlpeC1XdYaT9M2TMfQ3+d+uQcF0HIhFkH/0OXNcn8NsGdg9yv7aQkeqii6tf/agwZu1BqPs0pE1t8MSl0KoZKDNkuDzFgfrgBWTY+5FMsJAbt2N5cQm8xw50RX/2mInD/EBYd6RdNrnrMSzLuhtM0xk4bvigVsqRr1Oi0+ZF5g/N0E2dRTwSR8rPIOfjbnjqa4KiYXs2cRk3CtqT/XBuzQNdoIfyYAug1IDiJpA2dx6iII/Yn4NgfcNgZwUE28exptuBmYYdmJq4IiPXyw3s2k8tlGePERyXgmz3fmSWmIHQWfC/PIWgVQNekEKkohC6JCDli2FVyzlMH9wzOWm7mkfsNUU/rn7ujUeig/1YOHMCTGkl7tr3FsDPg71yCmHLMdBEjOg8QXg4AHnZ01BsNWH6/X297HmnifxR9VDtCt19n8lq9mOyqhiUvhhZze2glx7Eg/nXa9Gzzo+1bgGakRlkfd2PVN9X8F/sfVz7xU+dZOxRg0KslZ5UV71kTAkUgu814GZjHY5Si+daCMI/7YZbk8Kh5hBKdzQBWcvhPf52n9/jqNB3uAN/f2K1fpM4I8eifvL5THqdHiPhMRye+xAkRVByU4lx5TKY1++C7sYEvB3H5xLjbpPuW9ulW07ccaFaXyBiVAcUGwxGUlKJ2EoF0lWZSIvzCDmGwH//DSLOaz2p0EJ9boHtvy7cNstasYrJluQ8zIKuF2Ls/Uw8ls7SaWySYQYocJ+z7ELHhjb74jrv2PgXU1mEH5MqexkAAAAASUVORK5CYII="}}] >> 31:[0,760,"Marionette:GetContext"] << 31:[1,760,null,{"value":"chrome"}] >> 50:[0,761,"Marionette:SetContext",{"value":"chrome"}] @@ -5054,8 +5084,8 @@ << 31:[1,762,null,{"value":"chrome"}] >> 50:[0,763,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,763,null,{"value":null}] ->> 2276:[0,764,"WebDriver:ExecuteScript",{"args":["KMmLqJKuYhoD"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 153:[1,764,null,{"value":{"guid":"KMmLqJKuYhoD","index":2,"type":3,"title":"","dateAdded":1760267507,"lastModified":1760267507,"parentGuid":"menu________"}}] +>> 2276:[0,764,"WebDriver:ExecuteScript",{"args":["tVmlzKKfhM1X"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 153:[1,764,null,{"value":{"guid":"tVmlzKKfhM1X","index":2,"type":3,"title":"","dateAdded":1794677825,"lastModified":1794677825,"parentGuid":"menu________"}}] >> 31:[0,765,"Marionette:GetContext"] << 31:[1,765,null,{"value":"chrome"}] >> 50:[0,766,"Marionette:SetContext",{"value":"chrome"}] @@ -5064,8 +5094,8 @@ << 31:[1,767,null,{"value":"chrome"}] >> 50:[0,768,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,768,null,{"value":null}] ->> 2276:[0,769,"WebDriver:ExecuteScript",{"args":["yqmjzAio9kZx"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 1446:[1,769,null,{"value":{"guid":"yqmjzAio9kZx","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] +>> 2276:[0,769,"WebDriver:ExecuteScript",{"args":["_jddvHwIYuAv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 1446:[1,769,null,{"value":{"guid":"_jddvHwIYuAv","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[],"iconUrl":"fake-favicon-uri:https://github.com/david-dick/firefox-marionette","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACrElEQVQ4jW2SzWucVRTGf+fe9847SW2n+WioIdZkJkzGWLMsQvBjpRv1H1BcqSB166aUbgQXLkpEEGnF7ty5Edw0orULtS5DjNOZ5qvEKkMzEUuS6bz33tPFvCNj6LM653LO8/A85wpHUJmbW0QKbwMvAU8BCHpXkZshhK+2mmu3BudloC5UagsfI7wvIsOooqoKID2gqvuqfLFeX7kAdPsEBmZdea74beLcKxoj+R4iPf7BXozBZ9n1jdudN+BOZgEtV5/8pJAW3/JZ90ZU/UiF0yAnVbWpUVvAMLASo7+oUYuFQvrqiRFT2NttLctUtXouleIN62whZNm19dur7wLFiZmzpdbmahvQyWr15L2Dg312dg5n5s5+6lzhvPfZQ59lLyapce+IkSGNkSjaASzQaW2udvrh3Gs07ud2LUqmMVhrzLA4+55RNS+IqsYYO91u+AwIvVz+F3C/DkEffh5i3FdFwSwaEaYUBKT950Z9Ox+MgA4QaL+/22xuCWzl708bwGkv6mMj5XLxiPJRCJOTRYXx3pw6A9wRVRUjpZIZej5Xso+xkAB65lhp0YhM5H9k3ajqrxgD8MAm5sp0tVrLczhqwZ+ZfXbeJckSoGJEUH42MYQvUZXgw5Kq3nRu+I/KMwvLM9X5c/3tqXLtuUpt4WuXyC+CzANRo4audq/Yf9r3d0pjp0atTT7M/OGbxpg9VE5nofPNv+32HsDQ+MgTqXVXRSRV5dAmNo3eL2036tekf7JKbeEngbEY/QcKDzYba7/9Z2B6ulhJj2+LkQljLD5k1zfq8XVY8yY/WVivr7wcNf5oE/e9Mcmt0dnZE/398TR1COMi4n3wlzfqq6/BWheIdiCouLfb+u742KllVP/+q+l/gHYAONgdkdHRxIbgL202fr+aiwLwCG7VPT6fvRxuAAAAAElFTkSuQmCC"}}] >> 31:[0,770,"Marionette:GetContext"] << 31:[1,770,null,{"value":"chrome"}] >> 50:[0,771,"Marionette:SetContext",{"value":"chrome"}] @@ -5074,8 +5104,8 @@ << 31:[1,772,null,{"value":"chrome"}] >> 50:[0,773,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,773,null,{"value":null}] ->> 2276:[0,774,"WebDriver:ExecuteScript",{"args":["sD7UWds8792c"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 241:[1,774,null,{"value":{"guid":"sD7UWds8792c","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] +>> 2276:[0,774,"WebDriver:ExecuteScript",{"args":["Y0IdgsFjmZo4"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 241:[1,774,null,{"value":{"guid":"Y0IdgsFjmZo4","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":1686363942,"lastModified":1686363942,"parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query","tags":[]}}] >> 31:[0,775,"Marionette:GetContext"] << 31:[1,775,null,{"value":"chrome"}] >> 50:[0,776,"Marionette:SetContext",{"value":"chrome"}] @@ -5084,8 +5114,8 @@ << 31:[1,777,null,{"value":"chrome"}] >> 50:[0,778,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,778,null,{"value":null}] ->> 2276:[0,779,"WebDriver:ExecuteScript",{"args":["tgS1h0BHFthI"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 225:[1,779,null,{"value":{"guid":"tgS1h0BHFthI","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 2276:[0,779,"WebDriver:ExecuteScript",{"args":["bjzC9jM0TcEb"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 225:[1,779,null,{"value":{"guid":"bjzC9jM0TcEb","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] >> 31:[0,780,"Marionette:GetContext"] << 31:[1,780,null,{"value":"chrome"}] >> 50:[0,781,"Marionette:SetContext",{"value":"chrome"}] @@ -5098,7 +5128,7 @@ << 32:[1,784,null,{"value":"content"}] >> 50:[0,785,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,785,null,{"value":null}] ->> 799:[0,786,"WebDriver:ExecuteScript",{"args":["tgS1h0BHFthI"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,786,"WebDriver:ExecuteScript",{"args":["bjzC9jM0TcEb"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,786,null,{"value":null}] >> 31:[0,787,"Marionette:GetContext"] << 31:[1,787,null,{"value":"chrome"}] @@ -5108,7 +5138,7 @@ << 32:[1,789,null,{"value":"content"}] >> 50:[0,790,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,790,null,{"value":null}] ->> 799:[0,791,"WebDriver:ExecuteScript",{"args":["sD7UWds8792c"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,791,"WebDriver:ExecuteScript",{"args":["Y0IdgsFjmZo4"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,791,null,{"value":null}] >> 31:[0,792,"Marionette:GetContext"] << 31:[1,792,null,{"value":"chrome"}] @@ -5118,7 +5148,7 @@ << 32:[1,794,null,{"value":"content"}] >> 50:[0,795,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,795,null,{"value":null}] ->> 799:[0,796,"WebDriver:ExecuteScript",{"args":["yqmjzAio9kZx"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,796,"WebDriver:ExecuteScript",{"args":["_jddvHwIYuAv"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,796,null,{"value":null}] >> 31:[0,797,"Marionette:GetContext"] << 31:[1,797,null,{"value":"chrome"}] @@ -5128,7 +5158,7 @@ << 32:[1,799,null,{"value":"content"}] >> 50:[0,800,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,800,null,{"value":null}] ->> 799:[0,801,"WebDriver:ExecuteScript",{"args":["KMmLqJKuYhoD"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,801,"WebDriver:ExecuteScript",{"args":["tVmlzKKfhM1X"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,801,null,{"value":null}] >> 31:[0,802,"Marionette:GetContext"] << 31:[1,802,null,{"value":"chrome"}] @@ -5138,7 +5168,7 @@ << 32:[1,804,null,{"value":"content"}] >> 50:[0,805,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,805,null,{"value":null}] ->> 799:[0,806,"WebDriver:ExecuteScript",{"args":["0Z8gsDV1r6v0"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,806,"WebDriver:ExecuteScript",{"args":["9Rh6L_ww5Ohq"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,806,null,{"value":null}] >> 31:[0,807,"Marionette:GetContext"] << 31:[1,807,null,{"value":"chrome"}] @@ -5148,7 +5178,7 @@ << 32:[1,809,null,{"value":"content"}] >> 50:[0,810,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,810,null,{"value":null}] ->> 799:[0,811,"WebDriver:ExecuteScript",{"args":["5GPHA7ifrXf-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,811,"WebDriver:ExecuteScript",{"args":["cxv007oO5m2A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,811,null,{"value":null}] >> 31:[0,812,"Marionette:GetContext"] << 31:[1,812,null,{"value":"chrome"}] @@ -5158,7 +5188,7 @@ << 32:[1,814,null,{"value":"content"}] >> 50:[0,815,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,815,null,{"value":null}] ->> 799:[0,816,"WebDriver:ExecuteScript",{"args":["wl08u9l9goEh"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,816,"WebDriver:ExecuteScript",{"args":["TMGYRYFIK5Ip"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,816,null,{"value":null}] >> 31:[0,817,"Marionette:GetContext"] << 31:[1,817,null,{"value":"chrome"}] @@ -5168,7 +5198,7 @@ << 32:[1,819,null,{"value":"content"}] >> 50:[0,820,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,820,null,{"value":null}] ->> 799:[0,821,"WebDriver:ExecuteScript",{"args":["KVwSziH6n33l"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] +>> 799:[0,821,"WebDriver:ExecuteScript",{"args":["FZDYpvi99UBy"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.remove(arguments[0]); "}] << 27:[1,821,null,{"value":null}] >> 31:[0,822,"Marionette:GetContext"] << 31:[1,822,null,{"value":"chrome"}] @@ -5179,7 +5209,7 @@ >> 50:[0,825,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,825,null,{"value":null}] >> 2276:[0,826,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 140:[1,826,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267502,"lastModified":1760267508,"childCount":5}}] +<< 140:[1,826,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677822,"lastModified":1794677826,"childCount":5}}] >> 31:[0,827,"Marionette:GetContext"] << 31:[1,827,null,{"value":"chrome"}] >> 51:[0,828,"Marionette:SetContext",{"value":"content"}] @@ -5189,7 +5219,7 @@ >> 50:[0,830,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,830,null,{"value":null}] >> 2276:[0,831,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,831,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":0}}] +<< 172:[1,831,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":0}}] >> 31:[0,832,"Marionette:GetContext"] << 31:[1,832,null,{"value":"chrome"}] >> 51:[0,833,"Marionette:SetContext",{"value":"content"}] @@ -5339,7 +5369,7 @@ >> 50:[0,905,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,905,null,{"value":null}] >> 2276:[0,906,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,906,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":0}}] +<< 175:[1,906,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":0}}] >> 31:[0,907,"Marionette:GetContext"] << 31:[1,907,null,{"value":"chrome"}] >> 51:[0,908,"Marionette:SetContext",{"value":"content"}] @@ -5369,7 +5399,7 @@ >> 50:[0,920,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,920,null,{"value":null}] >> 2276:[0,921,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,921,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":0}}] +<< 175:[1,921,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":0}}] >> 31:[0,922,"Marionette:GetContext"] << 31:[1,922,null,{"value":"chrome"}] >> 51:[0,923,"Marionette:SetContext",{"value":"content"}] @@ -5399,7 +5429,7 @@ >> 50:[0,935,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,935,null,{"value":null}] >> 2276:[0,936,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,936,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,936,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,937,"Marionette:GetContext"] << 31:[1,937,null,{"value":"chrome"}] >> 51:[0,938,"Marionette:SetContext",{"value":"content"}] @@ -5409,13 +5439,13 @@ >> 50:[0,940,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,940,null,{"value":null}] >> 787:[0,941,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 3078:[1,941,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:48.710Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"menu________"},{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] +<< 3078:[1,941,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:06.266Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"menu________"},{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"}]}] >> 31:[0,942,"Marionette:GetContext"] << 31:[1,942,null,{"value":"chrome"}] >> 50:[0,943,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,943,null,{"value":null}] >> 2276:[0,944,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 169:[1,944,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] +<< 169:[1,944,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] >> 31:[0,945,"Marionette:GetContext"] << 31:[1,945,null,{"value":"chrome"}] >> 50:[0,946,"Marionette:SetContext",{"value":"chrome"}] @@ -5425,7 +5455,7 @@ >> 50:[0,948,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,948,null,{"value":null}] >> 2276:[0,949,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,949,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 175:[1,949,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 31:[0,950,"Marionette:GetContext"] << 31:[1,950,null,{"value":"chrome"}] >> 50:[0,951,"Marionette:SetContext",{"value":"chrome"}] @@ -5435,7 +5465,7 @@ >> 50:[0,953,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,953,null,{"value":null}] >> 2276:[0,954,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 172:[1,954,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":4}}] +<< 172:[1,954,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":4}}] >> 31:[0,955,"Marionette:GetContext"] << 31:[1,955,null,{"value":"chrome"}] >> 50:[0,956,"Marionette:SetContext",{"value":"chrome"}] @@ -5445,7 +5475,7 @@ >> 50:[0,958,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,958,null,{"value":null}] >> 2276:[0,959,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,959,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 175:[1,959,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 31:[0,960,"Marionette:GetContext"] << 31:[1,960,null,{"value":"chrome"}] >> 50:[0,961,"Marionette:SetContext",{"value":"chrome"}] @@ -5455,7 +5485,7 @@ >> 50:[0,963,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,963,null,{"value":null}] >> 2276:[0,964,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 174:[1,964,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 174:[1,964,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 31:[0,965,"Marionette:GetContext"] << 31:[1,965,null,{"value":"chrome"}] >> 50:[0,966,"Marionette:SetContext",{"value":"chrome"}] @@ -5569,7 +5599,7 @@ >> 51:[0,1020,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1020,null,{"value":null}] >> 2277:[0,1021,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 141:[1,1021,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267502,"lastModified":1760267509,"childCount":5}}] +<< 141:[1,1021,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677822,"lastModified":1794677826,"childCount":5}}] >> 32:[0,1022,"Marionette:GetContext"] << 32:[1,1022,null,{"value":"chrome"}] >> 52:[0,1023,"Marionette:SetContext",{"value":"content"}] @@ -5579,7 +5609,7 @@ >> 51:[0,1025,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1025,null,{"value":null}] >> 2277:[0,1026,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1026,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1760267509,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1026,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":4}}] >> 32:[0,1027,"Marionette:GetContext"] << 32:[1,1027,null,{"value":"chrome"}] >> 52:[0,1028,"Marionette:SetContext",{"value":"content"}] @@ -5589,7 +5619,7 @@ >> 51:[0,1030,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1030,null,{"value":null}] >> 2277:[0,1031,"WebDriver:ExecuteScript",{"args":["ExAzkxs5efkR"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1031,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1760267509,"parentGuid":"menu________","childCount":1}}] +<< 173:[1,1031,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1794677826,"parentGuid":"menu________","childCount":1}}] >> 32:[0,1032,"Marionette:GetContext"] << 32:[1,1032,null,{"value":"chrome"}] >> 52:[0,1033,"Marionette:SetContext",{"value":"content"}] @@ -5729,7 +5759,7 @@ >> 51:[0,1100,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1100,null,{"value":null}] >> 2277:[0,1101,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1101,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1101,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1102,"Marionette:GetContext"] << 32:[1,1102,null,{"value":"chrome"}] >> 52:[0,1103,"Marionette:SetContext",{"value":"content"}] @@ -5769,7 +5799,7 @@ >> 51:[0,1120,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1120,null,{"value":null}] >> 2277:[0,1121,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1121,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1121,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1122,"Marionette:GetContext"] << 32:[1,1122,null,{"value":"chrome"}] >> 52:[0,1123,"Marionette:SetContext",{"value":"content"}] @@ -5809,7 +5839,7 @@ >> 51:[0,1140,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1140,null,{"value":null}] >> 2277:[0,1141,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,1141,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 175:[1,1141,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 32:[0,1142,"Marionette:GetContext"] << 32:[1,1142,null,{"value":"chrome"}] >> 52:[0,1143,"Marionette:SetContext",{"value":"content"}] @@ -5819,13 +5849,13 @@ >> 51:[0,1145,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1145,null,{"value":null}] >> 788:[0,1146,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 3079:[1,1146,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:48.710Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 3079:[1,1146,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:06.266Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1147,"Marionette:GetContext"] << 32:[1,1147,null,{"value":"chrome"}] >> 51:[0,1148,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1148,null,{"value":null}] >> 2277:[0,1149,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1149,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1149,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1150,"Marionette:GetContext"] << 32:[1,1150,null,{"value":"chrome"}] >> 51:[0,1151,"Marionette:SetContext",{"value":"chrome"}] @@ -5835,7 +5865,7 @@ >> 51:[0,1153,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1153,null,{"value":null}] >> 2277:[0,1154,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1154,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1154,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1155,"Marionette:GetContext"] << 32:[1,1155,null,{"value":"chrome"}] >> 51:[0,1156,"Marionette:SetContext",{"value":"chrome"}] @@ -5845,7 +5875,7 @@ >> 51:[0,1158,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1158,null,{"value":null}] >> 2277:[0,1159,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1159,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1159,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":4}}] >> 32:[0,1160,"Marionette:GetContext"] << 32:[1,1160,null,{"value":"chrome"}] >> 51:[0,1161,"Marionette:SetContext",{"value":"chrome"}] @@ -5855,7 +5885,7 @@ >> 51:[0,1163,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1163,null,{"value":null}] >> 2277:[0,1164,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1164,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1164,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1165,"Marionette:GetContext"] << 32:[1,1165,null,{"value":"chrome"}] >> 51:[0,1166,"Marionette:SetContext",{"value":"chrome"}] @@ -5865,7 +5895,7 @@ >> 51:[0,1168,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1168,null,{"value":null}] >> 2277:[0,1169,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,1169,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 175:[1,1169,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 32:[0,1170,"Marionette:GetContext"] << 32:[1,1170,null,{"value":"chrome"}] >> 51:[0,1171,"Marionette:SetContext",{"value":"chrome"}] @@ -6149,7 +6179,7 @@ >> 51:[0,1310,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1310,null,{"value":null}] >> 2277:[0,1311,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 141:[1,1311,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267502,"lastModified":1685610972,"childCount":5}}] +<< 141:[1,1311,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677822,"lastModified":1685610972,"childCount":5}}] >> 32:[0,1312,"Marionette:GetContext"] << 32:[1,1312,null,{"value":"chrome"}] >> 52:[0,1313,"Marionette:SetContext",{"value":"content"}] @@ -6159,7 +6189,7 @@ >> 51:[0,1315,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1315,null,{"value":null}] >> 2277:[0,1316,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1316,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1316,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1317,"Marionette:GetContext"] << 32:[1,1317,null,{"value":"chrome"}] >> 52:[0,1318,"Marionette:SetContext",{"value":"content"}] @@ -6239,7 +6269,7 @@ >> 51:[0,1355,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1355,null,{"value":null}] >> 2277:[0,1356,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1356,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1356,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1357,"Marionette:GetContext"] << 32:[1,1357,null,{"value":"chrome"}] >> 52:[0,1358,"Marionette:SetContext",{"value":"content"}] @@ -6329,7 +6359,7 @@ >> 51:[0,1400,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1400,null,{"value":null}] >> 2277:[0,1401,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1401,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1401,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1402,"Marionette:GetContext"] << 32:[1,1402,null,{"value":"chrome"}] >> 52:[0,1403,"Marionette:SetContext",{"value":"content"}] @@ -6369,7 +6399,7 @@ >> 51:[0,1420,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1420,null,{"value":null}] >> 2277:[0,1421,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1421,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1421,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1422,"Marionette:GetContext"] << 32:[1,1422,null,{"value":"chrome"}] >> 52:[0,1423,"Marionette:SetContext",{"value":"content"}] @@ -6409,13 +6439,13 @@ >> 51:[0,1440,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1440,null,{"value":null}] >> 788:[0,1441,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 3079:[1,1441,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:48.710Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 3079:[1,1441,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:06.266Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1442,"Marionette:GetContext"] << 32:[1,1442,null,{"value":"chrome"}] >> 51:[0,1443,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1443,null,{"value":null}] >> 2277:[0,1444,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1444,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1444,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1445,"Marionette:GetContext"] << 32:[1,1445,null,{"value":"chrome"}] >> 51:[0,1446,"Marionette:SetContext",{"value":"chrome"}] @@ -6425,7 +6455,7 @@ >> 51:[0,1448,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1448,null,{"value":null}] >> 2277:[0,1449,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1449,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1449,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1450,"Marionette:GetContext"] << 32:[1,1450,null,{"value":"chrome"}] >> 51:[0,1451,"Marionette:SetContext",{"value":"chrome"}] @@ -6435,7 +6465,7 @@ >> 51:[0,1453,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1453,null,{"value":null}] >> 2277:[0,1454,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1454,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1454,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":4}}] >> 32:[0,1455,"Marionette:GetContext"] << 32:[1,1455,null,{"value":"chrome"}] >> 51:[0,1456,"Marionette:SetContext",{"value":"chrome"}] @@ -6445,7 +6475,7 @@ >> 51:[0,1458,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1458,null,{"value":null}] >> 2277:[0,1459,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1459,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1459,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1460,"Marionette:GetContext"] << 32:[1,1460,null,{"value":"chrome"}] >> 51:[0,1461,"Marionette:SetContext",{"value":"chrome"}] @@ -6455,7 +6485,7 @@ >> 51:[0,1463,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1463,null,{"value":null}] >> 2277:[0,1464,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,1464,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 175:[1,1464,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 32:[0,1465,"Marionette:GetContext"] << 32:[1,1465,null,{"value":"chrome"}] >> 51:[0,1466,"Marionette:SetContext",{"value":"chrome"}] @@ -6739,7 +6769,7 @@ >> 51:[0,1605,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1605,null,{"value":null}] >> 2277:[0,1606,"WebDriver:ExecuteScript",{"args":["root________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 141:[1,1606,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1760267502,"lastModified":1685610972,"childCount":5}}] +<< 141:[1,1606,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794677822,"lastModified":1685610972,"childCount":5}}] >> 32:[0,1607,"Marionette:GetContext"] << 32:[1,1607,null,{"value":"chrome"}] >> 52:[0,1608,"Marionette:SetContext",{"value":"content"}] @@ -6749,7 +6779,7 @@ >> 51:[0,1610,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1610,null,{"value":null}] >> 2277:[0,1611,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1611,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1611,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1612,"Marionette:GetContext"] << 32:[1,1612,null,{"value":"chrome"}] >> 52:[0,1613,"Marionette:SetContext",{"value":"content"}] @@ -6829,7 +6859,7 @@ >> 51:[0,1650,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1650,null,{"value":null}] >> 2277:[0,1651,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1651,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1651,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1652,"Marionette:GetContext"] << 32:[1,1652,null,{"value":"chrome"}] >> 52:[0,1653,"Marionette:SetContext",{"value":"content"}] @@ -6919,7 +6949,7 @@ >> 51:[0,1695,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1695,null,{"value":null}] >> 2277:[0,1696,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1696,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1696,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1697,"Marionette:GetContext"] << 32:[1,1697,null,{"value":"chrome"}] >> 52:[0,1698,"Marionette:SetContext",{"value":"content"}] @@ -6959,7 +6989,7 @@ >> 51:[0,1715,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1715,null,{"value":null}] >> 2277:[0,1716,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1716,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1716,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1717,"Marionette:GetContext"] << 32:[1,1717,null,{"value":"chrome"}] >> 52:[0,1718,"Marionette:SetContext",{"value":"content"}] @@ -6999,13 +7029,13 @@ >> 51:[0,1735,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1735,null,{"value":null}] >> 788:[0,1736,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 3079:[1,1736,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:48.710Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 3079:[1,1736,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:06.266Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1737,"Marionette:GetContext"] << 32:[1,1737,null,{"value":"chrome"}] >> 51:[0,1738,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1738,null,{"value":null}] >> 2277:[0,1739,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1739,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1739,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1740,"Marionette:GetContext"] << 32:[1,1740,null,{"value":"chrome"}] >> 51:[0,1741,"Marionette:SetContext",{"value":"chrome"}] @@ -7015,7 +7045,7 @@ >> 51:[0,1743,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1743,null,{"value":null}] >> 2277:[0,1744,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1744,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1744,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1745,"Marionette:GetContext"] << 32:[1,1745,null,{"value":"chrome"}] >> 51:[0,1746,"Marionette:SetContext",{"value":"chrome"}] @@ -7025,7 +7055,7 @@ >> 51:[0,1748,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1748,null,{"value":null}] >> 2277:[0,1749,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1749,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1749,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":4}}] >> 32:[0,1750,"Marionette:GetContext"] << 32:[1,1750,null,{"value":"chrome"}] >> 51:[0,1751,"Marionette:SetContext",{"value":"chrome"}] @@ -7035,7 +7065,7 @@ >> 51:[0,1753,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1753,null,{"value":null}] >> 2277:[0,1754,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1754,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1754,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1755,"Marionette:GetContext"] << 32:[1,1755,null,{"value":"chrome"}] >> 51:[0,1756,"Marionette:SetContext",{"value":"chrome"}] @@ -7045,7 +7075,7 @@ >> 51:[0,1758,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1758,null,{"value":null}] >> 2277:[0,1759,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,1759,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 175:[1,1759,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 32:[0,1760,"Marionette:GetContext"] << 32:[1,1760,null,{"value":"chrome"}] >> 51:[0,1761,"Marionette:SetContext",{"value":"chrome"}] @@ -7149,13 +7179,13 @@ >> 51:[0,1810,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1810,null,{"value":null}] >> 788:[0,1811,"WebDriver:ExecuteScript",{"args":[{}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 3079:[1,1811,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2025-10-12T11:11:48.710Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2025-10-12T11:11:42.595Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2025-10-12T11:11:42.599Z","lastModified":"2025-10-12T11:11:42.742Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 3079:[1,1811,null,{"value":[{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2026-11-14T17:37:06.266Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-14T17:37:02.272Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-14T17:37:02.275Z","lastModified":"2026-11-14T17:37:02.312Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"menu________"},{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-02T02:17:32.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":"2023-06-02T02:20:18.000Z","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________"},{"guid":"JTBNJdLPdYhk","index":3,"type":1,"title":"GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol","dateAdded":"1970-01-20T12:13:31.000Z","lastModified":"2023-06-02T02:19:52.000Z","parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette"},{"guid":"UjOiVVvuVdng","index":0,"type":1,"title":"PAUSE: The CPAN back stage entrance","dateAdded":"2023-06-10T02:25:42.000Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"toolbar_____","url":"https://pause.perl.org/pause/query"},{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":"2023-06-10T02:28:01.000Z","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","url":"https://perlmonks.org/"},{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":"2023-06-01T09:16:12.000Z","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] >> 32:[0,1812,"Marionette:GetContext"] << 32:[1,1812,null,{"value":"chrome"}] >> 51:[0,1813,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1813,null,{"value":null}] >> 2277:[0,1814,"WebDriver:ExecuteScript",{"args":["menu________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1814,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1760267502,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1814,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794677822,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] >> 32:[0,1815,"Marionette:GetContext"] << 32:[1,1815,null,{"value":"chrome"}] >> 51:[0,1816,"Marionette:SetContext",{"value":"chrome"}] @@ -7165,7 +7195,7 @@ >> 51:[0,1818,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1818,null,{"value":null}] >> 2277:[0,1819,"WebDriver:ExecuteScript",{"args":["toolbar_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1819,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1760267502,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1819,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794677822,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] >> 32:[0,1820,"Marionette:GetContext"] << 32:[1,1820,null,{"value":"chrome"}] >> 51:[0,1821,"Marionette:SetContext",{"value":"chrome"}] @@ -7175,7 +7205,7 @@ >> 51:[0,1823,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1823,null,{"value":null}] >> 2277:[0,1824,"WebDriver:ExecuteScript",{"args":["tags________"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 173:[1,1824,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1760267502,"lastModified":1760267508,"parentGuid":"root________","childCount":4}}] +<< 173:[1,1824,null,{"value":{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":1794677822,"lastModified":1794677826,"parentGuid":"root________","childCount":4}}] >> 32:[0,1825,"Marionette:GetContext"] << 32:[1,1825,null,{"value":"chrome"}] >> 51:[0,1826,"Marionette:SetContext",{"value":"chrome"}] @@ -7185,7 +7215,7 @@ >> 51:[0,1828,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1828,null,{"value":null}] >> 2277:[0,1829,"WebDriver:ExecuteScript",{"args":["unfiled_____"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 176:[1,1829,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1760267502,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +<< 176:[1,1829,null,{"value":{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":1794677822,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] >> 32:[0,1830,"Marionette:GetContext"] << 32:[1,1830,null,{"value":"chrome"}] >> 51:[0,1831,"Marionette:SetContext",{"value":"chrome"}] @@ -7195,7 +7225,7 @@ >> 51:[0,1833,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1833,null,{"value":null}] >> 2277:[0,1834,"WebDriver:ExecuteScript",{"args":["mobile______"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 175:[1,1834,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1760267502,"lastModified":1760267502,"parentGuid":"root________","childCount":0}}] +<< 175:[1,1834,null,{"value":{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":1794677822,"lastModified":1794677822,"parentGuid":"root________","childCount":0}}] >> 32:[0,1835,"Marionette:GetContext"] << 32:[1,1835,null,{"value":"chrome"}] >> 51:[0,1836,"Marionette:SetContext",{"value":"chrome"}] @@ -7518,7 +7548,7 @@ << 33:[1,1994,null,{"value":"content"}] >> 51:[0,1995,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,1995,null,{"value":null}] ->> 847:[0,1996,"WebDriver:ExecuteScript",{"args":["browser.no_such_key","Can't be real:3542677"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] +>> 845:[0,1996,"WebDriver:ExecuteScript",{"args":["browser.no_such_key","Can't be real:21961"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 28:[1,1996,null,{"value":null}] >> 32:[0,1997,"Marionette:GetContext"] << 32:[1,1997,null,{"value":"chrome"}] @@ -7529,7 +7559,7 @@ >> 51:[0,2000,"Marionette:SetContext",{"value":"chrome"}] << 28:[1,2000,null,{"value":null}] >> 686:[0,2001,"WebDriver:ExecuteScript",{"args":["browser.no_such_key"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] -<< 58:[1,2001,null,{"value":["Can't be real:3542677","string"]}] +<< 56:[1,2001,null,{"value":["Can't be real:21961","string"]}] >> 32:[0,2002,"Marionette:GetContext"] << 32:[1,2002,null,{"value":"chrome"}] >> 52:[0,2003,"Marionette:SetContext",{"value":"content"}] @@ -7595,21 +7625,21 @@ >> 52:[0,2033,"Marionette:SetContext",{"value":"content"}] << 28:[1,2033,null,{"value":null}] >> 36:[0,2034,"WebDriver:GetCapabilities"] -<< 729:[1,2034,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3550915,"moz:profile":"/tmp/firefox_marionette_local_RwjOliGy9Ki/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] -# Testing has been running for 47 seconds at t/01-marionette.t line 2504 +<< 727:[1,2034,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":27375,"moz:profile":"/tmp/firefox_marionette_local_byOScAm8EiW/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] +# Testing has been running for 29 seconds at t/01-marionette.t line 2504 # Starting new firefox for testing custom headers -# Testing has been running for 47 seconds at t/01-marionette.t line 2887 +# Testing has been running for 29 seconds at t/01-marionette.t line 2887 ** firefox --version -** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_xS7LWtjn_wC/profile --no-remote --new-instance --devtools -[3553020] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_DAf_5H7EiVL/profile --no-remote --new-instance --devtools +[31883] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 767:[1,1,null,{"sessionId":"4c61792b-850f-4a2f-9328-8ac9a3b8769a","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3553020,"moz:profile":"/tmp/firefox_marionette_local_xS7LWtjn_wC/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] ->> 136:[0,2,"Addon:Install",{"path":"/tmp/firefox_marionette_local_xS7LWtjn_wC/extension/har_export_trigger-0.6.1-an+fx.xpi","temporary":true}] +<< 765:[1,1,null,{"sessionId":"171fd63d-d5db-4dfa-aec9-ee42ac9a40c7","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":31883,"moz:profile":"/tmp/firefox_marionette_local_DAf_5H7EiVL/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] +>> 136:[0,2,"Addon:Install",{"path":"/tmp/firefox_marionette_local_DAf_5H7EiVL/extension/har_export_trigger-0.6.1-an+fx.xpi","temporary":true}] << 54:[1,2,null,{"value":"harexporttrigger@getfirebug.com"}] >> 179:[0,3,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 66:[1,3,null,{"value":"OpPThyus10p6rz02kvfNbhtzLc1a9xx9kOFBVRuQ2hg"}] +<< 66:[1,3,null,{"value":"hhI_x_ZTrIy8VCYBK4aw2bElbyI-Nstck_zVhCpCTYU"}] >> 29:[0,4,"Marionette:GetContext"] << 30:[1,4,null,{"value":"content"}] >> 48:[0,5,"Marionette:SetContext",{"value":"chrome"}] @@ -7714,7 +7744,7 @@ << 31:[1,54,null,{"value":"content"}] >> 49:[0,55,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,55,null,{"value":null}] ->> 895:[0,56,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lat\":-37.5,\"lng\":144.5}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] +>> 895:[0,56,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lng\":144.5,\"lat\":-37.5}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,56,null,{"value":null}] >> 30:[0,57,"Marionette:GetContext"] << 30:[1,57,null,{"value":"chrome"}] @@ -7737,7 +7767,7 @@ >> 49:[0,65,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,65,null,{"value":null}] >> 2954:[0,66,"WebDriver:ExecuteScript",{"args":[{"parentGuid":"menu________","title":"This is MetaCPAN!","type":1,"url":"https://metacpan.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); for(let name of [ \"dateAdded\", \"lastModified\" ]) { if (arguments[0][name]) { arguments[0][name] = new Date(parseInt(arguments[0][name] + \"000\", 10)); } } if (arguments[0][\"tags\"]) { let tags = arguments[0][\"tags\"]; delete arguments[0][\"tags\"]; let url = lazy.NetUtil.newURI(arguments[0][\"url\"]); taggingSvc.tagURI(url, tags); } if (arguments[0][\"keyword\"]) { let keyword = arguments[0][\"keyword\"]; delete arguments[0][\"keyword\"]; let url = arguments[0][\"url\"]; lazy.PlacesUtils.keywords.insert({ \"url\": url, \"keyword\": keyword }); } let bookmarkStatus = (async function(bookmarkArguments) { let exists = await lazy.Bookmarks.fetch({ \"guid\": bookmarkArguments[\"guid\"] }); let bookmark; if (exists) { bookmarkArguments[\"index\"] = exists[\"index\"]; bookmark = lazy.Bookmarks.update(bookmarkArguments); } else { bookmark = lazy.Bookmarks.insert(bookmarkArguments); } let result = await bookmark; if (bookmarkArguments[\"url\"]) { let iconUrl = bookmarkArguments[\"iconUrl\"]; if (!iconUrl) { iconUrl = 'fake-favicon-uri:' + bookmarkArguments[\"url\"]; } let url = lazy.NetUtil.newURI(bookmarkArguments[\"url\"]); let rIconUrl = lazy.NetUtil.newURI(iconUrl); if (bookmarkArguments[\"icon\"]) { let icon = bookmarkArguments[\"icon\"]; if (lazy.PlacesUtils.favicons.setFaviconForPage) { let iconDataUrl = lazy.NetUtil.newURI(icon); lazy.PlacesUtils.favicons.setFaviconForPage( url, rIconUrl, iconDataUrl ); } else { lazy.PlacesUtils.favicons.replaceFaviconDataFromDataURL( rIconUrl, icon ); let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, false, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } else { if (lazy.PlacesUtils.favicons.setFaviconForPage) { } else if (lazy.PlacesUtils.favicons.setAndFetchFaviconForPage) { let iconResult = lazy.PlacesUtils.favicons.setAndFetchFaviconForPage( url, rIconUrl, true, lazy.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ); } } } return bookmark; })(arguments[0]); return bookmarkStatus; "}] -<< 231:[1,66,null,{"value":{"parentGuid":"menu________","title":"This is MetaCPAN!","type":1,"url":"https://metacpan.org/","index":0,"dateAdded":"2025-10-12T11:12:00.244Z","lastModified":"2025-10-12T11:12:00.244Z","guid":"oIBACh3_8ChP"}}] +<< 231:[1,66,null,{"value":{"parentGuid":"menu________","title":"This is MetaCPAN!","type":1,"url":"https://metacpan.org/","index":0,"dateAdded":"2026-11-14T17:37:13.649Z","lastModified":"2026-11-14T17:37:13.649Z","guid":"BzgYZwEiJA-8"}}] >> 30:[0,67,"Marionette:GetContext"] << 30:[1,67,null,{"value":"chrome"}] >> 50:[0,68,"Marionette:SetContext",{"value":"content"}] @@ -7747,13 +7777,13 @@ >> 49:[0,70,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,70,null,{"value":null}] >> 807:[0,71,"WebDriver:ExecuteScript",{"args":["https://metacpan.org/"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 233:[1,71,null,{"value":[{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-12T11:12:00.244Z","lastModified":"2025-10-12T11:12:00.244Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] +<< 233:[1,71,null,{"value":[{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-14T17:37:13.649Z","lastModified":"2026-11-14T17:37:13.649Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 30:[0,72,"Marionette:GetContext"] << 30:[1,72,null,{"value":"chrome"}] >> 49:[0,73,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,73,null,{"value":null}] ->> 2275:[0,74,"WebDriver:ExecuteScript",{"args":["oIBACh3_8ChP"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 209:[1,74,null,{"value":{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1760267520,"lastModified":1760267520,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] +>> 2275:[0,74,"WebDriver:ExecuteScript",{"args":["BzgYZwEiJA-8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 209:[1,74,null,{"value":{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794677833,"lastModified":1794677833,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 30:[0,75,"Marionette:GetContext"] << 30:[1,75,null,{"value":"chrome"}] >> 49:[0,76,"Marionette:SetContext",{"value":"chrome"}] @@ -7767,13 +7797,13 @@ >> 49:[0,80,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,80,null,{"value":null}] >> 815:[0,81,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 233:[1,81,null,{"value":[{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-12T11:12:00.244Z","lastModified":"2025-10-12T11:12:00.244Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] +<< 233:[1,81,null,{"value":[{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-14T17:37:13.649Z","lastModified":"2026-11-14T17:37:13.649Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 30:[0,82,"Marionette:GetContext"] << 30:[1,82,null,{"value":"chrome"}] >> 49:[0,83,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,83,null,{"value":null}] ->> 2275:[0,84,"WebDriver:ExecuteScript",{"args":["oIBACh3_8ChP"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 209:[1,84,null,{"value":{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1760267520,"lastModified":1760267520,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] +>> 2275:[0,84,"WebDriver:ExecuteScript",{"args":["BzgYZwEiJA-8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 209:[1,84,null,{"value":{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794677833,"lastModified":1794677833,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 30:[0,85,"Marionette:GetContext"] << 30:[1,85,null,{"value":"chrome"}] >> 49:[0,86,"Marionette:SetContext",{"value":"chrome"}] @@ -7787,13 +7817,13 @@ >> 49:[0,90,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,90,null,{"value":null}] >> 815:[0,91,"WebDriver:ExecuteScript",{"args":[{"url":"https://metacpan.org/"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 233:[1,91,null,{"value":[{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-12T11:12:00.244Z","lastModified":"2025-10-12T11:12:00.244Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] +<< 233:[1,91,null,{"value":[{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-14T17:37:13.649Z","lastModified":"2026-11-14T17:37:13.649Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 30:[0,92,"Marionette:GetContext"] << 30:[1,92,null,{"value":"chrome"}] >> 49:[0,93,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,93,null,{"value":null}] ->> 2275:[0,94,"WebDriver:ExecuteScript",{"args":["oIBACh3_8ChP"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 209:[1,94,null,{"value":{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1760267520,"lastModified":1760267520,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] +>> 2275:[0,94,"WebDriver:ExecuteScript",{"args":["BzgYZwEiJA-8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 209:[1,94,null,{"value":{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794677833,"lastModified":1794677833,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 30:[0,95,"Marionette:GetContext"] << 30:[1,95,null,{"value":"chrome"}] >> 49:[0,96,"Marionette:SetContext",{"value":"chrome"}] @@ -7807,13 +7837,13 @@ >> 50:[0,100,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,100,null,{"value":null}] >> 804:[0,101,"WebDriver:ExecuteScript",{"args":["This is MetaCPAN!"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 234:[1,101,null,{"value":[{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-12T11:12:00.244Z","lastModified":"2025-10-12T11:12:00.244Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] +<< 234:[1,101,null,{"value":[{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-14T17:37:13.649Z","lastModified":"2026-11-14T17:37:13.649Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 31:[0,102,"Marionette:GetContext"] << 31:[1,102,null,{"value":"chrome"}] >> 50:[0,103,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,103,null,{"value":null}] ->> 2276:[0,104,"WebDriver:ExecuteScript",{"args":["oIBACh3_8ChP"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 210:[1,104,null,{"value":{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1760267520,"lastModified":1760267520,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] +>> 2276:[0,104,"WebDriver:ExecuteScript",{"args":["BzgYZwEiJA-8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 210:[1,104,null,{"value":{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794677833,"lastModified":1794677833,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 31:[0,105,"Marionette:GetContext"] << 31:[1,105,null,{"value":"chrome"}] >> 50:[0,106,"Marionette:SetContext",{"value":"chrome"}] @@ -7827,13 +7857,13 @@ >> 50:[0,110,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,110,null,{"value":null}] >> 814:[0,111,"WebDriver:ExecuteScript",{"args":[{"title":"This is MetaCPAN!"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return lazy.Bookmarks.search(arguments[0]); "}] -<< 234:[1,111,null,{"value":[{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2025-10-12T11:12:00.244Z","lastModified":"2025-10-12T11:12:00.244Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] +<< 234:[1,111,null,{"value":[{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-14T17:37:13.649Z","lastModified":"2026-11-14T17:37:13.649Z","parentGuid":"menu________","url":"https://metacpan.org/"}]}] >> 31:[0,112,"Marionette:GetContext"] << 31:[1,112,null,{"value":"chrome"}] >> 50:[0,113,"Marionette:SetContext",{"value":"chrome"}] << 27:[1,113,null,{"value":null}] ->> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["oIBACh3_8ChP"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] -<< 210:[1,114,null,{"value":{"guid":"oIBACh3_8ChP","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1760267520,"lastModified":1760267520,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] +>> 2276:[0,114,"WebDriver:ExecuteScript",{"args":["BzgYZwEiJA-8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.NetUtil = ChromeUtils.import(\"resource://gre/modules/NetUtil.jsm\").NetUtil; } let taggingSvc = Components.classes[\"@mozilla.org/browser/tagging-service;1\"].getService(Components.interfaces.nsITaggingService); return (async function(guidOrInfo) { let bookmark = await lazy.Bookmarks.fetch(guidOrInfo); if (bookmark) { for(let name of [ \"dateAdded\", \"lastModified\" ]) { bookmark[name] = Math.floor(bookmark[name] / 1000); } } if ((bookmark) && (\"url\" in bookmark)) { let keyword = await lazy.PlacesUtils.keywords.fetch({ \"url\": bookmark[\"url\"] }); if (keyword) { bookmark[\"keyword\"] = keyword[\"keyword\"]; } let url = lazy.NetUtil.newURI(bookmark[\"url\"]); bookmark[\"tags\"] = await lazy.PlacesUtils.tagging.getTagsForURI(url); let serviceResult; if (lazy.PlacesUtils.favicons.getFaviconForPage) { serviceResult = await PlacesUtils.favicons.getFaviconForPage(url, 0); } let addFavicon = function(pageUrl) { return new Promise((resolve, reject) => { if (PlacesUtils.favicons.getFaviconForPage) { if (serviceResult === null ) { resolve([]); } else { resolve([ serviceResult.uri, serviceResult.rawData.length, serviceResult.rawData, serviceResult.mimeType, serviceResult.width ]); } } else { PlacesUtils.favicons.getFaviconDataForPage( pageUrl, function (pageUrl, dataLen, data, mimeType, size) { resolve([ pageUrl, dataLen, data, mimeType, size ]); } ); } })}; let awaitResult = await addFavicon(lazy.PlacesUtils.toURI(bookmark[\"url\"])); if (awaitResult[0]) { bookmark[\"iconUrl\"] = awaitResult[0].spec; } let iconAscii = btoa(String.fromCharCode(...new Uint8Array(awaitResult[2]))); if (iconAscii) { bookmark[\"icon\"] = \"data:\" + awaitResult[3] + \";base64,\" + iconAscii; } } return bookmark; })(arguments[0]); "}] +<< 210:[1,114,null,{"value":{"guid":"BzgYZwEiJA-8","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794677833,"lastModified":1794677833,"parentGuid":"menu________","url":"https://metacpan.org/","tags":[]}}] >> 31:[0,115,"Marionette:GetContext"] << 31:[1,115,null,{"value":"chrome"}] >> 50:[0,116,"Marionette:SetContext",{"value":"chrome"}] @@ -7953,22 +7983,22 @@ >> 51:[0,173,"Marionette:SetContext",{"value":"content"}] << 27:[1,173,null,{"value":null}] >> 35:[0,174,"WebDriver:GetCapabilities"] -<< 728:[1,174,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3553020,"moz:profile":"/tmp/firefox_marionette_local_xS7LWtjn_wC/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] +<< 726:[1,174,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":31883,"moz:profile":"/tmp/firefox_marionette_local_DAf_5H7EiVL/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] # Starting new firefox for testing metacpan and iframe, with find, downloads, extensions and actions -# Testing has been running for 55 seconds at t/01-marionette.t line 3063 +# Testing has been running for 34 seconds at t/01-marionette.t line 3063 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_3fc64GhpUQB/profile --no-remote --new-instance -[3553782] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_NIkxK3PYm8x/profile --no-remote --new-instance +[35963] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 180:[0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"pageLoadStrategy":"eager"}},"pageLoadStrategy":"eager"}] -<< 807:[1,1,null,{"sessionId":"e39be916-7be8-49cc-8db5-3ca37967afc2","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"libwww-perl/6.72","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3553782,"moz:profile":"/tmp/firefox_marionette_local_3fc64GhpUQB/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"pageLoadStrategy":"eager"}},"proxy":{}}}] +<< 805:[1,1,null,{"sessionId":"06d85670-5436-4516-b343-6b36a2985cfb","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"libwww-perl/6.72","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":35963,"moz:profile":"/tmp/firefox_marionette_local_NIkxK3PYm8x/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"eager","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"capabilities":{"requiredCapabilities":{"acceptInsecureCerts":true,"pageLoadStrategy":"eager"}},"proxy":{}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 76:[0,3,"WebDriver:SetTimeouts",{"implicit":0,"pageLoad":600000,"script":5432}] << 25:[1,3,null,{"value":null}] >> 179:[0,4,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 66:[1,4,null,{"value":"IENaE8twAesRt6fWJP3L9CoBumauLxmdE7SSVUEvRsA"}] +<< 66:[1,4,null,{"value":"0HYRswrqgXNogJ3mGCNyn1qBTmXX1TxrS3b2AiKxlUM"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] @@ -8092,20 +8122,20 @@ >> 52:[0,175,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,175,null,{"cause":"shutdown","forced":false,"in_app":true}] # Starting new firefox for testing JSON from localhost and alerts and extensions -# Testing has been running for 61 seconds at t/01-marionette.t line 4370 +# Testing has been running for 38 seconds at t/01-marionette.t line 4370 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_2yDWgPA0yud/profile --no-remote --new-instance -[3554598] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_dtK0gCfN8VN/profile --no-remote --new-instance +[38070] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 767:[1,1,null,{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3554598,"moz:profile":"/tmp/firefox_marionette_local_2yDWgPA0yud/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] +<< 765:[1,1,null,{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":38070,"moz:profile":"/tmp/firefox_marionette_local_dtK0gCfN8VN/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 29:[0,2,"WebDriver:GetTimeouts"] << 58:[1,2,null,{"implicit":0,"pageLoad":300000,"script":30000}] >> 82:[0,3,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":30000}] << 25:[1,3,null,{"value":null}] >> 179:[0,4,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 66:[1,4,null,{"value":"7zImOQqpF_hbuVwGzoRPWWvAnD4RiNDbngCddf5HfZQ"}] +<< 66:[1,4,null,{"value":"zZo1X-R5-_r0kutJsTmrX8cMr9cn74t76uUYwO2Sft0"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] @@ -8199,16 +8229,16 @@ >> 51:[0,65,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 61:[1,65,null,{"cause":"shutdown","forced":false,"in_app":true}] >> 34:[0,50,"WebDriver:GetCapabilities"] -<< 732:[1,50,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3554598,"moz:profile":"/tmp/firefox_marionette_local_2yDWgPA0yud/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":987654,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] +<< 730:[1,50,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":38070,"moz:profile":"/tmp/firefox_marionette_local_dtK0gCfN8VN/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":987654,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}}] # Original install path is /build/reproducible-path/libfirefox-marionette-perl-1.68/t/addons/borderify/manifest.json # Installing extension from /build/reproducible-path/libfirefox-marionette-perl-1.68/t/addons/borderify/manifest.json ->> 118:[0,51,"Addon:Install",{"path":"/tmp/firefox_marionette_local_2yDWgPA0yud/extension/1_borderify.xpi","temporary":true}] -<< 80:[1,51,null,{"value":"8f306a5ceafb1f8ff6a8f5411a66716c8cac3c65@temporary-addon"}] ->> 171:[0,52,"WebDriver:Navigate",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/iframe.html"}] +>> 118:[0,51,"Addon:Install",{"path":"/tmp/firefox_marionette_local_dtK0gCfN8VN/extension/1_borderify.xpi","temporary":true}] +<< 80:[1,51,null,{"value":"cf1e2ce7d3f1f1801b94ae59d6854e1c57964bb9@temporary-addon"}] +>> 171:[0,52,"WebDriver:Navigate",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/iframe.html"}] << 26:[1,52,null,{"value":null}] >> 79:[0,53,"WebDriver:ExecuteScript",{"script":"return document.body.style.border"}] << 37:[1,53,null,{"value":"5px solid red"}] ->> 90:[0,54,"Addon:Uninstall",{"id":"8f306a5ceafb1f8ff6a8f5411a66716c8cac3c65@temporary-addon"}] +>> 90:[0,54,"Addon:Uninstall",{"id":"cf1e2ce7d3f1f1801b94ae59d6854e1c57964bb9@temporary-addon"}] << 26:[1,54,null,{"value":null}] >> 30:[0,55,"Marionette:GetContext"] << 31:[1,55,null,{"value":"content"}] @@ -8224,38 +8254,38 @@ << 31:[1,60,null,{"value":"content"}] >> 49:[0,61,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,61,null,{"value":null}] ->> 887:[0,62,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","data:application/json,{\"location\":{\"lat\":-37.123,\"lng\":144.456}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] +>> 887:[0,62,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","data:application/json,{\"location\":{\"lng\":144.456,\"lat\":-37.123}}"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); switch (branch.getPrefType(arguments[0])) { case branch.PREF_INT: branch.setIntPref(arguments[0], arguments[1]); break; case branch.PREF_BOOL: branch.setBoolPref(arguments[0], arguments[1] ? true : false); break; case branch.PREF_STRING: default: if (branch.setStringPref) { branch.setStringPref(arguments[0], arguments[1]); } else { let newString = Components.classes[\"@mozilla.org/supports-string;1\"].createInstance(Components.interfaces.nsISupportsString); newString.data = arguments[1]; branch.setComplexValue(arguments[0], Components.interfaces.nsISupportsString, newString); } } "}] << 26:[1,62,null,{"value":null}] >> 30:[0,63,"Marionette:GetContext"] << 30:[1,63,null,{"value":"chrome"}] >> 50:[0,64,"Marionette:SetContext",{"value":"content"}] << 26:[1,64,null,{"value":null}] ->> 171:[0,65,"WebDriver:Navigate",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/iframe.html"}] +>> 171:[0,65,"WebDriver:Navigate",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/iframe.html"}] << 26:[1,65,null,{"value":null}] >> 862:[0,66,"WebDriver:ExecuteScript",{"script":"return (async function() { function getGeo() { return new Promise((resolve, reject) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(resolve, reject, { maximumAge: 0, enableHighAccuracy: true }); } else { reject(\"navigator.geolocation is unavailable\"); } }) }; return await getGeo().then((response) => { let d = new Date(); return { \"timezone_offset\": d.getTimezoneOffset(), \"latitude\": response[\"coords\"][\"latitude\"], \"longitude\": response[\"coords\"][\"longitude\"], \"altitude\": response[\"coords\"][\"altitude\"], \"accuracy\": response[\"coords\"][\"accuracy\"], \"altitudeAccuracy\": response[\"coords\"][\"altitudeAccuracy\"], \"heading\": response[\"coords\"][\"heading\"], \"speed\": response[\"coords\"][\"speed\"], }; }).catch((err) => { throw err.message }); })(); "}] -<< 165:[1,66,null,{"value":{"timezone_offset":720,"latitude":-37.123,"longitude":144.456,"altitude":null,"accuracy":0,"altitudeAccuracy":null,"heading":null,"speed":null}}] -# Accepting connections for [Test HTTP Content Server for 3542677] ->> 124:[0,67,"WebDriver:Navigate",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f","url":"http://127.0.0.1:51531/?format=JSON"}] +<< 166:[1,66,null,{"value":{"timezone_offset":-840,"latitude":-37.123,"longitude":144.456,"altitude":null,"accuracy":0,"altitudeAccuracy":null,"heading":null,"speed":null}}] +>> 124:[0,67,"WebDriver:Navigate",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314","url":"http://127.0.0.1:39819/?format=JSON"}] +# Accepting connections for [Test HTTP Content Server for 21961] # Accepted connection # Accepted connection # Got request for /?format=JSON << 26:[1,67,null,{"value":null}] ->> 85:[0,68,"WebDriver:GetPageSource",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f"}] +>> 85:[0,68,"WebDriver:GetPageSource",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314"}] << 196:[1,68,null,{"value":"
{ \"id\": \"5\", \"value\": \"sömething\"}"}]
->> 85:[0,69,"WebDriver:GetPageSource",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f"}]
+>> 85:[0,69,"WebDriver:GetPageSource",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314"}]
<< 196:[1,69,null,{"value":"{ \"id\": \"5\", \"value\": \"sömething\"}"}]
# { "id": "5", "value": "sömething"}
->> 85:[0,70,"WebDriver:GetPageSource",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f"}]
+>> 85:[0,70,"WebDriver:GetPageSource",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314"}]
<< 196:[1,70,null,{"value":"{ \"id\": \"5\", \"value\": \"sömething\"}"}]
->> 85:[0,71,"WebDriver:GetPageSource",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f"}]
+>> 85:[0,71,"WebDriver:GetPageSource",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314"}]
<< 196:[1,71,null,{"value":"{ \"id\": \"5\", \"value\": \"sömething\"}"}]
->> 123:[0,72,"WebDriver:Navigate",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f","url":"http://127.0.0.1:51531/?format=txt"}]
+>> 123:[0,72,"WebDriver:Navigate",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314","url":"http://127.0.0.1:39819/?format=txt"}]
# Accepted connection
# Got request for /?format=txt
<< 26:[1,72,null,{"value":null}]
->> 85:[0,73,"WebDriver:GetPageSource",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f"}]
+>> 85:[0,73,"WebDriver:GetPageSource",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314"}]
<< 173:[1,73,null,{"value":"This is ordinary text"}] ->> 85:[0,74,"WebDriver:GetPageSource",{"sessionId":"9f641c40-dd7a-4aa5-b190-ad072bdd528f"}] +>> 85:[0,74,"WebDriver:GetPageSource",{"sessionId":"50275648-5a91-485a-89ad-1acdd7895314"}] << 173:[1,74,null,{"value":"
This is ordinary text"}] # This is ordinary text >> 30:[0,75,"Marionette:GetContext"] @@ -8263,7 +8293,7 @@ >> 49:[0,76,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,76,null,{"value":null}] >> 693:[0,77,"WebDriver:ExecuteScript",{"args":["browser.download.downloadDir"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] -<< 86:[1,77,null,{"value":["/tmp/firefox_marionette_local_2yDWgPA0yud/downloads","string"]}] +<< 86:[1,77,null,{"value":["/tmp/firefox_marionette_local_dtK0gCfN8VN/downloads","string"]}] >> 30:[0,78,"Marionette:GetContext"] << 30:[1,78,null,{"value":"chrome"}] >> 50:[0,79,"Marionette:SetContext",{"value":"content"}] @@ -8278,12 +8308,12 @@ << 64:[1,83,null,{"implicit":987654,"pageLoad":300000,"script":30000}] >> 84:[0,84,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":300000}] << 26:[1,84,null,{"value":null}] ->> 516:[0,85,"WebDriver:ExecuteScript",{"args":["http://127.0.0.1:51531/?format=txt","/tmp/firefox_marionette_local_2yDWgPA0yud/downloads/firefox_marionette_download_bR_fSkfX5AJ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Downloads: \"resource://gre/modules/Downloads.sys.mjs\", }); } else { lazy.Downloads = ChromeUtils.import(\"resource://gre/modules/Downloads.jsm\").Downloads; } return Downloads.fetch({ url: arguments[0] }, { path: arguments[1] }); "}] +>> 516:[0,85,"WebDriver:ExecuteScript",{"args":["http://127.0.0.1:39819/?format=txt","/tmp/firefox_marionette_local_dtK0gCfN8VN/downloads/firefox_marionette_download_ILzOwPvzHFD"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Downloads: \"resource://gre/modules/Downloads.sys.mjs\", }); } else { lazy.Downloads = ChromeUtils.import(\"resource://gre/modules/Downloads.jsm\").Downloads; } return Downloads.fetch({ url: arguments[0] }, { path: arguments[1] }); "}] # Accepted connection # Got request for /?format=txt -[Parent 3554598, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 +[Parent 38070, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 -(firefox-esr:3554598): GLib-GObject-CRITICAL **: 11:12:13.766: g_object_get: assertion 'G_IS_OBJECT (object)' failed +(firefox-esr:38070): GLib-GObject-CRITICAL **: 17:37:22.211: g_object_get: assertion 'G_IS_OBJECT (object)' failed << 26:[1,85,null,{"value":null}] >> 30:[0,86,"WebDriver:GetTimeouts"] << 65:[1,86,null,{"implicit":987654,"pageLoad":300000,"script":300000}] @@ -8298,7 +8328,7 @@ >> 49:[0,91,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,91,null,{"value":null}] >> 693:[0,92,"WebDriver:ExecuteScript",{"args":["browser.download.downloadDir"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); let result = [ null ]; switch (branch.getPrefType(arguments[0])) { case branch.PREF_STRING: result = [ branch.getStringPref ? branch.getStringPref(arguments[0]) : branch.getComplexValue(arguments[0], Components.interfaces.nsISupportsString).data, 'string' ]; break; case branch.PREF_INT: result = [ branch.getIntPref(arguments[0]), 'integer' ]; break; case branch.PREF_BOOL: result = [ branch.getBoolPref(arguments[0]), 'boolean' ]; } return result; "}] -<< 86:[1,92,null,{"value":["/tmp/firefox_marionette_local_2yDWgPA0yud/downloads","string"]}] +<< 86:[1,92,null,{"value":["/tmp/firefox_marionette_local_dtK0gCfN8VN/downloads","string"]}] >> 30:[0,93,"Marionette:GetContext"] << 30:[1,93,null,{"value":"chrome"}] >> 50:[0,94,"Marionette:SetContext",{"value":"content"}] @@ -8313,12 +8343,12 @@ << 64:[1,98,null,{"implicit":987654,"pageLoad":300000,"script":30000}] >> 83:[0,99,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":50000}] << 26:[1,99,null,{"value":null}] ->> 517:[0,100,"WebDriver:ExecuteScript",{"args":["http://127.0.0.1:51531/?format=txt","/tmp/firefox_marionette_local_2yDWgPA0yud/downloads/firefox_marionette_download_WtZ12uKczdQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Downloads: \"resource://gre/modules/Downloads.sys.mjs\", }); } else { lazy.Downloads = ChromeUtils.import(\"resource://gre/modules/Downloads.jsm\").Downloads; } return Downloads.fetch({ url: arguments[0] }, { path: arguments[1] }); "}] +>> 517:[0,100,"WebDriver:ExecuteScript",{"args":["http://127.0.0.1:39819/?format=txt","/tmp/firefox_marionette_local_dtK0gCfN8VN/downloads/firefox_marionette_download_XFIikEPEDzQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Downloads: \"resource://gre/modules/Downloads.sys.mjs\", }); } else { lazy.Downloads = ChromeUtils.import(\"resource://gre/modules/Downloads.jsm\").Downloads; } return Downloads.fetch({ url: arguments[0] }, { path: arguments[1] }); "}] # Accepted connection # Got request for /?format=txt -[Parent 3554598, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 +[Parent 38070, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 -(firefox-esr:3554598): GLib-GObject-CRITICAL **: 11:12:13.822: g_object_get: assertion 'G_IS_OBJECT (object)' failed +(firefox-esr:38070): GLib-GObject-CRITICAL **: 17:37:22.240: g_object_get: assertion 'G_IS_OBJECT (object)' failed << 27:[1,100,null,{"value":null}] >> 31:[0,101,"WebDriver:GetTimeouts"] << 65:[1,101,null,{"implicit":987654,"pageLoad":300000,"script":50000}] @@ -8344,21 +8374,21 @@ << 27:[1,110,null,{"value":null}] >> 52:[0,111,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 62:[1,111,null,{"cause":"shutdown","forced":false,"in_app":true}] -# Starting new firefox for testing proxy by argument, capabilities, window switching and certificates using proxy port TCP/47403 +# Starting new firefox for testing proxy by argument, capabilities, window switching and certificates using proxy port TCP/39901 # Starting new firefox for testing %ENV proxy, min/maxing and killing firefox # Starting new firefox for testing visibility and TLS proxy servers # Starting new firefox for shortcut TLS proxy servers # Starting new firefox for shortcut normal proxy servers -# Testing has been running for 71 seconds at t/01-marionette.t line 5407 +# Testing has been running for 46 seconds at t/01-marionette.t line 5407 ** firefox --version -** firefox -marionette -safe-mode -headless -profile /tmp/firefox_marionette_local_IheDEeLorgo/profile --no-remote --new-instance -[3555314] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -safe-mode -headless -profile /tmp/firefox_marionette_local_HCVkItrJsHo/profile --no-remote --new-instance +[42982] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 767:[1,1,null,{"sessionId":"8048705f-5947-46e5-959b-d1525967203b","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3555314,"moz:profile":"/tmp/firefox_marionette_local_IheDEeLorgo/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] +<< 765:[1,1,null,{"sessionId":"cbfd815e-a77c-4f19-93ba-5286639cd37d","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":42982,"moz:profile":"/tmp/firefox_marionette_local_HCVkItrJsHo/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 179:[0,2,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 66:[1,2,null,{"value":"JAdhmWLkDWxOePLHe8gZ_zixxmqwQqKNbVVQA6KJeHA"}] +<< 66:[1,2,null,{"value":"dIl0ubczZ6-qM97jfv9S3DVbgrQDueLwS5y1F8a6HaI"}] >> 29:[0,3,"Marionette:GetContext"] << 30:[1,3,null,{"value":"content"}] >> 49:[0,4,"Marionette:SetContext",{"value":"content"}] @@ -8369,8 +8399,8 @@ << 927:[1,6,{"error":"unsupported operation","message":"System access is required to switch to chrome scope. Start Firefox with \"-remote-allow-system-access\" to enable it.","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5\nUnsupportedOperationError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:927:5\nset@chrome://remote/content/marionette/driver.sys.mjs:357:13\nGeckoDriver.prototype.setContext@chrome://remote/content/marionette/driver.sys.mjs:830:3\ndespatch@chrome://remote/content/marionette/server.sys.mjs:318:40\nexecute@chrome://remote/content/marionette/server.sys.mjs:289:16\nonPacket/<@chrome://remote/content/marionette/server.sys.mjs:262:20\nonPacket@chrome://remote/content/marionette/server.sys.mjs:263:9\n_onJSONObjectReady/<@chrome://remote/content/marionette/transport.sys.mjs:494:20\n"},null] >> 50:[0,7,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 60:[1,7,null,{"cause":"shutdown","forced":false,"in_app":true}] -# Testing has been running for 77 seconds at t/01-marionette.t line 5425 -# Total runtime is 90 seconds +# Testing has been running for 51 seconds at t/01-marionette.t line 5425 +# Total runtime is 60 seconds t/01-marionette.t ..... ok 1 - Read 0 existing profiles ok 2 - No default profile @@ -8392,7 +8422,7 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 18 - $firefox->root_directory() is /tmp/firefox_marionette_local_5WVARJYP_2o +ok 18 - $firefox->root_directory() is /tmp/firefox_marionette_local_sP1Bds3S0Lq ok 19 - $firefox->debug() returns $ENV{FIREFOX_DEBUG}:1 ok 20 - Firefox has started in Marionette mode ok 21 - application/pkcs10 has been added to mime_types @@ -8403,7 +8433,7 @@ ok 26 - Firefox is currently running in linux ok 27 - Firefox is currently running on aarch64 ok 28 - Firefox Platform version is 6.12.48+deb13-cloud-arm64 -ok 29 - Firefox::Marionette->root_directory() returns the exising local directory:/tmp/firefox_marionette_local_5WVARJYP_2o +ok 29 - Firefox::Marionette->root_directory() returns the exising local directory:/tmp/firefox_marionette_local_sP1Bds3S0Lq ok 30 - $firefox->application_type() returns gecko ok 31 - $firefox->marionette_protocol() returns 3 ok 32 - $firefox->window_type() returns 'navigator:browser':navigator:browser @@ -8451,7 +8481,7 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 72 - $firefox->root_directory() is /tmp/firefox_marionette_local_yoVwaXXrOlw +ok 72 - $firefox->root_directory() is /tmp/firefox_marionette_local_qLNyq2BdQkm ok 73 - Firefox has started in Marionette mode with definable capabilities set to known values ok 74 - $firefox->har() throws an exception when har has not been setup:javascript error: TypeError: can't access property "triggerExport", window.HAR is undefined at t/01-marionette.t line 1210 ok 75 - Retrieved bookmark from edge import @@ -8460,14 +8490,14 @@ ok 78 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 79 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 80 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 -ok 81 - $bookmark->parent_guid() xaO6RGQCoj-e -ok 82 - $bookmark->guid() is bt1V2WsGC43S +ok 81 - $bookmark->parent_guid() HgTC70qvvCzB +ok 82 - $bookmark->guid() is 5YVGDs4tSsHU ok 83 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ ok 84 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 ok 85 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates ok 86 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 87 - $bookmark->parent_guid() is menu________ -ok 88 - $bookmark->guid() is aUJcwtiJSQoT +ok 88 - $bookmark->guid() is 2AX_JfcoYcQK ok 89 - $bookmark->icon_url() is not defined ok 90 - $bookmark->icon() is not defined ok 91 - $firefox->sleep_time_in_ms() is 5 milliseconds @@ -8484,22 +8514,22 @@ ok 102 - $capabilities->moz_headless() is set to false ok 103 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 104 - $capabilities->proxy()->type() is 'manual' -ok 105 - $capabilities->proxy()->http() is 'localhost:37483':localhost:37483 -ok 106 - $capabilities->proxy()->https() is 'localhost:44347' +ok 105 - $capabilities->proxy()->http() is 'localhost:53793':localhost:53793 +ok 106 - $capabilities->proxy()->https() is 'localhost:59441' ok 107 - $capabilities->timeouts()->page_load() is '54,321' ok 108 - $capabilities->timeouts()->script() is '4,567' ok 109 - $capabilities->timeouts()->implicit() is '6,543' -ok 110 - $capabilities->proxy()->socks() is 'localhost:47723':localhost:47723 +ok 110 - $capabilities->proxy()->socks() is 'localhost:54841':localhost:54841 ok 111 - $capabilities->proxy()->socks_version() is 5 ok 112 - $capabilities->proxy()->none() is a reference to a list with 1 element ok 113 # skip Skipping proxy forks except for RELEASE_TESTING=1 ok 114 - Firefox has closed with an exit status of 0:0 [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing -1760267482700 Marionette INFO Listening on port 41353 -1760267482985 RemoteAgent INFO Proxy settings initialized: {"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:53653"} +1794677810465 Marionette INFO Listening on port 45455 [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 115 - $firefox->root_directory() is /tmp/firefox_marionette_local_Zi9kMuoTWy_ +1794677811366 RemoteAgent INFO Proxy settings initialized: {"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:53823"} +ok 115 - $firefox->root_directory() is /tmp/firefox_marionette_local_su2zcVGmnFX ok 116 - Firefox has started in Marionette mode with definable capabilities set to known values ok 117 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 118 - $capabilities->proxy()->type() is 'pac' @@ -8507,7 +8537,7 @@ ok 120 - $firefox->capabilities()->timeouts()->page_load() correctly reflects the page_load shortcut timeout ok 121 - $geo2->latitude() is correctly reported as 40:40 ok 122 - $geo2->longitude() is correctly reported as 24:24 -1760267489001 Marionette INFO Stopped listening on port 41353 +1794677813747 Marionette INFO Stopped listening on port 45455 ok 123 - Firefox has closed with an exit status of 0:0 ok 124 # skip Skipping b/c proxy seems to cause hangs ok 125 # skip Skipping b/c proxy seems to cause hangs @@ -8519,21 +8549,21 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 131 - $firefox->root_directory() is /tmp/firefox_marionette_local_QU23W6b_O63 +ok 131 - $firefox->root_directory() is /tmp/firefox_marionette_local_srTWsuk1hE1 ok 132 - Firefox has started in Marionette mode with definable capabilities set to known values ok 133 - Retrieved bookmark from chrome import as https://metacpan.org/pod/Firefox::Marionette ok 134 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette ok 135 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 ok 136 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 137 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 -ok 138 - $bookmark->parent_guid() is diJaqmLq7xeQ -ok 139 - $bookmark->guid() is oiZeMkzFq1GN +ok 138 - $bookmark->parent_guid() is mW7HSW2of92t +ok 139 - $bookmark->guid() is 8zftg0Eu-3I2 ok 140 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ ok 141 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 ok 142 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates ok 143 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 144 - $bookmark->parent_guid() is menu________ -ok 145 - $bookmark->guid() is f7QgorFpRZbE +ok 145 - $bookmark->guid() is 87hKoatjsF1d ok 146 - $bookmark->icon_url() is not defined ok 147 - $bookmark->icon() is not defined ok 148 - Retrieved the ARIA label correctly:Close @@ -8633,7 +8663,7 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 240 - $firefox->root_directory() is /tmp/firefox_marionette_local_RwjOliGy9Ki +ok 240 - $firefox->root_directory() is /tmp/firefox_marionette_local_byOScAm8EiW ok 241 - Firefox has started in Marionette mode with definable capabilities set to known values ok 242 - $firefox->import_bookmarks('/build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.json') returns itself for chaining ok 243 - Retrieved bookmark from firefox export as https://metacpan.org/pod/Firefox::Marionette @@ -8742,52 +8772,52 @@ ok 346 - $firefox->search_bookmark('https://metacpan.org/') produces more than 7 results:13 ok 347 - $firefox->import_bookmarks('/build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.html') returns itself for chaining ok 348 - $firefox->search_bookmark() returns results (1) that have a type method:1 -ok 349 - $firefox->search_bookmark() returns results (1) that have a guid method:tgS1h0BHFthI +ok 349 - $firefox->search_bookmark() returns results (1) that have a guid method:bjzC9jM0TcEb ok 350 - $firefox->search_bookmark() returns results (1) that have a guid method:0 ok 351 - $firefox->search_bookmark() returns results (1) that have a url method:https://perlmonks.org/ ok 352 - $firefox->search_bookmark() returns results (1) that have a title method:PerlMonks - The Monastery Gates ok 353 - $firefox->search_bookmark() returns results (1) that have a parent_guid method:unfiled_____ ok 354 - $firefox->search_bookmark() returns results (2) that have a type method:1 -ok 355 - $firefox->search_bookmark() returns results (2) that have a guid method:sD7UWds8792c +ok 355 - $firefox->search_bookmark() returns results (2) that have a guid method:Y0IdgsFjmZo4 ok 356 - $firefox->search_bookmark() returns results (2) that have a guid method:0 ok 357 - $firefox->search_bookmark() returns results (2) that have a url method:https://pause.perl.org/pause/query ok 358 - $firefox->search_bookmark() returns results (2) that have a title method:PAUSE: The CPAN back stage entrance ok 359 - $firefox->search_bookmark() returns results (2) that have a parent_guid method:toolbar_____ ok 360 - $firefox->search_bookmark() returns results (3) that have a type method:1 -ok 361 - $firefox->search_bookmark() returns results (3) that have a guid method:yqmjzAio9kZx +ok 361 - $firefox->search_bookmark() returns results (3) that have a guid method:_jddvHwIYuAv ok 362 - $firefox->search_bookmark() returns results (3) that have a guid method:3 ok 363 - $firefox->search_bookmark() returns results (3) that have a url method:https://github.com/david-dick/firefox-marionette ok 364 - $firefox->search_bookmark() returns results (3) that have a title method:GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol ok 365 - $firefox->search_bookmark() returns results (3) that have a parent_guid method:menu________ ok 366 - $firefox->search_bookmark() returns results (4) that have a type method:3 -ok 367 - $firefox->search_bookmark() returns results (4) that have a guid method:KMmLqJKuYhoD +ok 367 - $firefox->search_bookmark() returns results (4) that have a guid method:tVmlzKKfhM1X ok 368 - $firefox->search_bookmark() returns results (4) that have a guid method:2 ok 369 - $firefox->search_bookmark() returns results (4) that have a parent_guid method:menu________ ok 370 - $firefox->search_bookmark() returns results (5) that have a type method:1 -ok 371 - $firefox->search_bookmark() returns results (5) that have a guid method:0Z8gsDV1r6v0 +ok 371 - $firefox->search_bookmark() returns results (5) that have a guid method:9Rh6L_ww5Ohq ok 372 - $firefox->search_bookmark() returns results (5) that have a guid method:0 ok 373 - $firefox->search_bookmark() returns results (5) that have a url method:https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web ok 374 - $firefox->search_bookmark() returns results (5) that have a title method:perl 🐫 at DuckDuckGo -ok 375 - $firefox->search_bookmark() returns results (5) that have a parent_guid method:5GPHA7ifrXf- +ok 375 - $firefox->search_bookmark() returns results (5) that have a parent_guid method:cxv007oO5m2A ok 376 - $firefox->search_bookmark() returns results (6) that have a type method:2 -ok 377 - $firefox->search_bookmark() returns results (6) that have a guid method:5GPHA7ifrXf- +ok 377 - $firefox->search_bookmark() returns results (6) that have a guid method:cxv007oO5m2A ok 378 - $firefox->search_bookmark() returns results (6) that have a guid method:1 ok 379 - $firefox->search_bookmark() returns results (6) that have a title method:Searches ok 380 - $firefox->search_bookmark() returns results (6) that have a parent_guid method:menu________ ok 381 - $firefox->search_bookmark() returns results (7) that have a type method:1 -ok 382 - $firefox->search_bookmark() returns results (7) that have a guid method:wl08u9l9goEh +ok 382 - $firefox->search_bookmark() returns results (7) that have a guid method:TMGYRYFIK5Ip ok 383 - $firefox->search_bookmark() returns results (7) that have a guid method:1 ok 384 - $firefox->search_bookmark() returns results (7) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 385 - $firefox->search_bookmark() returns results (7) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org -ok 386 - $firefox->search_bookmark() returns results (7) that have a parent_guid method:KVwSziH6n33l +ok 386 - $firefox->search_bookmark() returns results (7) that have a parent_guid method:FZDYpvi99UBy ok 387 - $firefox->search_bookmark() returns results (8) that have a type method:1 -ok 388 - $firefox->search_bookmark() returns results (8) that have a guid method:MFCbFMSp0dhv +ok 388 - $firefox->search_bookmark() returns results (8) that have a guid method:ENQsoFK19qx8 ok 389 - $firefox->search_bookmark() returns results (8) that have a guid method:0 ok 390 - $firefox->search_bookmark() returns results (8) that have a url method:https://metacpan.org/pod/Firefox::Marionette ok 391 - $firefox->search_bookmark() returns results (8) that have a title method:Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org -ok 392 - $firefox->search_bookmark() returns results (8) that have a parent_guid method:KVwSziH6n33l +ok 392 - $firefox->search_bookmark() returns results (8) that have a parent_guid method:FZDYpvi99UBy ok 393 - $firefox->search_bookmark() returns results (9) that have a type method:2 -ok 394 - $firefox->search_bookmark() returns results (9) that have a guid method:KVwSziH6n33l +ok 394 - $firefox->search_bookmark() returns results (9) that have a guid method:FZDYpvi99UBy ok 395 - $firefox->search_bookmark() returns results (9) that have a guid method:0 ok 396 - $firefox->search_bookmark() returns results (9) that have a title method:CPAN ok 397 - $firefox->search_bookmark() returns results (9) that have a parent_guid method:menu________ @@ -8824,8 +8854,8 @@ ok 428 - $bookmark->content_type() is 'text/x-moz-place':text/x-moz-place ok 429 - $bookmark->title() is 'Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org':Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org ok 430 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 -ok 431 - $bookmark->parent_guid() is KVwSziH6n33l -ok 432 - $bookmark->guid() is 'MFCbFMSp0dhv':MFCbFMSp0dhv +ok 431 - $bookmark->parent_guid() is FZDYpvi99UBy +ok 432 - $bookmark->guid() is 'ENQsoFK19qx8':ENQsoFK19qx8 ok 433 - $bookmark->icon_url() is 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette':fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette ok 434 - $bookmark->icon() is correct:data:image/png;base64,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 ok 435 - $firefox->search_bookmark('https://metacpan.org/') produces 2 results:2 @@ -8837,26 +8867,26 @@ ok 441 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates ok 442 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 ok 443 - $bookmark->parent_guid() is unfiled_____ -ok 444 - $bookmark->guid() is tgS1h0BHFthI +ok 444 - $bookmark->guid() is bjzC9jM0TcEb ok 445 - $bookmark->icon_url() is not defined ok 446 - $bookmark->icon() is not defined ok 447 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a type method:1 -ok 448 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a guid method:wl08u9l9goEh +ok 448 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a guid method:TMGYRYFIK5Ip ok 449 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 450 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org -ok 451 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a parent_guid method:KVwSziH6n33l +ok 451 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a parent_guid method:FZDYpvi99UBy ok 452 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a icon method that is correct:data:image/png;base64,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 ok 453 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a icon_url method that look vaguely correct:fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 ok 454 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a keyword method that returns undefined ok 455 - $firefox->search_bookmark('https://metacpan.org/') produces 1 result:1 ok 456 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a type that is Firefox::Marionette::Bookmark::BOOKMARK()::1 -ok 457 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a guid method:0Z8gsDV1r6v0 +ok 457 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a guid method:9Rh6L_ww5Ohq ok 458 - $bookmark->url() returns a URI::URL object ok 459 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a url that is 'https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web':https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web ok 460 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a title method that is 'perl 🐫 at DuckDuckGo':perl 🐫 at DuckDuckGo ok 461 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a date_added method that is Fri Jun 2 01:52:51 2023 ok 462 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a last_modified method that is Fri Jun 2 01:52:52 2023 -ok 463 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a parent_guid method:5GPHA7ifrXf- +ok 463 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a parent_guid method:cxv007oO5m2A ok 464 - $bookmark->icon_url() returns a URI::URL object ok 465 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a icon_url method that is 'https://duckduckgo.com/favicon.ico':https://duckduckgo.com/favicon.ico ok 466 - $bookmark->icon() returns a URI::data object @@ -8868,14 +8898,14 @@ ok 472 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':UTF8 ok 473 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with 4 tags:4 ok 474 - $firefox->search_bookmark('https://duckduckgo.com') produces 1 result:1 -ok 475 - Deleting this bookmark:tgS1h0BHFthI -ok 476 - Deleting this bookmark:sD7UWds8792c -ok 477 - Deleting this bookmark:yqmjzAio9kZx -ok 478 - Deleting this bookmark:KMmLqJKuYhoD -ok 479 - Deleting this bookmark:0Z8gsDV1r6v0 -ok 480 - Deleting this bookmark:5GPHA7ifrXf- -ok 481 - Deleting this bookmark:wl08u9l9goEh -ok 482 - Deleting this bookmark:KVwSziH6n33l +ok 475 - Deleting this bookmark:bjzC9jM0TcEb +ok 476 - Deleting this bookmark:Y0IdgsFjmZo4 +ok 477 - Deleting this bookmark:_jddvHwIYuAv +ok 478 - Deleting this bookmark:tVmlzKKfhM1X +ok 479 - Deleting this bookmark:9Rh6L_ww5Ohq +ok 480 - Deleting this bookmark:cxv007oO5m2A +ok 481 - Deleting this bookmark:TMGYRYFIK5Ip +ok 482 - Deleting this bookmark:FZDYpvi99UBy ok 483 - $firefox->import_bookmarks('/build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.json') returns itself for chaining ok 484 - Deleting this bookmark:utcxPgIOG05d ok 485 - $firefox->import_bookmarks('/build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.json') returns itself for chaining @@ -9088,8 +9118,8 @@ ok 692 - $firefox->clear_pref correctly returns itself for chaining and cleared 'browser.display.use_system_colors' ok 693 - Retrieved original browser.display.use_system_colors as a boolean '0' ok 694 - Returned undef when querying for a non-existant key of 'browser.no_such_key' -ok 695 - $firefox->set_pref correctly returns itself for chaining and set 'browser.no_such_key' to 'Can't be real:3542677' -ok 696 - Returned browser.no_such_key as a string 'Can't be real:3542677' +ok 695 - $firefox->set_pref correctly returns itself for chaining and set 'browser.no_such_key' to 'Can't be real:21961' +ok 696 - Returned browser.no_such_key as a string 'Can't be real:21961' ok 697 - Retrieved browser.active_color as a string '\#EE0000' ok 698 - Retrieved browser.active_color as a string '\#EE0000' which was equal to the original setting of '\#EE0000' ok 699 - $firefox->set_pref correctly returns itself for chaining and set 'browser.active_color' to '\#FFFFFF' @@ -9102,11 +9132,11 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 706 - $firefox->root_directory() is /tmp/firefox_marionette_local_xS7LWtjn_wC +ok 706 - $firefox->root_directory() is /tmp/firefox_marionette_local_DAf_5H7EiVL ok 707 - Firefox has started in Marionette mode with definable capabilities set to known values ok 708 - Added a new bookmark to firefox ok 709 - Retrieved the correct bookmark -ok 710 - Found oIBACh3_8ChP as the guid of the new bookmark +ok 710 - Found BzgYZwEiJA-8 as the guid of the new bookmark ok 711 - Total number of bookmarks found when searching by url is 1:1 ok 712 - Retrieved the correct bookmark ok 713 - Total number of bookmarks found when searching by (url => 'https://metacpan.org/') is 1:1 @@ -9122,7 +9152,7 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 723 - $firefox->root_directory() is /tmp/firefox_marionette_local_3fc64GhpUQB +ok 723 - $firefox->root_directory() is /tmp/firefox_marionette_local_NIkxK3PYm8x ok 724 # skip ok 725 # skip ok 726 # skip @@ -9373,12 +9403,12 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 971 - $firefox->root_directory() is /tmp/firefox_marionette_local_2yDWgPA0yud +ok 971 - $firefox->root_directory() is /tmp/firefox_marionette_local_dtK0gCfN8VN ok 972 - Firefox has started in Marionette mode with visible set to 0 ok 973 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object ok 974 - $capabilities->moz_headless() is set to true ok 975 - $firefox->capabilities()->timeouts()->implicit() correctly reflects the implicit shortcut timeout -ok 976 - Successfully installed an extension:8f306a5ceafb1f8ff6a8f5411a66716c8cac3c65@temporary-addon +ok 976 - Successfully installed an extension:cf1e2ce7d3f1f1801b94ae59d6854e1c57964bb9@temporary-addon ok 977 - Extension is proved to be running correctly: '5px solid red' vs '5px solid red' ok 978 - Successfully uninstalled an extension ok 979 - $geo5->latitude() has changed after a call to $firefox->geo(latitude => -37.123, longitude => 144.456):-37.123 @@ -9389,7 +9419,7 @@ ok 984 - Correctly retrieved TXT document ok 985 - Correctly downloaded TXT document without timeout ok 986 - Correctly downloaded TXT document with explicit timeout -ok 987 - Process 3555181 no longer exists:No such process +ok 987 - Process 41508 no longer exists:No such process ok 988 - $firefox->alert_text() correctly detects alert text ok 989 - $firefox->dismiss_alert() dismisses alert box ok 990 - Started async script containing a prompt @@ -9457,7 +9487,7 @@ [GFX1-]: glxtest: libpci missing [GFX1-]: glxtest: libEGL missing [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -ok 1052 - $firefox->root_directory() is /tmp/firefox_marionette_local_IheDEeLorgo +ok 1052 - $firefox->root_directory() is /tmp/firefox_marionette_local_HCVkItrJsHo ok 1053 - $firefox->content() is called to prove we are okay ok 1054 - Unable to move to chrome mode when system_access is turned off:unsupported operation: System access is required to switch to chrome scope. Start Firefox with "-remote-allow-system-access" to enable it. at t/01-marionette.t line 5416 ok 1055 - Firefox has closed with an exit status of 0:0 @@ -9471,14 +9501,14 @@ ok # Running taint checks with PATH set to /usr/bin:/bin:/usr/local/bin ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_bdnvixQFt1q/profile --no-remote --new-instance -[3557253] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_JYjGbLVXYo_/profile --no-remote --new-instance +[48944] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 767:[1,1,null,{"sessionId":"eb8e5821-4c3c-4299-8fdc-98c3dda0b912","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":3557253,"moz:profile":"/tmp/firefox_marionette_local_bdnvixQFt1q/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] +<< 765:[1,1,null,{"sessionId":"caa3f677-6b54-4832-8c42-83bd0e29cdba","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","moz:buildID":"20250922173505","moz:headless":true,"moz:platformVersion":"6.12.48+deb13-cloud-arm64","moz:processID":48944,"moz:profile":"/tmp/firefox_marionette_local_JYjGbLVXYo_/profile","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}] >> 179:[0,2,"WebAuthn:AddVirtualAuthenticator",{"hasResidentKey":true,"hasUserVerification":true,"isUserConsenting":true,"isUserVerified":true,"protocol":"ctap2","transport":"internal"}] -<< 66:[1,2,null,{"value":"jRDdQVvgprIM0KJGF7B3gUkye89AB-h5VWDCjJs_WfY"}] +<< 66:[1,2,null,{"value":"gH4f1xXMiYk0naGy5GfZdG6ti31_aStQEhpe2neqsC0"}] >> 50:[0,3,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 60:[1,3,null,{"cause":"shutdown","forced":false,"in_app":true}] t/02-taint.t .......... @@ -9514,7 +9544,7 @@ ------------------- t/01-marionette.t (Wstat: 0 Tests: 1061 Failed: 0) TODO passed: 55 -Files=22, Tests=1064, 100 wallclock secs ( 0.23 usr 0.20 sys + 64.27 cusr 15.49 csys = 80.19 CPU) +Files=22, Tests=1064, 69 wallclock secs ( 0.28 usr 0.13 sys + 61.45 cusr 15.41 csys = 77.27 CPU) Result: PASS make[2]: Leaving directory '/build/reproducible-path/libfirefox-marionette-perl-1.68' make[1]: Leaving directory '/build/reproducible-path/libfirefox-marionette-perl-1.68' @@ -9532,41 +9562,41 @@ Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Waterfox/Marionette/Profile.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebFrame.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebWindow.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/UpdateStatus.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Timeouts.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/DNS.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Certificate.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Cookie.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebWindow.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/LocalObject.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Capabilities.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Cache.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/GeoLocation.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Link.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Display.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Image.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Response.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Keys.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Bookmark.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Cache.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Cookie.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Element.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Buttons.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Profile.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Link.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Login.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Proxy.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/ShadowRoot.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Certificate.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Capabilities.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/DNS.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Bookmark.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Keys.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Image.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Buttons.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/GeoLocation.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Proxy.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Timeouts.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Response.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Login.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Window/Rect.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebAuthn/Credential.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/WebAuthn/Authenticator.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Window/Rect.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/Timezone.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/Stealth.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/HarExportTrigger.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Element/Rect.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/NotFound.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/Response.pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/NoSuchAlert.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/Stealth.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Extension/Timezone.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/InsecureCertificate.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/Response.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/StaleElement.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/NotFound.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Exception/NoSuchAlert.pm +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Firefox/Marionette/Element/Rect.pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/ssh-auth-cmd-marionette.1p Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/firefox-passwords.1p Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/check-firefox-certificate-authorities.1p @@ -9610,19 +9640,19 @@ Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Buttons.3pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette::Bookmark.3pm Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man3/Firefox::Marionette.3pm -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ssh-auth-cmd-marionette Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/setup-for-firefox-marionette-build.sh +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/check-firefox-certificate-authorities Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ca-bundle-for-firefox +Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ssh-auth-cmd-marionette Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/firefox-passwords -Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/check-firefox-certificate-authorities make[2]: Leaving directory '/build/reproducible-path/libfirefox-marionette-perl-1.68' # installed as examples rm -f -rv /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1 -removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/check-firefox-certificate-authorities' removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/firefox-passwords' +removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ssh-auth-cmd-marionette' removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ca-bundle-for-firefox' +removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/check-firefox-certificate-authorities' removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/setup-for-firefox-marionette-build.sh' -removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin/ssh-auth-cmd-marionette' removed directory '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/bin' removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/ca-bundle-for-firefox.1p' removed '/build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/man/man1/check-firefox-certificate-authorities.1p' @@ -9652,12 +9682,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/12811/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/3533577 and its subdirectories -I: Current time: Sat Oct 11 23:12:48 -12 2025 -I: pbuilder-time-stamp: 1760267568 +I: removing directory /srv/workspace/pbuilder/12811 and its subdirectories +I: Current time: Sun Nov 15 07:37:51 +14 2026 +I: pbuilder-time-stamp: 1794677871