Diff of the two buildlogs: -- --- b1/build.log 2025-10-10 11:35:58.918418753 +0000 +++ b2/build.log 2025-10-10 11:38:14.278568239 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu Oct 9 23:30:07 -12 2025 -I: pbuilder-time-stamp: 1760095807 +I: Current time: Fri Nov 13 07:59:00 +14 2026 +I: pbuilder-time-stamp: 1794506340 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -24,53 +24,85 @@ dpkg-source: info: applying no-network.patch I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/254159/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/1938949/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 12 17:59 /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/1938949/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/1938949/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='unstable' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='fe9b06cf9ad1447ab6d66cac9193f39b' - 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='254159' - PS1='# ' - PS2='> ' + INVOCATION_ID=525aa114da8a413db271e3c97ab01fd5 + 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=1938949 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.ME7lFAVt/pbuilderrc_tDxq --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ME7lFAVt/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/bin/systemd-run' - 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.ME7lFAVt/pbuilderrc_UiHk --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ME7lFAVt/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/254159/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/1938949/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 unstable/main arm64 xauth arm64 1:1.1.2-1.1 [35.4 kB] Get: 218 http://deb.debian.org/debian unstable/main arm64 xserver-common all 2:21.1.18-2 [2417 kB] Get: 219 http://deb.debian.org/debian unstable/main arm64 xvfb arm64 2:21.1.18-2 [3130 kB] -Fetched 164 MB in 8s (20.4 MB/s) +Fetched 164 MB in 1s (186 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 ... 19958 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/1938949/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/1938949/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: 3057680 kB -MemAvailable: 4763316 kB +MemFree: 25279212 kB +MemAvailable: 26561356 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,52 +1360,52 @@ dh_auto_build make -j12 make[1]: Entering directory '/build/reproducible-path/libfirefox-marionette-perl-1.68' -cp lib/Firefox/Marionette/Element.pm blib/lib/Firefox/Marionette/Element.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/Element/Rect.pm blib/lib/Firefox/Marionette/Element/Rect.pm +cp lib/Firefox/Marionette/Exception/NoSuchAlert.pm blib/lib/Firefox/Marionette/Exception/NoSuchAlert.pm +cp lib/Firefox/Marionette/Bookmark.pm blib/lib/Firefox/Marionette/Bookmark.pm +cp lib/Firefox/Marionette/Display.pm blib/lib/Firefox/Marionette/Display.pm cp lib/Firefox/Marionette/Cache.pm blib/lib/Firefox/Marionette/Cache.pm -cp lib/Firefox/Marionette/Proxy.pm blib/lib/Firefox/Marionette/Proxy.pm -cp lib/Firefox/Marionette/Response.pm blib/lib/Firefox/Marionette/Response.pm -cp lib/Firefox/Marionette/Certificate.pm blib/lib/Firefox/Marionette/Certificate.pm +cp lib/Firefox/Marionette/Image.pm blib/lib/Firefox/Marionette/Image.pm cp lib/Firefox/Marionette/Profile.pm blib/lib/Firefox/Marionette/Profile.pm -cp lib/Firefox/Marionette/Display.pm blib/lib/Firefox/Marionette/Display.pm -cp lib/Firefox/Marionette/ShadowRoot.pm blib/lib/Firefox/Marionette/ShadowRoot.pm -cp lib/Firefox/Marionette/Keys.pm blib/lib/Firefox/Marionette/Keys.pm -cp lib/Firefox/Marionette/Exception/Response.pm blib/lib/Firefox/Marionette/Exception/Response.pm -cp lib/Firefox/Marionette/Exception/NotFound.pm blib/lib/Firefox/Marionette/Exception/NotFound.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/Exception.pm blib/lib/Firefox/Marionette/Exception.pm -cp lib/Firefox/Marionette/Exception/NoSuchAlert.pm blib/lib/Firefox/Marionette/Exception/NoSuchAlert.pm -cp lib/Firefox/Marionette/Extension/Stealth.pm blib/lib/Firefox/Marionette/Extension/Stealth.pm cp lib/Firefox/Marionette/Buttons.pm blib/lib/Firefox/Marionette/Buttons.pm +cp lib/Firefox/Marionette/Extension/Stealth.pm blib/lib/Firefox/Marionette/Extension/Stealth.pm cp lib/Firefox/Marionette/GeoLocation.pm blib/lib/Firefox/Marionette/GeoLocation.pm +cp lib/Firefox/Marionette/Certificate.pm blib/lib/Firefox/Marionette/Certificate.pm +cp lib/Firefox/Marionette/Cookie.pm blib/lib/Firefox/Marionette/Cookie.pm +cp lib/Firefox/Marionette/Element/Rect.pm blib/lib/Firefox/Marionette/Element/Rect.pm +cp lib/Firefox/Marionette/LocalObject.pm blib/lib/Firefox/Marionette/LocalObject.pm +cp lib/Firefox/Marionette/DNS.pm blib/lib/Firefox/Marionette/DNS.pm +cp lib/Firefox/Marionette/Keys.pm blib/lib/Firefox/Marionette/Keys.pm +cp lib/Firefox/Marionette/Proxy.pm blib/lib/Firefox/Marionette/Proxy.pm cp lib/Firefox/Marionette/Login.pm blib/lib/Firefox/Marionette/Login.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.pm blib/lib/Firefox/Marionette.pm -cp lib/Firefox/Marionette/Bookmark.pm blib/lib/Firefox/Marionette/Bookmark.pm -cp lib/Firefox/Marionette/Exception/InsecureCertificate.pm blib/lib/Firefox/Marionette/Exception/InsecureCertificate.pm -cp lib/Firefox/Marionette/Cookie.pm blib/lib/Firefox/Marionette/Cookie.pm cp lib/Firefox/Marionette/Capabilities.pm blib/lib/Firefox/Marionette/Capabilities.pm -cp lib/Firefox/Marionette/Image.pm blib/lib/Firefox/Marionette/Image.pm -cp lib/Firefox/Marionette/LocalObject.pm blib/lib/Firefox/Marionette/LocalObject.pm -cp lib/Firefox/Marionette/WebAuthn/Credential.pm blib/lib/Firefox/Marionette/WebAuthn/Credential.pm +cp lib/Firefox/Marionette/Response.pm blib/lib/Firefox/Marionette/Response.pm +cp lib/Firefox/Marionette/Exception/Response.pm blib/lib/Firefox/Marionette/Exception/Response.pm +cp lib/Firefox/Marionette/Element.pm blib/lib/Firefox/Marionette/Element.pm +cp lib/Firefox/Marionette/Exception/StaleElement.pm blib/lib/Firefox/Marionette/Exception/StaleElement.pm +cp lib/Firefox/Marionette/Extension/HarExportTrigger.pm blib/lib/Firefox/Marionette/Extension/HarExportTrigger.pm +cp lib/Firefox/Marionette/Exception/NotFound.pm blib/lib/Firefox/Marionette/Exception/NotFound.pm +cp lib/Firefox/Marionette/Extension/Timezone.pm blib/lib/Firefox/Marionette/Extension/Timezone.pm +cp lib/Firefox/Marionette/Exception/InsecureCertificate.pm blib/lib/Firefox/Marionette/Exception/InsecureCertificate.pm +cp lib/Firefox/Marionette/ShadowRoot.pm blib/lib/Firefox/Marionette/ShadowRoot.pm +cp lib/Firefox/Marionette/Timeouts.pm blib/lib/Firefox/Marionette/Timeouts.pm +cp lib/Firefox/Marionette/WebWindow.pm blib/lib/Firefox/Marionette/WebWindow.pm +cp lib/Waterfox/Marionette/Profile.pm blib/lib/Waterfox/Marionette/Profile.pm cp lib/Firefox/Marionette/WebFrame.pm blib/lib/Firefox/Marionette/WebFrame.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/Firefox/Marionette/WebAuthn/Credential.pm blib/lib/Firefox/Marionette/WebAuthn/Credential.pm +cp lib/Firefox/Marionette/WebAuthn/Authenticator.pm blib/lib/Firefox/Marionette/WebAuthn/Authenticator.pm cp lib/Firefox/Marionette/UpdateStatus.pm blib/lib/Firefox/Marionette/UpdateStatus.pm cp lib/Waterfox/Marionette.pm blib/lib/Waterfox/Marionette.pm -cp lib/Firefox/Marionette/WebWindow.pm blib/lib/Firefox/Marionette/WebWindow.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 cp firefox-passwords blib/script/firefox-passwords "/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 -"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/firefox-passwords cp setup-for-firefox-marionette-build.sh blib/script/setup-for-firefox-marionette-build.sh +"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/firefox-passwords 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/ssh-auth-cmd-marionette @@ -1391,10 +1427,10 @@ 1..1 ok 1 - use Firefox::Marionette; ok -# Starting test at Fri Oct 10 11:32:05 2025 -[280467] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +# Starting test at Thu Nov 12 17:59:54 2026 +[1945808] Sandbox: CanCreateUserNamespace() clone() failure: EPERM # Version is Mozilla Firefox 140.3.1esr -# XAUTHORITY is /tmp/xvfb-run.bZdlbX/Xauthority +# XAUTHORITY is /tmp/xvfb-run.CypOQN/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,30 +1438,30 @@ # Xvfb deb version is 2:21.1.18-2 # grep -r Mem /proc/meminfo # MemTotal: 32809424 kB -# MemFree: 2635236 kB -# MemAvailable: 4466060 kB +# MemFree: 25031696 kB +# MemAvailable: 26313988 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. '/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. # Initial tests -# Testing has been running for 1 seconds at t/01-marionette.t line 786 +# Testing has been running for 2 seconds at t/01-marionette.t line 786 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_JgjoNBOdxt9/profile --no-remote --new-instance -[280746] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_KClMizpU9OU/profile --no-remote --new-instance +[1945868] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 766:[1,1,null,{"sessionId":"4aafaf6a-84f8-4870-9c0b-fdb95fd1ebff","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":280746,"moz:profile":"/tmp/firefox_marionette_local_JgjoNBOdxt9/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":{}}}] +<< 767:[1,1,null,{"sessionId":"40904ffe-8e1c-40ff-894c-16ff8ba779dc","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":1945868,"moz:profile":"/tmp/firefox_marionette_local_KClMizpU9OU/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":"jCtJZwuPuP8lY3eY_8EqE9dGU8EE9fMicvTgep9vgM4"}] +<< 66:[1,2,null,{"value":"FQsSXAjhgPvYMa3bZ8x46gdxlwQIiZ8ojNGYO65FTqo"}] >> 33:[0,3,"WebDriver:GetCapabilities"] -<< 725:[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":280746,"moz:profile":"/tmp/firefox_marionette_local_JgjoNBOdxt9/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,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":1945868,"moz:profile":"/tmp/firefox_marionette_local_KClMizpU9OU/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_JgjoNBOdxt9/profile -# Mozilla PID is 280746 +# Profile Directory is /tmp/firefox_marionette_local_KClMizpU9OU/profile +# Mozilla PID is 1945868 # 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,26 @@ >> 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,["d2658bb8-4fa3-40d4-8ceb-90d5f16b9958"]] +<< 52:[1,22,null,["f5d864e9-0e5b-4da8-a210-be46a04e1668"]] >> 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/45741 -# Using SOCKS port TCP/56363 -# Testing has been running for 16 seconds at t/01-marionette.t line 1198 +# Using proxy port TCP/55273 +# Using SOCKS port TCP/53177 +# Testing has been running for 7 seconds at t/01-marionette.t line 1198 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_F3c_31yReZr/profile --no-remote --new-instance --kiosk -[283129] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_aCH0rBR8Zpj/profile --no-remote --new-instance --kiosk +[1946405] 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:45741","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:56363","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:37965"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}},"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:45741","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:56363","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:37965"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}] -[Parent 283129, 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:55273","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:53177","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:40369"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}},"moz:accessibilityChecks":true,"moz:webdriverClick":true,"pageLoadStrategy":"eager","proxy":{"httpProxy":"localhost:55273","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:53177","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:40369"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}] +[Parent 1946405, 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:283129): GLib-GObject-CRITICAL **: 11:32:35.333: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed -[Parent 283129, 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:1946405): GLib-GObject-CRITICAL **: 18:00:02.218: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed +[Parent 1946405, 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:283129): GLib-GObject-CRITICAL **: 11:32:35.353: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed -[Parent 283129, 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:283129): GLib-GObject-CRITICAL **: 11:32:59.281: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed -<< 1344:[1,1,null,{"sessionId":"5bd14601-e3dc-4c8b-a55b-0ff78876ccb7","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:45741","noProxy":["local.example.org"],"sslProxy":"localhost:37965","socksProxy":"localhost:56363","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":283129,"moz:profile":"/tmp/firefox_marionette_local_F3c_31yReZr/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:45741","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:56363","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:37965"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}] +(firefox-esr:1946405): GLib-GObject-CRITICAL **: 18:00:02.219: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed +<< 1345:[1,1,null,{"sessionId":"b9cf13f3-e504-4bdb-93c7-ec6f7247693d","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:55273","noProxy":["local.example.org"],"sslProxy":"localhost:40369","socksProxy":"localhost:53177","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":1946405,"moz:profile":"/tmp/firefox_marionette_local_aCH0rBR8Zpj/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:55273","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:53177","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:40369"},"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 +1556,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":"Yv0yuDh5-hPU"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"LOS9EhaklhNc"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1566,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":"Yv0yuDh5-hPU"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"LOS9EhaklhNc"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1586,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":"8JvLcb3EqeE9"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"IpPpDxQoclDH"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1617,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":1760095980,"lastModified":1760095980,"childCount":5}}] +<< 139:[1,46,null,{"value":{"guid":"root________","index":0,"type":2,"title":"","dateAdded":1794506402,"lastModified":1794506402,"childCount":5}}] >> 30:[0,47,"Marionette:GetContext"] << 30:[1,47,null,{"value":"chrome"}] >> 50:[0,48,"Marionette:SetContext",{"value":"content"}] @@ -1594,19 +1627,16 @@ >> 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":1760095980,"lastModified":1760095980,"parentGuid":"root________","childCount":0}}] +<< 174:[1,51,null,{"value":{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":1794506402,"lastModified":1794506402,"parentGuid":"root________","childCount":0}}] >> 30:[0,52,"Marionette:GetContext"] << 30:[1,52,null,{"value":"chrome"}] >> 50:[0,53,"Marionette:SetContext",{"value":"content"}] -[Parent 283129, 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:283129): GLib-GObject-CRITICAL **: 11:33:02.742: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 26:[1,53,null,{"value":null}] >> 30:[0,54,"Marionette:GetContext"] << 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":["ZoiksnBgTGAT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["9VwZQwN-Znva"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] @@ -1616,8 +1646,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":"ZoiksnBgTGAT","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":"ZoiksnBgTGAT","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":"9VwZQwN-Znva","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":"9VwZQwN-Znva","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"}] @@ -1627,7 +1657,7 @@ >> 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":1760095980,"lastModified":1760095980,"parentGuid":"root________","childCount":0}}] +<< 171:[1,66,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794506402,"lastModified":1794506402,"parentGuid":"root________","childCount":0}}] >> 30:[0,67,"Marionette:GetContext"] << 30:[1,67,null,{"value":"chrome"}] >> 50:[0,68,"Marionette:SetContext",{"value":"content"}] @@ -1636,7 +1666,7 @@ << 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":["Yv0yuDh5-hPU"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["LOS9EhaklhNc"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1676,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":"Yv0yuDh5-hPU","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":"Yv0yuDh5-hPU","parentGuid":"menu________","title":"CPAN","type":2,"index":0,"lastModified":"2023-06-10T05:04:37.000Z"}}] +>> 2956:[0,76,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"LOS9EhaklhNc","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":"LOS9EhaklhNc","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"}] @@ -1655,8 +1685,11 @@ >> 30:[0,79,"Marionette:GetContext"] << 31:[1,79,null,{"value":"content"}] >> 49:[0,80,"Marionette:SetContext",{"value":"chrome"}] +[Parent 1946405, 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:1946405): GLib-GObject-CRITICAL **: 18:00:03.321: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed << 26:[1,80,null,{"value":null}] ->> 2275:[0,81,"WebDriver:ExecuteScript",{"args":["LbnFAEAL8NXT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["VlqV7HUcPYYr"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,8 +1699,8 @@ << 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":"LbnFAEAL8NXT","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":"Yv0yuDh5-hPU","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":"LbnFAEAL8NXT","parentGuid":"Yv0yuDh5-hPU","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":"VlqV7HUcPYYr","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":"LOS9EhaklhNc","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":"VlqV7HUcPYYr","parentGuid":"LOS9EhaklhNc","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"] << 30:[1,87,null,{"value":"chrome"}] >> 50:[0,88,"Marionette:SetContext",{"value":"content"}] @@ -1676,7 +1709,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":["AN2nnD8bTLvK"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["hd0WywUG1WbQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1719,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":"AN2nnD8bTLvK","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":"Yv0yuDh5-hPU","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":"AN2nnD8bTLvK","parentGuid":"Yv0yuDh5-hPU","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":"hd0WywUG1WbQ","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":"LOS9EhaklhNc","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":"hd0WywUG1WbQ","parentGuid":"LOS9EhaklhNc","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 +1730,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":1760095980,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] +<< 172:[1,101,null,{"value":{"guid":"menu________","index":0,"type":2,"title":"menu","dateAdded":1794506402,"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 +1739,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":["8JvLcb3EqeE9"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["IpPpDxQoclDH"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1749,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":"8JvLcb3EqeE9","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":"8JvLcb3EqeE9","parentGuid":"menu________","title":"Searches","type":2,"index":1,"lastModified":"2023-06-10T05:04:37.000Z"}}] +>> 2961:[0,111,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686373477,"guid":"IpPpDxQoclDH","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":"IpPpDxQoclDH","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 +1759,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":["bXZWgkGqAbhS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["-W6RrP0piI2n"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1769,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":"bXZWgkGqAbhS","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":"8JvLcb3EqeE9","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":"bXZWgkGqAbhS","parentGuid":"8JvLcb3EqeE9","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":"-W6RrP0piI2n","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":"IpPpDxQoclDH","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":"-W6RrP0piI2n","parentGuid":"IpPpDxQoclDH","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 +1779,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":["Kq9p3BvwQwm0"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["2q-OnSwGooVg"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1789,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":"Kq9p3BvwQwm0","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":"Kq9p3BvwQwm0","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":"2q-OnSwGooVg","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":"2q-OnSwGooVg","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 +1799,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":["NJXx5HdaLoyp"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":["7sn7UWalPU9-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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 +1809,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":"NJXx5HdaLoyp","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":"NJXx5HdaLoyp","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":"7sn7UWalPU9-","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":"7sn7UWalPU9-","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":"4JOalxLwb2TL4qwgSm9Y9_YsVdUCSoigYcC87K0X2uU"}] +<< 68:[1,144,null,{"value":"LWhDZwFKJlMO8fhEkZWH5fiM9vzRK7Ldr74TvdQO-3w"}] >> 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:{1167295a-ce4a-4e83-80ad-cc1df6d6ccb0}:2:34\n@moz-nullprincipal:{1167295a-ce4a-4e83-80ad-cc1df6d6ccb0}:2:76\n@moz-nullprincipal:{1167295a-ce4a-4e83-80ad-cc1df6d6ccb0}:4:8\n"},null] +<< 336:[1,147,{"error":"javascript error","message":"TypeError: can't access property \"triggerExport\", window.HAR is undefined","stacktrace":"@moz-nullprincipal:{a0031101-bd4c-4a9d-8552-8f2066e8c093}:2:34\n@moz-nullprincipal:{a0031101-bd4c-4a9d-8552-8f2066e8c093}:2:76\n@moz-nullprincipal:{a0031101-bd4c-4a9d-8552-8f2066e8c093}: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":"LbnFAEAL8NXT","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":"Yv0yuDh5-hPU","url":"https://metacpan.org/pod/Firefox::Marionette"}]}] +<< 334:[1,150,null,{"value":[{"guid":"VlqV7HUcPYYr","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":"LOS9EhaklhNc","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":["LbnFAEAL8NXT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"LbnFAEAL8NXT","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"Yv0yuDh5-hPU","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":["VlqV7HUcPYYr"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"VlqV7HUcPYYr","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"LOS9EhaklhNc","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 +1848,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":"NJXx5HdaLoyp","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":"7sn7UWalPU9-","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":["NJXx5HdaLoyp"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"NJXx5HdaLoyp","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":["7sn7UWalPU9-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"7sn7UWalPU9-","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 +1864,29 @@ >> 51:[0,167,"Marionette:SetContext",{"value":"content"}] << 27:[1,167,null,{"value":null}] >> 35:[0,168,"WebDriver:GetCapabilities"] -<< 1306:[1,168,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:45741","noProxy":["local.example.org"],"sslProxy":"localhost:37965","socksProxy":"localhost:56363","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":283129,"moz:profile":"/tmp/firefox_marionette_local_F3c_31yReZr/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:45741","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:56363","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:37965"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] +<< 1307:[1,168,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:55273","noProxy":["local.example.org"],"sslProxy":"localhost:40369","socksProxy":"localhost:53177","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":1946405,"moz:profile":"/tmp/firefox_marionette_local_aCH0rBR8Zpj/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:55273","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:53177","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:40369"},"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 58 seconds at t/01-marionette.t line 1310 +# Testing has been running for 10 seconds at t/01-marionette.t line 1310 >> 35:[0,169,"WebDriver:GetCapabilities"] -<< 1306:[1,169,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:45741","noProxy":["local.example.org"],"sslProxy":"localhost:37965","socksProxy":"localhost:56363","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":283129,"moz:profile":"/tmp/firefox_marionette_local_F3c_31yReZr/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:45741","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:56363","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:37965"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] -# Testing has been running for 58 seconds at t/01-marionette.t line 1340 +<< 1307:[1,169,null,{"value":{"capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"manual","httpProxy":"localhost:55273","noProxy":["local.example.org"],"sslProxy":"localhost:40369","socksProxy":"localhost:53177","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":1946405,"moz:profile":"/tmp/firefox_marionette_local_aCH0rBR8Zpj/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:55273","noProxy":["local.example.org"],"proxyType":"manual","socksProxy":"localhost:53177","socksProxyVersion":5,"socksVersion":5,"sslProxy":"localhost:40369"},"strictFileInteractability":true,"unhandledPromptBehavior":"accept and notify"}}}}}] +# Testing has been running for 10 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/41825 -# Testing has been running for 60 seconds at t/01-marionette.t line 1461 +# Starting new firefox for testing proxies with proxy port TCP/51127 +# Testing has been running for 12 seconds at t/01-marionette.t line 1461 ** firefox --version -** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_5uFVAd_90Sj/profile --no-remote --new-instance --devtools -[285687] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_mD4xf7wdMEy/profile --no-remote --new-instance --devtools +[1947486] 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:41825","proxyType":"pac"}}},"proxy":{"proxyAutoconfigUrl":"http://localhost:41825","proxyType":"pac"}}] -<< 945:[1,1,null,{"sessionId":"f829f098-2993-49c2-bd81-5ab6c4a2c440","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:41825"},"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":285687,"moz:profile":"/tmp/firefox_marionette_local_5uFVAd_90Sj/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:41825","proxyType":"pac"}}}}}] +>> 220:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{"proxy":{"proxyAutoconfigUrl":"http://localhost:51127","proxyType":"pac"}}},"proxy":{"proxyAutoconfigUrl":"http://localhost:51127","proxyType":"pac"}}] +<< 946:[1,1,null,{"sessionId":"cadccfed-3f04-4e0c-abb8-79c9fcb3f25d","capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:51127"},"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":1947486,"moz:profile":"/tmp/firefox_marionette_local_mD4xf7wdMEy/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:51127","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":"eLW8eFz1JCz0HgDwfI_NmTeis0qBbdV1OD67UyencVY"}] +<< 66:[1,4,null,{"value":"xcRLEAaVWqA9M24T_NrS--RZmZhQgwfFFiQ7AvFBGB4"}] >> 29:[0,5,"Marionette:GetContext"] << 30:[1,5,null,{"value":"content"}] >> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] @@ -1948,7 +1981,7 @@ << 31:[1,50,null,{"value":"content"}] >> 49:[0,51,"Marionette:SetContext",{"value":"chrome"}] << 26:[1,51,null,{"value":null}] ->> 889:[0,52,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lat\":40,\"lng\":24}}"],"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); } } "}] +>> 889:[0,52,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","data:application/json,{\"location\":{\"lng\":24,\"lat\":40}}"],"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,52,null,{"value":null}] >> 30:[0,53,"Marionette:GetContext"] << 30:[1,53,null,{"value":"chrome"}] @@ -1965,33 +1998,6412 @@ >> 50:[0,59,"Marionette:SetContext",{"value":"content"}] << 26:[1,59,null,{"value":null}] >> 34:[0,60,"WebDriver:GetCapabilities"] -<< 904:[1,60,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:41825"},"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":285687,"moz:profile":"/tmp/firefox_marionette_local_5uFVAd_90Sj/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:41825","proxyType":"pac"}}}}}}] ->> 173:[0,61,"WebDriver:Navigate",{"sessionId":"f829f098-2993-49c2-bd81-5ab6c4a2c440","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] -JavaScript error: resource:///modules/backup/BackupService.sys.mjs, line 108: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProperties.get] +<< 905:[1,60,null,{"value":{"capabilities":{"acceptInsecureCerts":false,"browserName":"firefox","browserVersion":"140.3.1","platformName":"linux","proxy":{"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:51127"},"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":1947486,"moz:profile":"/tmp/firefox_marionette_local_mD4xf7wdMEy/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:51127","proxyType":"pac"}}}}}}] +>> 173:[0,61,"WebDriver:Navigate",{"sessionId":"cadccfed-3f04-4e0c-abb8-79c9fcb3f25d","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 95 seconds at t/01-marionette.t line 1579 +# Testing has been running for 18 seconds at t/01-marionette.t line 1579 +** firefox --version +** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_n9yp72BtKpz/profile --no-remote --new-instance +[1947975] 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":"5fb4fb2d-9167-4910-964e-816838d069d8","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":1947975,"moz:profile":"/tmp/firefox_marionette_local_n9yp72BtKpz/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"}] +<< 25:[1,3,null,{"value":null}] +>> 2299:[0,4,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 25:[1,4,null,{"value":null}] +>> 29:[0,5,"Marionette:GetContext"] +<< 29:[1,5,null,{"value":"chrome"}] +>> 49:[0,6,"Marionette:SetContext",{"value":"content"}] +<< 25:[1,6,null,{"value":null}] +>> 29:[0,7,"Marionette:GetContext"] +<< 30:[1,7,null,{"value":"content"}] +>> 48:[0,8,"Marionette:SetContext",{"value":"chrome"}] +<< 25:[1,8,null,{"value":null}] +>> 2299:[0,9,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 25:[1,9,null,{"value":null}] +>> 30:[0,10,"Marionette:GetContext"] +<< 30:[1,10,null,{"value":"chrome"}] +>> 50:[0,11,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,11,null,{"value":null}] +>> 30:[0,12,"Marionette:GetContext"] +<< 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":"yz_cU0orOa1-"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,16,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,16,null,{"value":null}] +>> 30:[0,17,"Marionette:GetContext"] +<< 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":"yz_cU0orOa1-"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,21,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,21,null,{"value":null}] +>> 30:[0,22,"Marionette:GetContext"] +<< 31:[1,22,null,{"value":"content"}] +>> 49:[0,23,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,23,null,{"value":null}] +>> 2300:[0,24,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 26:[1,24,null,{"value":null}] +>> 30:[0,25,"Marionette:GetContext"] +<< 30:[1,25,null,{"value":"chrome"}] +>> 50:[0,26,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,26,null,{"value":null}] +>> 30:[0,27,"Marionette:GetContext"] +<< 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":"SZMVY4tx30SB"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,31,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,31,null,{"value":null}] +>> 30:[0,32,"Marionette:GetContext"] +<< 31:[1,32,null,{"value":"content"}] +>> 49:[0,33,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,33,null,{"value":null}] +>> 2300:[0,34,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 26:[1,34,null,{"value":null}] +>> 30:[0,35,"Marionette:GetContext"] +<< 30:[1,35,null,{"value":"chrome"}] +>> 50:[0,36,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,36,null,{"value":null}] +>> 30:[0,37,"Marionette:GetContext"] +<< 31:[1,37,null,{"value":"content"}] +>> 49:[0,38,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,38,null,{"value":null}] +>> 2300:[0,39,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 26:[1,39,null,{"value":null}] +>> 30:[0,40,"Marionette:GetContext"] +<< 30:[1,40,null,{"value":"chrome"}] +>> 50:[0,41,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,41,null,{"value":null}] +>> 30:[0,42,"Marionette:GetContext"] +<< 31:[1,42,null,{"value":"content"}] +>> 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":1794506413,"lastModified":1794506413,"childCount":5}}] +>> 30:[0,45,"Marionette:GetContext"] +<< 30:[1,45,null,{"value":"chrome"}] +>> 50:[0,46,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,46,null,{"value":null}] +>> 30:[0,47,"Marionette:GetContext"] +<< 31:[1,47,null,{"value":"content"}] +>> 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":1794506413,"lastModified":1794506413,"parentGuid":"root________","childCount":0}}] +>> 30:[0,50,"Marionette:GetContext"] +<< 30:[1,50,null,{"value":"chrome"}] +>> 50:[0,51,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,51,null,{"value":null}] +>> 30:[0,52,"Marionette:GetContext"] +<< 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":["MZ9irXJA-psn"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,56,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,56,null,{"value":null}] +>> 30:[0,57,"Marionette:GetContext"] +<< 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":"MZ9irXJA-psn","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":"MZ9irXJA-psn","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"}] +<< 26:[1,61,null,{"value":null}] +>> 30:[0,62,"Marionette:GetContext"] +<< 31:[1,62,null,{"value":"content"}] +>> 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":1794506413,"lastModified":1794506413,"parentGuid":"root________","childCount":0}}] +>> 30:[0,65,"Marionette:GetContext"] +<< 30:[1,65,null,{"value":"chrome"}] +>> 50:[0,66,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,66,null,{"value":null}] +>> 30:[0,67,"Marionette:GetContext"] +<< 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":["yz_cU0orOa1-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,71,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,71,null,{"value":null}] +>> 30:[0,72,"Marionette:GetContext"] +<< 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":"yz_cU0orOa1-","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":"yz_cU0orOa1-","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"}] +<< 26:[1,76,null,{"value":null}] +>> 30:[0,77,"Marionette:GetContext"] +<< 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":["L2C1A9_iuIiF"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,81,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,81,null,{"value":null}] +>> 30:[0,82,"Marionette:GetContext"] +<< 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":"L2C1A9_iuIiF","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":"yz_cU0orOa1-","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":"L2C1A9_iuIiF","parentGuid":"yz_cU0orOa1-","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"}] +<< 26:[1,86,null,{"value":null}] +>> 30:[0,87,"Marionette:GetContext"] +<< 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":["AuvB_43pPDDW"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,91,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,91,null,{"value":null}] +>> 30:[0,92,"Marionette:GetContext"] +<< 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":"AuvB_43pPDDW","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":"yz_cU0orOa1-","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":"AuvB_43pPDDW","parentGuid":"yz_cU0orOa1-","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"}] +<< 26:[1,96,null,{"value":null}] +>> 30:[0,97,"Marionette:GetContext"] +<< 31:[1,97,null,{"value":"content"}] +>> 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":1794506413,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] +>> 31:[0,100,"Marionette:GetContext"] +<< 31:[1,100,null,{"value":"chrome"}] +>> 51:[0,101,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,101,null,{"value":null}] +>> 31:[0,102,"Marionette:GetContext"] +<< 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":["SZMVY4tx30SB"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,106,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,106,null,{"value":null}] +>> 31:[0,107,"Marionette:GetContext"] +<< 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":"SZMVY4tx30SB","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":"SZMVY4tx30SB","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"}] +<< 27:[1,111,null,{"value":null}] +>> 31:[0,112,"Marionette:GetContext"] +<< 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":["0AvVDQvoyqX8"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,116,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,116,null,{"value":null}] +>> 31:[0,117,"Marionette:GetContext"] +<< 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":"0AvVDQvoyqX8","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":"SZMVY4tx30SB","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":"0AvVDQvoyqX8","parentGuid":"SZMVY4tx30SB","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"}] +<< 27:[1,121,null,{"value":null}] +>> 31:[0,122,"Marionette:GetContext"] +<< 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":["uqAn5OTNhIQN"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,126,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,126,null,{"value":null}] +>> 31:[0,127,"Marionette:GetContext"] +<< 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":"uqAn5OTNhIQN","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":"uqAn5OTNhIQN","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"}] +<< 27:[1,131,null,{"value":null}] +>> 31:[0,132,"Marionette:GetContext"] +<< 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":["0oV22UtShKv-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,136,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,136,null,{"value":null}] +>> 31:[0,137,"Marionette:GetContext"] +<< 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":"0oV22UtShKv-","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":"0oV22UtShKv-","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_n9yp72BtKpz/extension/stealth-0.0.1.xpi","temporary":true}] +<< 81:[1,143,null,{"value":"44592c5d88a648681bcf422294d6f5d81f850962@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":"XYBue1lrrVZ764mrxLsAp0nQ4kUXaJQHPxtxj_DgUl8"}] +>> 31:[0,146,"Marionette:GetContext"] +<< 32:[1,146,null,{"value":"content"}] +>> 50:[0,147,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,147,null,{"value":null}] +>> 816:[0,148,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"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); } } "}] +<< 27:[1,148,null,{"value":null}] +>> 31:[0,149,"Marionette:GetContext"] +<< 31:[1,149,null,{"value":"chrome"}] +>> 51:[0,150,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,150,null,{"value":null}] +>> 31:[0,151,"Marionette:GetContext"] +<< 32:[1,151,null,{"value":"content"}] +>> 50:[0,152,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,152,null,{"value":null}] +>> 829:[0,153,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"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); } } "}] +<< 27:[1,153,null,{"value":null}] +>> 31:[0,154,"Marionette:GetContext"] +<< 31:[1,154,null,{"value":"chrome"}] +>> 51:[0,155,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,155,null,{"value":null}] +>> 31:[0,156,"Marionette:GetContext"] +<< 32:[1,156,null,{"value":"content"}] +>> 50:[0,157,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,157,null,{"value":null}] +>> 834:[0,158,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"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); } } "}] +<< 27:[1,158,null,{"value":null}] +>> 31:[0,159,"Marionette:GetContext"] +<< 31:[1,159,null,{"value":"chrome"}] +>> 51:[0,160,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,160,null,{"value":null}] +>> 31:[0,161,"Marionette:GetContext"] +<< 32:[1,161,null,{"value":"content"}] +>> 50:[0,162,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,162,null,{"value":null}] +>> 825:[0,163,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"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); } } "}] +<< 27:[1,163,null,{"value":null}] +>> 31:[0,164,"Marionette:GetContext"] +<< 31:[1,164,null,{"value":"chrome"}] +>> 51:[0,165,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,165,null,{"value":null}] +>> 31:[0,166,"Marionette:GetContext"] +<< 32:[1,166,null,{"value":"content"}] +>> 50:[0,167,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,167,null,{"value":null}] +>> 823:[0,168,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"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); } } "}] +<< 27:[1,168,null,{"value":null}] +>> 31:[0,169,"Marionette:GetContext"] +<< 31:[1,169,null,{"value":"chrome"}] +>> 51:[0,170,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,170,null,{"value":null}] +>> 31:[0,171,"Marionette:GetContext"] +<< 32:[1,171,null,{"value":"content"}] +>> 50:[0,172,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,172,null,{"value":null}] +>> 829:[0,173,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"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); } } "}] +<< 27:[1,173,null,{"value":null}] +>> 31:[0,174,"Marionette:GetContext"] +<< 31:[1,174,null,{"value":"chrome"}] +>> 51:[0,175,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,175,null,{"value":null}] +>> 31:[0,176,"Marionette:GetContext"] +<< 32:[1,176,null,{"value":"content"}] +>> 50:[0,177,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,177,null,{"value":null}] +>> 831:[0,178,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"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); } } "}] +<< 27:[1,178,null,{"value":null}] +>> 31:[0,179,"Marionette:GetContext"] +<< 31:[1,179,null,{"value":"chrome"}] +>> 51:[0,180,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,180,null,{"value":null}] +>> 31:[0,181,"Marionette:GetContext"] +<< 32:[1,181,null,{"value":"content"}] +>> 50:[0,182,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,182,null,{"value":null}] +>> 818:[0,183,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"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); } } "}] +<< 27:[1,183,null,{"value":null}] +>> 31:[0,184,"Marionette:GetContext"] +<< 31:[1,184,null,{"value":"chrome"}] +>> 51:[0,185,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,185,null,{"value":null}] +>> 31:[0,186,"Marionette:GetContext"] +<< 32:[1,186,null,{"value":"content"}] +>> 50:[0,187,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,187,null,{"value":null}] +>> 828:[0,188,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"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); } } "}] +<< 27:[1,188,null,{"value":null}] +>> 31:[0,189,"Marionette:GetContext"] +<< 31:[1,189,null,{"value":"chrome"}] +>> 51:[0,190,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,190,null,{"value":null}] +>> 178:[0,191,"WebDriver:ExecuteScript",{"script":"let c = document.createElement('canvas'); return c.getContext('webgl2') ? true : c.getContext('experimental-webgl') ? true : false;"}] +<< 27:[1,191,null,{"value":true}] +# WebGL is enabled by default when visible and addons are turned off +>> 31:[0,192,"Marionette:GetContext"] +<< 32:[1,192,null,{"value":"content"}] +>> 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":"L2C1A9_iuIiF","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":"yz_cU0orOa1-","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":["L2C1A9_iuIiF"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"L2C1A9_iuIiF","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610972,"parentGuid":"yz_cU0orOa1-","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"}] +<< 27:[1,199,null,{"value":null}] +>> 31:[0,200,"Marionette:GetContext"] +<< 31:[1,200,null,{"value":"chrome"}] +>> 51:[0,201,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,201,null,{"value":null}] +>> 31:[0,202,"Marionette:GetContext"] +<< 32:[1,202,null,{"value":"content"}] +>> 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":"0oV22UtShKv-","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":["0oV22UtShKv-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"0oV22UtShKv-","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"}] +<< 27:[1,209,null,{"value":null}] +>> 31:[0,210,"Marionette:GetContext"] +<< 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":"5fb4fb2d-9167-4910-964e-816838d069d8","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":"2a6ccd28-976f-46a2-8977-e5c266515ab0"}}] +>> 82:[0,214,"WebDriver:GetComputedLabel",{"id":"2a6ccd28-976f-46a2-8977-e5c266515ab0"}] +[Parent 1947975, 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:1947975): GLib-GObject-CRITICAL **: 18:00:15.092: g_type_add_interface_static: assertion 'g_type_parent (interface_type) == G_TYPE_INTERFACE' failed +[Parent 1947975, 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:1947975): GLib-GObject-CRITICAL **: 18:00:15.092: 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":"2a6ccd28-976f-46a2-8977-e5c266515ab0"}] +<< 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":"2a6ccd28-976f-46a2-8977-e5c266515ab0"}}] +>> 82:[0,217,"WebDriver:GetComputedLabel",{"id":"2a6ccd28-976f-46a2-8977-e5c266515ab0"}] +<< 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":"2a6ccd28-976f-46a2-8977-e5c266515ab0"}}] +>> 82:[0,219,"WebDriver:GetComputedLabel",{"id":"2a6ccd28-976f-46a2-8977-e5c266515ab0"}] +<< 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":"8536ce8e-b5e3-47d0-bd87-002bc0df9c4e"}}] +>> 81:[0,221,"WebDriver:GetComputedRole",{"id":"8536ce8e-b5e3-47d0-bd87-002bc0df9c4e"}] +<< 31:[1,221,null,{"value":"button"}] +>> 81:[0,222,"WebDriver:GetComputedRole",{"id":"8536ce8e-b5e3-47d0-bd87-002bc0df9c4e"}] +<< 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":"8536ce8e-b5e3-47d0-bd87-002bc0df9c4e"}}] +>> 81:[0,224,"WebDriver:GetComputedRole",{"id":"8536ce8e-b5e3-47d0-bd87-002bc0df9c4e"}] +<< 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":"8536ce8e-b5e3-47d0-bd87-002bc0df9c4e"}}] +>> 81:[0,226,"WebDriver:GetComputedRole",{"id":"8536ce8e-b5e3-47d0-bd87-002bc0df9c4e"}] +<< 31:[1,226,null,{"value":"button"}] +>> 73:[0,227,"WebDriver:ExecuteScript",{"script":"return navigator.languages"}] +<< 37:[1,227,null,{"value":["en-US","en"]}] +>> 31:[0,228,"Marionette:GetContext"] +<< 32:[1,228,null,{"value":"content"}] +>> 50:[0,229,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,229,null,{"value":null}] +>> 369:[0,230,"WebDriver:ExecuteScript",{"args":["intl.accept_languages"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); return navigator.languages || branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data.split(/,\\s*/)"}] +<< 37:[1,230,null,{"value":["en-US","en"]}] +>> 31:[0,231,"Marionette:GetContext"] +<< 31:[1,231,null,{"value":"chrome"}] +>> 51:[0,232,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,232,null,{"value":null}] +>> 31:[0,233,"Marionette:GetContext"] +<< 32:[1,233,null,{"value":"content"}] +>> 50:[0,234,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,234,null,{"value":null}] +>> 369:[0,235,"WebDriver:ExecuteScript",{"args":["intl.accept_languages"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); return navigator.languages || branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data.split(/,\\s*/)"}] +<< 37:[1,235,null,{"value":["en-US","en"]}] +>> 31:[0,236,"Marionette:GetContext"] +<< 31:[1,236,null,{"value":"chrome"}] +>> 51:[0,237,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,237,null,{"value":null}] +>> 31:[0,238,"Marionette:GetContext"] +<< 32:[1,238,null,{"value":"content"}] +>> 50:[0,239,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,239,null,{"value":null}] +>> 843:[0,240,"WebDriver:ExecuteScript",{"args":["intl.accept_languages","en-AU, en-GB, en"],"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); } } "}] +<< 27:[1,240,null,{"value":null}] +>> 31:[0,241,"Marionette:GetContext"] +<< 31:[1,241,null,{"value":"chrome"}] +>> 51:[0,242,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,242,null,{"value":null}] +>> 73:[0,243,"WebDriver:ExecuteScript",{"script":"return navigator.languages"}] +<< 45:[1,243,null,{"value":["en-AU","en-GB","en"]}] +>> 31:[0,244,"Marionette:GetContext"] +<< 32:[1,244,null,{"value":"content"}] +>> 50:[0,245,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,245,null,{"value":null}] +>> 369:[0,246,"WebDriver:ExecuteScript",{"args":["intl.accept_languages"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); return navigator.languages || branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data.split(/,\\s*/)"}] +<< 45:[1,246,null,{"value":["en-AU","en-GB","en"]}] +>> 31:[0,247,"Marionette:GetContext"] +<< 31:[1,247,null,{"value":"chrome"}] +>> 51:[0,248,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,248,null,{"value":null}] +>> 31:[0,249,"Marionette:GetContext"] +<< 32:[1,249,null,{"value":"content"}] +>> 50:[0,250,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,250,null,{"value":null}] +>> 832:[0,251,"WebDriver:ExecuteScript",{"args":["intl.accept_languages","en-GB"],"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); } } "}] +<< 27:[1,251,null,{"value":null}] +>> 31:[0,252,"Marionette:GetContext"] +<< 31:[1,252,null,{"value":"chrome"}] +>> 51:[0,253,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,253,null,{"value":null}] +>> 73:[0,254,"WebDriver:ExecuteScript",{"script":"return navigator.languages"}] +<< 32:[1,254,null,{"value":["en-GB"]}] +>> 73:[0,255,"WebDriver:ExecuteScript",{"script":"return navigator.userAgent"}] +<< 95:[1,255,null,{"value":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"}] +>> 31:[0,256,"Marionette:GetContext"] +<< 32:[1,256,null,{"value":"content"}] +>> 50:[0,257,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,257,null,{"value":null}] +>> 868:[0,258,"WebDriver:ExecuteScript",{"args":["general.useragent.override","Firefox::Marionette v1.68 test suite"],"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); } } "}] +<< 27:[1,258,null,{"value":null}] +>> 31:[0,259,"Marionette:GetContext"] +<< 31:[1,259,null,{"value":"chrome"}] +>> 51:[0,260,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,260,null,{"value":null}] +>> 31:[0,261,"Marionette:GetContext"] +<< 32:[1,261,null,{"value":"content"}] +>> 50:[0,262,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,262,null,{"value":null}] +>> 831:[0,263,"WebDriver:ExecuteScript",{"args":["general.platform.override",""],"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); } } "}] +<< 27:[1,263,null,{"value":null}] +>> 31:[0,264,"Marionette:GetContext"] +<< 31:[1,264,null,{"value":"chrome"}] +>> 51:[0,265,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,265,null,{"value":null}] +>> 31:[0,266,"Marionette:GetContext"] +<< 32:[1,266,null,{"value":"content"}] +>> 50:[0,267,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,267,null,{"value":null}] +>> 833:[0,268,"WebDriver:ExecuteScript",{"args":["general.appversion.override",""],"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); } } "}] +<< 27:[1,268,null,{"value":null}] +>> 31:[0,269,"Marionette:GetContext"] +<< 31:[1,269,null,{"value":"chrome"}] +>> 51:[0,270,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,270,null,{"value":null}] +>> 31:[0,271,"Marionette:GetContext"] +<< 32:[1,271,null,{"value":"content"}] +>> 50:[0,272,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,272,null,{"value":null}] +>> 828:[0,273,"WebDriver:ExecuteScript",{"args":["general.oscpu.override",""],"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); } } "}] +<< 27:[1,273,null,{"value":null}] +>> 31:[0,274,"Marionette:GetContext"] +<< 31:[1,274,null,{"value":"chrome"}] +>> 51:[0,275,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,275,null,{"value":null}] +>> 31:[0,276,"Marionette:GetContext"] +<< 32:[1,276,null,{"value":"content"}] +>> 50:[0,277,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,277,null,{"value":null}] +>> 271:[0,278,"WebDriver:ExecuteScript",{"args":["network.http.accept"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 27:[1,278,null,{"value":null}] +>> 31:[0,279,"Marionette:GetContext"] +<< 31:[1,279,null,{"value":"chrome"}] +>> 51:[0,280,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,280,null,{"value":null}] +>> 31:[0,281,"Marionette:GetContext"] +<< 32:[1,281,null,{"value":"content"}] +>> 50:[0,282,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,282,null,{"value":null}] +>> 280:[0,283,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 27:[1,283,null,{"value":null}] +>> 31:[0,284,"Marionette:GetContext"] +<< 31:[1,284,null,{"value":"chrome"}] +>> 51:[0,285,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,285,null,{"value":null}] +>> 31:[0,286,"Marionette:GetContext"] +<< 32:[1,286,null,{"value":"content"}] +>> 50:[0,287,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,287,null,{"value":null}] +>> 287:[0,288,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding.secure"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 27:[1,288,null,{"value":null}] +>> 31:[0,289,"Marionette:GetContext"] +<< 31:[1,289,null,{"value":"chrome"}] +>> 51:[0,290,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,290,null,{"value":null}] +>> 31:[0,291,"Marionette:GetContext"] +<< 32:[1,291,null,{"value":"content"}] +>> 50:[0,292,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,292,null,{"value":null}] +>> 841:[0,293,"WebDriver:ExecuteScript",{"args":["privacy.donottrackheader.enabled",false],"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); } } "}] +<< 27:[1,293,null,{"value":null}] +>> 31:[0,294,"Marionette:GetContext"] +<< 31:[1,294,null,{"value":"chrome"}] +>> 51:[0,295,"Marionette:SetContext",{"value":"content"}] +<< 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":"44592c5d88a648681bcf422294d6f5d81f850962@temporary-addon"}] +<< 27:[1,297,null,{"value":null}] +>> 121:[0,298,"Addon:Install",{"path":"/tmp/firefox_marionette_local_n9yp72BtKpz/extension/stealth-0.0.1.xpi","temporary":true}] +<< 81:[1,298,null,{"value":"44592c5d88a648681bcf422294d6f5d81f850962@temporary-addon"}] +>> 174:[0,299,"WebDriver:Navigate",{"sessionId":"5fb4fb2d-9167-4910-964e-816838d069d8","url":"file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html"}] +[Parent 1947975, 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:1947975): GLib-GObject-CRITICAL **: 18:00:15.491: 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"}] +>> 31:[0,301,"Marionette:GetContext"] +<< 32:[1,301,null,{"value":"content"}] +>> 50:[0,302,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,302,null,{"value":null}] +>> 902:[0,303,"WebDriver:ExecuteScript",{"args":["general.useragent.override","Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"],"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); } } "}] +<< 27:[1,303,null,{"value":null}] +>> 31:[0,304,"Marionette:GetContext"] +<< 31:[1,304,null,{"value":"chrome"}] +>> 51:[0,305,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,305,null,{"value":null}] +>> 31:[0,306,"Marionette:GetContext"] +<< 32:[1,306,null,{"value":"content"}] +>> 50:[0,307,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,307,null,{"value":null}] +>> 843:[0,308,"WebDriver:ExecuteScript",{"args":["general.platform.override","Linux x86_64"],"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); } } "}] +<< 27:[1,308,null,{"value":null}] +>> 31:[0,309,"Marionette:GetContext"] +<< 31:[1,309,null,{"value":"chrome"}] +>> 51:[0,310,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,310,null,{"value":null}] +>> 31:[0,311,"Marionette:GetContext"] +<< 32:[1,311,null,{"value":"content"}] +>> 50:[0,312,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,312,null,{"value":null}] +>> 842:[0,313,"WebDriver:ExecuteScript",{"args":["general.appversion.override","5.0 (X11)"],"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); } } "}] +<< 27:[1,313,null,{"value":null}] +>> 31:[0,314,"Marionette:GetContext"] +<< 31:[1,314,null,{"value":"chrome"}] +>> 51:[0,315,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,315,null,{"value":null}] +>> 31:[0,316,"Marionette:GetContext"] +<< 32:[1,316,null,{"value":"content"}] +>> 50:[0,317,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,317,null,{"value":null}] +>> 840:[0,318,"WebDriver:ExecuteScript",{"args":["general.oscpu.override","Linux x86_64"],"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); } } "}] +<< 27:[1,318,null,{"value":null}] +>> 31:[0,319,"Marionette:GetContext"] +<< 31:[1,319,null,{"value":"chrome"}] +>> 51:[0,320,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,320,null,{"value":null}] +>> 31:[0,321,"Marionette:GetContext"] +<< 32:[1,321,null,{"value":"content"}] +>> 50:[0,322,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,322,null,{"value":null}] +>> 271:[0,323,"WebDriver:ExecuteScript",{"args":["network.http.accept"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 27:[1,323,null,{"value":null}] +>> 31:[0,324,"Marionette:GetContext"] +<< 31:[1,324,null,{"value":"chrome"}] +>> 51:[0,325,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,325,null,{"value":null}] +>> 31:[0,326,"Marionette:GetContext"] +<< 32:[1,326,null,{"value":"content"}] +>> 50:[0,327,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,327,null,{"value":null}] +>> 280:[0,328,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 27:[1,328,null,{"value":null}] +>> 31:[0,329,"Marionette:GetContext"] +<< 31:[1,329,null,{"value":"chrome"}] +>> 51:[0,330,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,330,null,{"value":null}] +>> 31:[0,331,"Marionette:GetContext"] +<< 32:[1,331,null,{"value":"content"}] +>> 50:[0,332,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,332,null,{"value":null}] +>> 287:[0,333,"WebDriver:ExecuteScript",{"args":["network.http.accept-encoding.secure"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 27:[1,333,null,{"value":null}] +>> 31:[0,334,"Marionette:GetContext"] +<< 31:[1,334,null,{"value":"chrome"}] +>> 51:[0,335,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,335,null,{"value":null}] +>> 31:[0,336,"Marionette:GetContext"] +<< 32:[1,336,null,{"value":"content"}] +>> 50:[0,337,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,337,null,{"value":null}] +>> 841:[0,338,"WebDriver:ExecuteScript",{"args":["privacy.donottrackheader.enabled",false],"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); } } "}] +<< 27:[1,338,null,{"value":null}] +>> 31:[0,339,"Marionette:GetContext"] +<< 31:[1,339,null,{"value":"chrome"}] +>> 51:[0,340,"Marionette:SetContext",{"value":"content"}] +<< 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":"44592c5d88a648681bcf422294d6f5d81f850962@temporary-addon"}] +<< 27:[1,342,null,{"value":null}] +>> 121:[0,343,"Addon:Install",{"path":"/tmp/firefox_marionette_local_n9yp72BtKpz/extension/stealth-0.0.1.xpi","temporary":true}] +<< 81:[1,343,null,{"value":"44592c5d88a648681bcf422294d6f5d81f850962@temporary-addon"}] +>> 68:[0,344,"WebDriver:FindElement",{"using":"class name","value":"add"}] +<< 101:[1,344,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"ab4eb966-af46-4766-b06d-20fa1dd8e80f"}}] +>> 156:[0,345,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"ab4eb966-af46-4766-b06d-20fa1dd8e80f"}],"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":"0fea53ca-5797-4ce3-bc66-c0741f3cbfde"}}] +>> 156:[0,348,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"0fea53ca-5797-4ce3-bc66-c0741f3cbfde"}],"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":"5fb4fb2d-9167-4910-964e-816838d069d8","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":"39800569-e23f-40d9-b273-87f8f909a59f"}}] +>> 78:[0,353,"WebDriver:ElementClick",{"id":"39800569-e23f-40d9-b273-87f8f909a59f"}] +<< 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":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}}] +>> 166:[0,355,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}],"script":"return arguments[0].children[0]"}] +<< 101:[1,355,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"39800569-e23f-40d9-b273-87f8f909a59f"}}] +>> 83:[0,356,"WebDriver:GetElementTagName",{"id":"39800569-e23f-40d9-b273-87f8f909a59f"}] +<< 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":"1c64e644-0e4a-4416-a5a3-fd5fcadbef21"}}] +>> 177:[0,358,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"1c64e644-0e4a-4416-a5a3-fd5fcadbef21"}],"script":"return arguments[0].shadowRoot.children[0]"}] +<< 101:[1,358,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"}}] +>> 201:[0,359,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}],"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":"1c64e644-0e4a-4416-a5a3-fd5fcadbef21"}],"script":"if (arguments[0].shadowRoot) { return true } else { return false }"}] +<< 27:[1,360,null,{"value":true}] +>> 83:[0,361,"WebDriver:GetElementTagName",{"id":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"}] +<< 30:[1,361,null,{"value":"style"}] +>> 79:[0,362,"WebDriver:GetShadowRoot",{"id":"1c64e644-0e4a-4416-a5a3-fd5fcadbef21"}] +<< 100:[1,362,null,{"value":{"shadow-6066-11e4-a52e-4f735466cecf":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00"}}] +>> 162:[0,363,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00"}],"script":"return arguments[0].children"}] +<< 498:[1,363,null,{"value":[{"element-6066-11e4-a52e-4f735466cecf":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"},{"element-6066-11e4-a52e-4f735466cecf":"0f8051a1-b8c3-448c-8b71-8068f3f0d8cb"},{"element-6066-11e4-a52e-4f735466cecf":"4a1d7c0c-9fca-423d-88a3-f4530a2eb050"},{"element-6066-11e4-a52e-4f735466cecf":"ca57216c-15ef-4e7a-b5fb-2b73029d6de5"},{"element-6066-11e4-a52e-4f735466cecf":"12d66f72-e135-4c73-a5b4-696e69604833"},{"element-6066-11e4-a52e-4f735466cecf":"9fb68b70-0667-4a10-8fe4-7363db2a3128"}]}] +>> 83:[0,364,"WebDriver:GetElementTagName",{"id":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"}] +<< 30:[1,364,null,{"value":"style"}] +>> 83:[0,365,"WebDriver:GetElementTagName",{"id":"0f8051a1-b8c3-448c-8b71-8068f3f0d8cb"}] +<< 28:[1,365,null,{"value":"div"}] +>> 165:[0,366,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00"}],"script":"return arguments[0].children[0]"}] +<< 101:[1,366,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"}}] +>> 83:[0,367,"WebDriver:GetElementTagName",{"id":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"}] +<< 30:[1,367,null,{"value":"style"}] +>> 172:[0,368,"WebDriver:ExecuteScript",{"args":[{"shadow-6066-11e4-a52e-4f735466cecf":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00"}],"script":"return [ 2, arguments[0].children[0] ]"}] +<< 105:[1,368,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"}]}] +>> 83:[0,369,"WebDriver:GetElementTagName",{"id":"edf69f9e-4c7b-4e2b-8a74-626881ae7a7a"}] +<< 30:[1,369,null,{"value":"style"}] +>> 132:[0,370,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","using":"id","value":"outer-div"}] +<< 101:[1,370,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0f8051a1-b8c3-448c-8b71-8068f3f0d8cb"}}] +>> 100:[0,371,"WebDriver:GetElementAttribute",{"id":"0f8051a1-b8c3-448c-8b71-8068f3f0d8cb","name":"title"}] +<< 45:[1,371,null,{"value":"In the Shadow Realms"}] +>> 134:[0,372,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","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":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","using":"css selector","value":"span"}] +<< 172:[1,373,null,[{"element-6066-11e4-a52e-4f735466cecf":"ca57216c-15ef-4e7a-b5fb-2b73029d6de5"},{"element-6066-11e4-a52e-4f735466cecf":"12d66f72-e135-4c73-a5b4-696e69604833"}]] +>> 83:[0,374,"WebDriver:GetElementTagName",{"id":"ca57216c-15ef-4e7a-b5fb-2b73029d6de5"}] +<< 29:[1,374,null,{"value":"span"}] +>> 83:[0,375,"WebDriver:GetElementTagName",{"id":"12d66f72-e135-4c73-a5b4-696e69604833"}] +<< 29:[1,375,null,{"value":"span"}] +>> 135:[0,376,"WebDriver:FindElementsFromShadowRoot",{"shadowRoot":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","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":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","using":"css selector","value":"notag"}] +<< 15:[1,377,null,[]] +>> 134:[0,378,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","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":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","using":"css selector","value":"[name=\"meta-name\""}] +<< 101:[1,379,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"4a1d7c0c-9fca-423d-88a3-f4530a2eb050"}}] +>> 100:[0,380,"WebDriver:GetElementAttribute",{"id":"4a1d7c0c-9fca-423d-88a3-f4530a2eb050","name":"title"}] +<< 34:[1,380,null,{"value":"Very META"}] +>> 146:[0,381,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","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":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","using":"css selector","value":".outer-div-class"}] +<< 101:[1,382,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"0f8051a1-b8c3-448c-8b71-8068f3f0d8cb"}}] +>> 100:[0,383,"WebDriver:GetElementAttribute",{"id":"0f8051a1-b8c3-448c-8b71-8068f3f0d8cb","name":"title"}] +<< 45:[1,383,null,{"value":"In the Shadow Realms"}] +>> 138:[0,384,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","using":"link text","value":"MetaCPAN"}] +<< 101:[1,384,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"9fb68b70-0667-4a10-8fe4-7363db2a3128"}}] +>> 99:[0,385,"WebDriver:GetElementAttribute",{"id":"9fb68b70-0667-4a10-8fe4-7363db2a3128","name":"href"}] +<< 45:[1,385,null,{"value":"https://metacpan.org"}] +>> 142:[0,386,"WebDriver:FindElementFromShadowRoot",{"shadowRoot":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00","using":"partial link text","value":"Meta"}] +<< 101:[1,386,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"9fb68b70-0667-4a10-8fe4-7363db2a3128"}}] +>> 99:[0,387,"WebDriver:GetElementAttribute",{"id":"9fb68b70-0667-4a10-8fe4-7363db2a3128","name":"href"}] +<< 45:[1,387,null,{"value":"https://metacpan.org"}] +>> 135:[0,388,"WebDriver:FindElement",{"using":{"shadow-6066-11e4-a52e-4f735466cecf":"a6c5448e-dd48-4ffd-bd27-79c9f19deb00"},"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":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}],"script":"return [2,1]"}] +<< 28:[1,389,null,{"value":[2,1]}] +>> 158:[0,390,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}],"script":"return [2,arguments[0]]"}] +<< 105:[1,390,null,{"value":[2,{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}]}] +>> 83:[0,391,"WebDriver:GetElementTagName",{"id":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}] +<< 29:[1,391,null,{"value":"span"}] +>> 163:[0,392,"WebDriver:ExecuteScript",{"args":[{"elem":{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}}],"script":"return arguments[0]"}] +<< 110:[1,392,null,{"value":{"elem":{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}}}] +>> 83:[0,393,"WebDriver:GetElementTagName",{"id":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}] +<< 29:[1,393,null,{"value":"span"}] +>> 143:[0,394,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}],"script":"return 2"}] +<< 24:[1,394,null,{"value":2}] +>> 154:[0,395,"WebDriver:ExecuteScript",{"args":[{"element-6066-11e4-a52e-4f735466cecf":"2df2994e-8208-4da1-bb0e-bd1833a6957d"}],"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}] +>> 31:[0,397,"Marionette:GetContext"] +<< 32:[1,397,null,{"value":"content"}] +>> 50:[0,398,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,398,null,{"value":null}] +>> 300:[0,399,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES === undefined) { return; } else { return clearDataService.CLEAR_COOKIES; } "}] +<< 24:[1,399,null,{"value":1}] +>> 31:[0,400,"Marionette:GetContext"] +<< 31:[1,400,null,{"value":"chrome"}] +>> 51:[0,401,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,401,null,{"value":null}] +>> 31:[0,402,"Marionette:GetContext"] +<< 32:[1,402,null,{"value":"content"}] +>> 50:[0,403,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,403,null,{"value":null}] +>> 300:[0,404,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES === undefined) { return; } else { return clearDataService.CLEAR_COOKIES; } "}] +<< 24:[1,404,null,{"value":1}] +>> 31:[0,405,"Marionette:GetContext"] +<< 31:[1,405,null,{"value":"chrome"}] +>> 51:[0,406,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,406,null,{"value":null}] +>> 31:[0,407,"Marionette:GetContext"] +<< 32:[1,407,null,{"value":"content"}] +>> 50:[0,408,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,408,null,{"value":null}] +>> 312:[0,409,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_NETWORK_CACHE === undefined) { return; } else { return clearDataService.CLEAR_NETWORK_CACHE; } "}] +<< 24:[1,409,null,{"value":2}] +>> 31:[0,410,"Marionette:GetContext"] +<< 31:[1,410,null,{"value":"chrome"}] +>> 51:[0,411,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,411,null,{"value":null}] +>> 31:[0,412,"Marionette:GetContext"] +<< 32:[1,412,null,{"value":"content"}] +>> 50:[0,413,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,413,null,{"value":null}] +>> 308:[0,414,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_IMAGE_CACHE === undefined) { return; } else { return clearDataService.CLEAR_IMAGE_CACHE; } "}] +<< 24:[1,414,null,{"value":4}] +>> 31:[0,415,"Marionette:GetContext"] +<< 31:[1,415,null,{"value":"chrome"}] +>> 51:[0,416,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,416,null,{"value":null}] +>> 31:[0,417,"Marionette:GetContext"] +<< 32:[1,417,null,{"value":"content"}] +>> 50:[0,418,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,418,null,{"value":null}] +>> 302:[0,419,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_JS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_JS_CACHE; } "}] +<< 24:[1,419,null,{"value":8}] +>> 31:[0,420,"Marionette:GetContext"] +<< 31:[1,420,null,{"value":"chrome"}] +>> 51:[0,421,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,421,null,{"value":null}] +>> 31:[0,422,"Marionette:GetContext"] +<< 32:[1,422,null,{"value":"content"}] +>> 50:[0,423,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,423,null,{"value":null}] +>> 304:[0,424,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOWNLOADS === undefined) { return; } else { return clearDataService.CLEAR_DOWNLOADS; } "}] +<< 25:[1,424,null,{"value":16}] +>> 31:[0,425,"Marionette:GetContext"] +<< 31:[1,425,null,{"value":"chrome"}] +>> 51:[0,426,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,426,null,{"value":null}] +>> 31:[0,427,"Marionette:GetContext"] +<< 32:[1,427,null,{"value":"content"}] +>> 50:[0,428,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,428,null,{"value":null}] +>> 312:[0,429,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MEDIA_DEVICES === undefined) { return; } else { return clearDataService.CLEAR_MEDIA_DEVICES; } "}] +<< 25:[1,429,null,{"value":64}] +>> 31:[0,430,"Marionette:GetContext"] +<< 31:[1,430,null,{"value":"chrome"}] +>> 51:[0,431,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,431,null,{"value":null}] +>> 31:[0,432,"Marionette:GetContext"] +<< 32:[1,432,null,{"value":"content"}] +>> 50:[0,433,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,433,null,{"value":null}] +>> 304:[0,434,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_QUOTA === undefined) { return; } else { return clearDataService.CLEAR_DOM_QUOTA; } "}] +<< 26:[1,434,null,{"value":128}] +>> 31:[0,435,"Marionette:GetContext"] +<< 31:[1,435,null,{"value":"chrome"}] +>> 51:[0,436,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,436,null,{"value":null}] +>> 31:[0,437,"Marionette:GetContext"] +<< 32:[1,437,null,{"value":"content"}] +>> 50:[0,438,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,438,null,{"value":null}] +>> 330:[0,439,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREDICTOR_NETWORK_DATA === undefined) { return; } else { return clearDataService.CLEAR_PREDICTOR_NETWORK_DATA; } "}] +<< 26:[1,439,null,{"value":256}] +>> 31:[0,440,"Marionette:GetContext"] +<< 31:[1,440,null,{"value":"chrome"}] +>> 51:[0,441,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,441,null,{"value":null}] +>> 31:[0,442,"Marionette:GetContext"] +<< 32:[1,442,null,{"value":"content"}] +>> 50:[0,443,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,443,null,{"value":null}] +>> 330:[0,444,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS === undefined) { return; } else { return clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS; } "}] +<< 26:[1,444,null,{"value":512}] +>> 31:[0,445,"Marionette:GetContext"] +<< 31:[1,445,null,{"value":"chrome"}] +>> 51:[0,446,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,446,null,{"value":null}] +>> 31:[0,447,"Marionette:GetContext"] +<< 32:[1,447,null,{"value":"content"}] +>> 50:[0,448,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,448,null,{"value":null}] +>> 300:[0,449,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HISTORY === undefined) { return; } else { return clearDataService.CLEAR_HISTORY; } "}] +<< 27:[1,449,null,{"value":1024}] +>> 31:[0,450,"Marionette:GetContext"] +<< 31:[1,450,null,{"value":"chrome"}] +>> 51:[0,451,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,451,null,{"value":null}] +>> 31:[0,452,"Marionette:GetContext"] +<< 32:[1,452,null,{"value":"content"}] +>> 50:[0,453,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,453,null,{"value":null}] +>> 308:[0,454,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_TOKENS === undefined) { return; } else { return clearDataService.CLEAR_AUTH_TOKENS; } "}] +<< 27:[1,454,null,{"value":4096}] +>> 31:[0,455,"Marionette:GetContext"] +<< 31:[1,455,null,{"value":"chrome"}] +>> 51:[0,456,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,456,null,{"value":null}] +>> 31:[0,457,"Marionette:GetContext"] +<< 32:[1,457,null,{"value":"content"}] +>> 50:[0,458,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,458,null,{"value":null}] +>> 306:[0,459,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_CACHE === undefined) { return; } else { return clearDataService.CLEAR_AUTH_CACHE; } "}] +<< 27:[1,459,null,{"value":8192}] +>> 31:[0,460,"Marionette:GetContext"] +<< 31:[1,460,null,{"value":"chrome"}] +>> 51:[0,461,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,461,null,{"value":null}] +>> 31:[0,462,"Marionette:GetContext"] +<< 32:[1,462,null,{"value":"content"}] +>> 50:[0,463,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,463,null,{"value":null}] +>> 308:[0,464,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_PERMISSIONS; } "}] +<< 33:[1,464,null,{"value":2147500032}] +>> 31:[0,465,"Marionette:GetContext"] +<< 31:[1,465,null,{"value":"chrome"}] +>> 51:[0,466,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,466,null,{"value":null}] +>> 31:[0,467,"Marionette:GetContext"] +<< 32:[1,467,null,{"value":"content"}] +>> 50:[0,468,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,468,null,{"value":null}] +>> 324:[0,469,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_PREFERENCES === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_PREFERENCES; } "}] +<< 28:[1,469,null,{"value":32768}] +>> 31:[0,470,"Marionette:GetContext"] +<< 31:[1,470,null,{"value":"chrome"}] +>> 51:[0,471,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,471,null,{"value":null}] +>> 31:[0,472,"Marionette:GetContext"] +<< 32:[1,472,null,{"value":"content"}] +>> 50:[0,473,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,473,null,{"value":null}] +>> 294:[0,474,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HSTS === undefined) { return; } else { return clearDataService.CLEAR_HSTS; } "}] +<< 28:[1,474,null,{"value":65536}] +>> 31:[0,475,"Marionette:GetContext"] +<< 31:[1,475,null,{"value":"chrome"}] +>> 51:[0,476,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,476,null,{"value":null}] +>> 31:[0,477,"Marionette:GetContext"] +<< 32:[1,477,null,{"value":"content"}] +>> 50:[0,478,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,478,null,{"value":null}] +>> 292:[0,479,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_EME === undefined) { return; } else { return clearDataService.CLEAR_EME; } "}] +<< 29:[1,479,null,{"value":131072}] +>> 31:[0,480,"Marionette:GetContext"] +<< 31:[1,480,null,{"value":"chrome"}] +>> 51:[0,481,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,481,null,{"value":null}] +>> 31:[0,482,"Marionette:GetContext"] +<< 32:[1,482,null,{"value":"content"}] +>> 50:[0,483,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,483,null,{"value":null}] +>> 300:[0,484,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_REPORTS === undefined) { return; } else { return clearDataService.CLEAR_REPORTS; } "}] +<< 29:[1,484,null,{"value":262144}] +>> 31:[0,485,"Marionette:GetContext"] +<< 31:[1,485,null,{"value":"chrome"}] +>> 51:[0,486,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,486,null,{"value":null}] +>> 31:[0,487,"Marionette:GetContext"] +<< 32:[1,487,null,{"value":"content"}] +>> 50:[0,488,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,488,null,{"value":null}] +>> 314:[0,489,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_ACCESS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_ACCESS; } "}] +<< 29:[1,489,null,{"value":524288}] +>> 31:[0,490,"Marionette:GetContext"] +<< 31:[1,490,null,{"value":"chrome"}] +>> 51:[0,491,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,491,null,{"value":null}] +>> 31:[0,492,"Marionette:GetContext"] +<< 32:[1,492,null,{"value":"content"}] +>> 50:[0,493,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,493,null,{"value":null}] +>> 316:[0,494,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CERT_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_CERT_EXCEPTIONS; } "}] +<< 30:[1,494,null,{"value":1048576}] +>> 31:[0,495,"Marionette:GetContext"] +<< 31:[1,495,null,{"value":"chrome"}] +>> 51:[0,496,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,496,null,{"value":null}] +>> 31:[0,497,"Marionette:GetContext"] +<< 32:[1,497,null,{"value":"content"}] +>> 50:[0,498,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,498,null,{"value":null}] +>> 334:[0,499,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS; } "}] +<< 30:[1,499,null,{"value":2097152}] +>> 31:[0,500,"Marionette:GetContext"] +<< 31:[1,500,null,{"value":"chrome"}] +>> 51:[0,501,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,501,null,{"value":null}] +>> 31:[0,502,"Marionette:GetContext"] +<< 32:[1,502,null,{"value":"content"}] +>> 50:[0,503,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,503,null,{"value":null}] +>> 304:[0,504,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CSS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_CSS_CACHE; } "}] +<< 30:[1,504,null,{"value":4194304}] +>> 31:[0,505,"Marionette:GetContext"] +<< 31:[1,505,null,{"value":"chrome"}] +>> 51:[0,506,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,506,null,{"value":null}] +>> 31:[0,507,"Marionette:GetContext"] +<< 32:[1,507,null,{"value":"content"}] +>> 50:[0,508,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,508,null,{"value":null}] +>> 316:[0,509,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREFLIGHT_CACHE === undefined) { return; } else { return clearDataService.CLEAR_PREFLIGHT_CACHE; } "}] +<< 30:[1,509,null,{"value":8388608}] +>> 31:[0,510,"Marionette:GetContext"] +<< 31:[1,510,null,{"value":"chrome"}] +>> 51:[0,511,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,511,null,{"value":null}] +>> 31:[0,512,"Marionette:GetContext"] +<< 32:[1,512,null,{"value":"content"}] +>> 50:[0,513,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,513,null,{"value":null}] +>> 342:[0,514,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE === undefined) { return; } else { return clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE; } "}] +<< 31:[1,514,null,{"value":16777216}] +>> 31:[0,515,"Marionette:GetContext"] +<< 31:[1,515,null,{"value":"chrome"}] +>> 51:[0,516,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,516,null,{"value":null}] +>> 31:[0,517,"Marionette:GetContext"] +<< 32:[1,517,null,{"value":"content"}] +>> 50:[0,518,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,518,null,{"value":null}] +>> 334:[0,519,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE === undefined) { return; } else { return clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE; } "}] +<< 31:[1,519,null,{"value":33554432}] +>> 31:[0,520,"Marionette:GetContext"] +<< 31:[1,520,null,{"value":"chrome"}] +>> 51:[0,521,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,521,null,{"value":null}] +>> 31:[0,522,"Marionette:GetContext"] +<< 32:[1,522,null,{"value":"content"}] +>> 50:[0,523,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,523,null,{"value":null}] +>> 332:[0,524,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION; } "}] +<< 31:[1,524,null,{"value":67108864}] +>> 31:[0,525,"Marionette:GetContext"] +<< 31:[1,525,null,{"value":"chrome"}] +>> 51:[0,526,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,526,null,{"value":null}] +>> 31:[0,527,"Marionette:GetContext"] +<< 32:[1,527,null,{"value":"content"}] +>> 50:[0,528,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,528,null,{"value":null}] +>> 344:[0,529,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD; } "}] +<< 32:[1,529,null,{"value":134217728}] +>> 31:[0,530,"Marionette:GetContext"] +<< 31:[1,530,null,{"value":"chrome"}] +>> 51:[0,531,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,531,null,{"value":null}] +>> 31:[0,532,"Marionette:GetContext"] +<< 32:[1,532,null,{"value":"content"}] +>> 50:[0,533,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,533,null,{"value":null}] +>> 348:[0,534,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE; } "}] +<< 32:[1,534,null,{"value":268435456}] +>> 31:[0,535,"Marionette:GetContext"] +<< 31:[1,535,null,{"value":"chrome"}] +>> 51:[0,536,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,536,null,{"value":null}] +>> 31:[0,537,"Marionette:GetContext"] +<< 32:[1,537,null,{"value":"content"}] +>> 50:[0,538,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,538,null,{"value":null}] +>> 350:[0,539,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE; } "}] +<< 32:[1,539,null,{"value":536870912}] +>> 31:[0,540,"Marionette:GetContext"] +<< 31:[1,540,null,{"value":"chrome"}] +>> 51:[0,541,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,541,null,{"value":null}] +>> 31:[0,542,"Marionette:GetContext"] +<< 32:[1,542,null,{"value":"content"}] +>> 50:[0,543,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,543,null,{"value":null}] +>> 346:[0,544,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE === undefined) { return; } else { return clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE; } "}] +<< 27:[1,544,null,{"value":2048}] +>> 31:[0,545,"Marionette:GetContext"] +<< 31:[1,545,null,{"value":"chrome"}] +>> 51:[0,546,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,546,null,{"value":null}] +>> 31:[0,547,"Marionette:GetContext"] +<< 32:[1,547,null,{"value":"content"}] +>> 50:[0,548,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,548,null,{"value":null}] +>> 324:[0,549,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_PERMISSIONS; } "}] +<< 33:[1,549,null,{"value":1073741824}] +>> 31:[0,550,"Marionette:GetContext"] +<< 31:[1,550,null,{"value":"chrome"}] +>> 51:[0,551,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,551,null,{"value":null}] +>> 31:[0,552,"Marionette:GetContext"] +<< 32:[1,552,null,{"value":"content"}] +>> 50:[0,553,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,553,null,{"value":null}] +>> 324:[0,554,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS; } "}] +<< 33:[1,554,null,{"value":2147483648}] +>> 31:[0,555,"Marionette:GetContext"] +<< 31:[1,555,null,{"value":"chrome"}] +>> 51:[0,556,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,556,null,{"value":null}] +>> 31:[0,557,"Marionette:GetContext"] +<< 32:[1,557,null,{"value":"content"}] +>> 50:[0,558,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,558,null,{"value":null}] +>> 292:[0,559,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL === undefined) { return; } else { return clearDataService.CLEAR_ALL; } "}] +<< 33:[1,559,null,{"value":4294967295}] +>> 31:[0,560,"Marionette:GetContext"] +<< 31:[1,560,null,{"value":"chrome"}] +>> 51:[0,561,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,561,null,{"value":null}] +>> 31:[0,562,"Marionette:GetContext"] +<< 32:[1,562,null,{"value":"content"}] +>> 50:[0,563,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,563,null,{"value":null}] +>> 306:[0,564,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL_CACHES === undefined) { return; } else { return clearDataService.CLEAR_ALL_CACHES; } "}] +<< 31:[1,564,null,{"value":12648462}] +>> 31:[0,565,"Marionette:GetContext"] +<< 31:[1,565,null,{"value":"chrome"}] +>> 51:[0,566,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,566,null,{"value":null}] +>> 31:[0,567,"Marionette:GetContext"] +<< 32:[1,567,null,{"value":"content"}] +>> 50:[0,568,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,568,null,{"value":null}] +>> 310:[0,569,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_STORAGES === undefined) { return; } else { return clearDataService.CLEAR_DOM_STORAGES; } "}] +<< 29:[1,569,null,{"value":262784}] +>> 31:[0,570,"Marionette:GetContext"] +<< 31:[1,570,null,{"value":"chrome"}] +>> 51:[0,571,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,571,null,{"value":null}] +>> 31:[0,572,"Marionette:GetContext"] +<< 32:[1,572,null,{"value":"content"}] +>> 50:[0,573,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,573,null,{"value":null}] +>> 320:[0,574,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FORGET_ABOUT_SITE === undefined) { return; } else { return clearDataService.CLEAR_FORGET_ABOUT_SITE; } "}] +<< 33:[1,574,null,{"value":3218591647}] +>> 31:[0,575,"Marionette:GetContext"] +<< 31:[1,575,null,{"value":"chrome"}] +>> 51:[0,576,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,576,null,{"value":null}] +>> 31:[0,577,"Marionette:GetContext"] +<< 32:[1,577,null,{"value":"content"}] +>> 50:[0,578,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,578,null,{"value":null}] +>> 328:[0,579,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES_AND_SITE_DATA === undefined) { return; } else { return clearDataService.CLEAR_COOKIES_AND_SITE_DATA; } "}] +<< 33:[1,579,null,{"value":2013739649}] +>> 31:[0,580,"Marionette:GetContext"] +<< 31:[1,580,null,{"value":"chrome"}] +>> 51:[0,581,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,581,null,{"value":null}] +>> 31:[0,582,"Marionette:GetContext"] +<< 32:[1,582,null,{"value":"content"}] +>> 50:[0,583,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,583,null,{"value":null}] +>> 300:[0,584,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES === undefined) { return; } else { return clearDataService.CLEAR_COOKIES; } "}] +<< 24:[1,584,null,{"value":1}] +>> 31:[0,585,"Marionette:GetContext"] +<< 31:[1,585,null,{"value":"chrome"}] +>> 51:[0,586,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,586,null,{"value":null}] +>> 31:[0,587,"Marionette:GetContext"] +<< 32:[1,587,null,{"value":"content"}] +>> 50:[0,588,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,588,null,{"value":null}] +>> 312:[0,589,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_NETWORK_CACHE === undefined) { return; } else { return clearDataService.CLEAR_NETWORK_CACHE; } "}] +<< 24:[1,589,null,{"value":2}] +>> 31:[0,590,"Marionette:GetContext"] +<< 31:[1,590,null,{"value":"chrome"}] +>> 51:[0,591,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,591,null,{"value":null}] +>> 31:[0,592,"Marionette:GetContext"] +<< 32:[1,592,null,{"value":"content"}] +>> 50:[0,593,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,593,null,{"value":null}] +>> 308:[0,594,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_IMAGE_CACHE === undefined) { return; } else { return clearDataService.CLEAR_IMAGE_CACHE; } "}] +<< 24:[1,594,null,{"value":4}] +>> 31:[0,595,"Marionette:GetContext"] +<< 31:[1,595,null,{"value":"chrome"}] +>> 51:[0,596,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,596,null,{"value":null}] +>> 31:[0,597,"Marionette:GetContext"] +<< 32:[1,597,null,{"value":"content"}] +>> 50:[0,598,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,598,null,{"value":null}] +>> 302:[0,599,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_JS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_JS_CACHE; } "}] +<< 24:[1,599,null,{"value":8}] +>> 31:[0,600,"Marionette:GetContext"] +<< 31:[1,600,null,{"value":"chrome"}] +>> 51:[0,601,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,601,null,{"value":null}] +>> 31:[0,602,"Marionette:GetContext"] +<< 32:[1,602,null,{"value":"content"}] +>> 50:[0,603,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,603,null,{"value":null}] +>> 304:[0,604,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOWNLOADS === undefined) { return; } else { return clearDataService.CLEAR_DOWNLOADS; } "}] +<< 25:[1,604,null,{"value":16}] +>> 31:[0,605,"Marionette:GetContext"] +<< 31:[1,605,null,{"value":"chrome"}] +>> 51:[0,606,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,606,null,{"value":null}] +>> 31:[0,607,"Marionette:GetContext"] +<< 32:[1,607,null,{"value":"content"}] +>> 50:[0,608,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,608,null,{"value":null}] +>> 312:[0,609,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MEDIA_DEVICES === undefined) { return; } else { return clearDataService.CLEAR_MEDIA_DEVICES; } "}] +<< 25:[1,609,null,{"value":64}] +>> 31:[0,610,"Marionette:GetContext"] +<< 31:[1,610,null,{"value":"chrome"}] +>> 51:[0,611,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,611,null,{"value":null}] +>> 31:[0,612,"Marionette:GetContext"] +<< 32:[1,612,null,{"value":"content"}] +>> 50:[0,613,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,613,null,{"value":null}] +>> 304:[0,614,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_QUOTA === undefined) { return; } else { return clearDataService.CLEAR_DOM_QUOTA; } "}] +<< 26:[1,614,null,{"value":128}] +>> 31:[0,615,"Marionette:GetContext"] +<< 31:[1,615,null,{"value":"chrome"}] +>> 51:[0,616,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,616,null,{"value":null}] +>> 31:[0,617,"Marionette:GetContext"] +<< 32:[1,617,null,{"value":"content"}] +>> 50:[0,618,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,618,null,{"value":null}] +>> 330:[0,619,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREDICTOR_NETWORK_DATA === undefined) { return; } else { return clearDataService.CLEAR_PREDICTOR_NETWORK_DATA; } "}] +<< 26:[1,619,null,{"value":256}] +>> 31:[0,620,"Marionette:GetContext"] +<< 31:[1,620,null,{"value":"chrome"}] +>> 51:[0,621,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,621,null,{"value":null}] +>> 31:[0,622,"Marionette:GetContext"] +<< 32:[1,622,null,{"value":"content"}] +>> 50:[0,623,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,623,null,{"value":null}] +>> 330:[0,624,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS === undefined) { return; } else { return clearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS; } "}] +<< 26:[1,624,null,{"value":512}] +>> 31:[0,625,"Marionette:GetContext"] +<< 31:[1,625,null,{"value":"chrome"}] +>> 51:[0,626,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,626,null,{"value":null}] +>> 31:[0,627,"Marionette:GetContext"] +<< 32:[1,627,null,{"value":"content"}] +>> 50:[0,628,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,628,null,{"value":null}] +>> 300:[0,629,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HISTORY === undefined) { return; } else { return clearDataService.CLEAR_HISTORY; } "}] +<< 27:[1,629,null,{"value":1024}] +>> 31:[0,630,"Marionette:GetContext"] +<< 31:[1,630,null,{"value":"chrome"}] +>> 51:[0,631,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,631,null,{"value":null}] +>> 31:[0,632,"Marionette:GetContext"] +<< 32:[1,632,null,{"value":"content"}] +>> 50:[0,633,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,633,null,{"value":null}] +>> 308:[0,634,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_TOKENS === undefined) { return; } else { return clearDataService.CLEAR_AUTH_TOKENS; } "}] +<< 27:[1,634,null,{"value":4096}] +>> 31:[0,635,"Marionette:GetContext"] +<< 31:[1,635,null,{"value":"chrome"}] +>> 51:[0,636,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,636,null,{"value":null}] +>> 31:[0,637,"Marionette:GetContext"] +<< 32:[1,637,null,{"value":"content"}] +>> 50:[0,638,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,638,null,{"value":null}] +>> 306:[0,639,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_AUTH_CACHE === undefined) { return; } else { return clearDataService.CLEAR_AUTH_CACHE; } "}] +<< 27:[1,639,null,{"value":8192}] +>> 31:[0,640,"Marionette:GetContext"] +<< 31:[1,640,null,{"value":"chrome"}] +>> 51:[0,641,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,641,null,{"value":null}] +>> 31:[0,642,"Marionette:GetContext"] +<< 32:[1,642,null,{"value":"content"}] +>> 50:[0,643,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,643,null,{"value":null}] +>> 308:[0,644,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_PERMISSIONS; } "}] +<< 33:[1,644,null,{"value":2147500032}] +>> 31:[0,645,"Marionette:GetContext"] +<< 31:[1,645,null,{"value":"chrome"}] +>> 51:[0,646,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,646,null,{"value":null}] +>> 31:[0,647,"Marionette:GetContext"] +<< 32:[1,647,null,{"value":"content"}] +>> 50:[0,648,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,648,null,{"value":null}] +>> 324:[0,649,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_PREFERENCES === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_PREFERENCES; } "}] +<< 28:[1,649,null,{"value":32768}] +>> 31:[0,650,"Marionette:GetContext"] +<< 31:[1,650,null,{"value":"chrome"}] +>> 51:[0,651,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,651,null,{"value":null}] +>> 31:[0,652,"Marionette:GetContext"] +<< 32:[1,652,null,{"value":"content"}] +>> 50:[0,653,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,653,null,{"value":null}] +>> 294:[0,654,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_HSTS === undefined) { return; } else { return clearDataService.CLEAR_HSTS; } "}] +<< 28:[1,654,null,{"value":65536}] +>> 31:[0,655,"Marionette:GetContext"] +<< 31:[1,655,null,{"value":"chrome"}] +>> 51:[0,656,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,656,null,{"value":null}] +>> 31:[0,657,"Marionette:GetContext"] +<< 32:[1,657,null,{"value":"content"}] +>> 50:[0,658,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,658,null,{"value":null}] +>> 292:[0,659,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_EME === undefined) { return; } else { return clearDataService.CLEAR_EME; } "}] +<< 29:[1,659,null,{"value":131072}] +>> 31:[0,660,"Marionette:GetContext"] +<< 31:[1,660,null,{"value":"chrome"}] +>> 51:[0,661,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,661,null,{"value":null}] +>> 31:[0,662,"Marionette:GetContext"] +<< 32:[1,662,null,{"value":"content"}] +>> 50:[0,663,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,663,null,{"value":null}] +>> 300:[0,664,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_REPORTS === undefined) { return; } else { return clearDataService.CLEAR_REPORTS; } "}] +<< 29:[1,664,null,{"value":262144}] +>> 31:[0,665,"Marionette:GetContext"] +<< 31:[1,665,null,{"value":"chrome"}] +>> 51:[0,666,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,666,null,{"value":null}] +>> 31:[0,667,"Marionette:GetContext"] +<< 32:[1,667,null,{"value":"content"}] +>> 50:[0,668,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,668,null,{"value":null}] +>> 314:[0,669,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_ACCESS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_ACCESS; } "}] +<< 29:[1,669,null,{"value":524288}] +>> 31:[0,670,"Marionette:GetContext"] +<< 31:[1,670,null,{"value":"chrome"}] +>> 51:[0,671,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,671,null,{"value":null}] +>> 31:[0,672,"Marionette:GetContext"] +<< 32:[1,672,null,{"value":"content"}] +>> 50:[0,673,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,673,null,{"value":null}] +>> 316:[0,674,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CERT_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_CERT_EXCEPTIONS; } "}] +<< 30:[1,674,null,{"value":1048576}] +>> 31:[0,675,"Marionette:GetContext"] +<< 31:[1,675,null,{"value":"chrome"}] +>> 51:[0,676,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,676,null,{"value":null}] +>> 31:[0,677,"Marionette:GetContext"] +<< 32:[1,677,null,{"value":"content"}] +>> 50:[0,678,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,678,null,{"value":null}] +>> 334:[0,679,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS === undefined) { return; } else { return clearDataService.CLEAR_CONTENT_BLOCKING_RECORDS; } "}] +<< 30:[1,679,null,{"value":2097152}] +>> 31:[0,680,"Marionette:GetContext"] +<< 31:[1,680,null,{"value":"chrome"}] +>> 51:[0,681,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,681,null,{"value":null}] +>> 31:[0,682,"Marionette:GetContext"] +<< 32:[1,682,null,{"value":"content"}] +>> 50:[0,683,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,683,null,{"value":null}] +>> 304:[0,684,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CSS_CACHE === undefined) { return; } else { return clearDataService.CLEAR_CSS_CACHE; } "}] +<< 30:[1,684,null,{"value":4194304}] +>> 31:[0,685,"Marionette:GetContext"] +<< 31:[1,685,null,{"value":"chrome"}] +>> 51:[0,686,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,686,null,{"value":null}] +>> 31:[0,687,"Marionette:GetContext"] +<< 32:[1,687,null,{"value":"content"}] +>> 50:[0,688,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,688,null,{"value":null}] +>> 316:[0,689,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_PREFLIGHT_CACHE === undefined) { return; } else { return clearDataService.CLEAR_PREFLIGHT_CACHE; } "}] +<< 30:[1,689,null,{"value":8388608}] +>> 31:[0,690,"Marionette:GetContext"] +<< 31:[1,690,null,{"value":"chrome"}] +>> 51:[0,691,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,691,null,{"value":null}] +>> 31:[0,692,"Marionette:GetContext"] +<< 32:[1,692,null,{"value":"content"}] +>> 50:[0,693,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,693,null,{"value":null}] +>> 342:[0,694,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE === undefined) { return; } else { return clearDataService.CLEAR_CLIENT_AUTH_REMEMBER_SERVICE; } "}] +<< 31:[1,694,null,{"value":16777216}] +>> 31:[0,695,"Marionette:GetContext"] +<< 31:[1,695,null,{"value":"chrome"}] +>> 51:[0,696,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,696,null,{"value":null}] +>> 31:[0,697,"Marionette:GetContext"] +<< 32:[1,697,null,{"value":"content"}] +>> 50:[0,698,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,698,null,{"value":null}] +>> 334:[0,699,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE === undefined) { return; } else { return clearDataService.CLEAR_CREDENTIAL_MANAGER_STATE; } "}] +<< 31:[1,699,null,{"value":33554432}] +>> 31:[0,700,"Marionette:GetContext"] +<< 31:[1,700,null,{"value":"chrome"}] +>> 51:[0,701,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,701,null,{"value":null}] +>> 31:[0,702,"Marionette:GetContext"] +<< 32:[1,702,null,{"value":"content"}] +>> 50:[0,703,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,703,null,{"value":null}] +>> 332:[0,704,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXCEPTION; } "}] +<< 31:[1,704,null,{"value":67108864}] +>> 31:[0,705,"Marionette:GetContext"] +<< 31:[1,705,null,{"value":"chrome"}] +>> 51:[0,706,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,706,null,{"value":null}] +>> 31:[0,707,"Marionette:GetContext"] +<< 32:[1,707,null,{"value":"content"}] +>> 50:[0,708,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,708,null,{"value":null}] +>> 344:[0,709,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD === undefined) { return; } else { return clearDataService.CLEAR_COOKIE_BANNER_EXECUTED_RECORD; } "}] +<< 32:[1,709,null,{"value":134217728}] +>> 31:[0,710,"Marionette:GetContext"] +<< 31:[1,710,null,{"value":"chrome"}] +>> 51:[0,711,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,711,null,{"value":null}] +>> 31:[0,712,"Marionette:GetContext"] +<< 32:[1,712,null,{"value":"content"}] +>> 50:[0,713,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,713,null,{"value":null}] +>> 348:[0,714,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_FINGERPRINTING_PROTECTION_STATE; } "}] +<< 32:[1,714,null,{"value":268435456}] +>> 31:[0,715,"Marionette:GetContext"] +<< 31:[1,715,null,{"value":"chrome"}] +>> 51:[0,716,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,716,null,{"value":null}] +>> 31:[0,717,"Marionette:GetContext"] +<< 32:[1,717,null,{"value":"content"}] +>> 50:[0,718,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,718,null,{"value":null}] +>> 350:[0,719,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE === undefined) { return; } else { return clearDataService.CLEAR_BOUNCE_TRACKING_PROTECTION_STATE; } "}] +<< 32:[1,719,null,{"value":536870912}] +>> 31:[0,720,"Marionette:GetContext"] +<< 31:[1,720,null,{"value":"chrome"}] +>> 51:[0,721,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,721,null,{"value":null}] +>> 31:[0,722,"Marionette:GetContext"] +<< 32:[1,722,null,{"value":"content"}] +>> 50:[0,723,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,723,null,{"value":null}] +>> 346:[0,724,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE === undefined) { return; } else { return clearDataService.CLEAR_MESSAGING_LAYER_SECURITY_STATE; } "}] +<< 27:[1,724,null,{"value":2048}] +>> 31:[0,725,"Marionette:GetContext"] +<< 31:[1,725,null,{"value":"chrome"}] +>> 51:[0,726,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,726,null,{"value":null}] +>> 31:[0,727,"Marionette:GetContext"] +<< 32:[1,727,null,{"value":"content"}] +>> 50:[0,728,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,728,null,{"value":null}] +>> 324:[0,729,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_STORAGE_PERMISSIONS === undefined) { return; } else { return clearDataService.CLEAR_STORAGE_PERMISSIONS; } "}] +<< 33:[1,729,null,{"value":1073741824}] +>> 31:[0,730,"Marionette:GetContext"] +<< 31:[1,730,null,{"value":"chrome"}] +>> 51:[0,731,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,731,null,{"value":null}] +>> 31:[0,732,"Marionette:GetContext"] +<< 32:[1,732,null,{"value":"content"}] +>> 50:[0,733,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,733,null,{"value":null}] +>> 324:[0,734,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS === undefined) { return; } else { return clearDataService.CLEAR_SHUTDOWN_EXCEPTIONS; } "}] +<< 33:[1,734,null,{"value":2147483648}] +>> 31:[0,735,"Marionette:GetContext"] +<< 31:[1,735,null,{"value":"chrome"}] +>> 51:[0,736,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,736,null,{"value":null}] +>> 31:[0,737,"Marionette:GetContext"] +<< 32:[1,737,null,{"value":"content"}] +>> 50:[0,738,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,738,null,{"value":null}] +>> 292:[0,739,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL === undefined) { return; } else { return clearDataService.CLEAR_ALL; } "}] +<< 33:[1,739,null,{"value":4294967295}] +>> 31:[0,740,"Marionette:GetContext"] +<< 31:[1,740,null,{"value":"chrome"}] +>> 51:[0,741,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,741,null,{"value":null}] +>> 31:[0,742,"Marionette:GetContext"] +<< 32:[1,742,null,{"value":"content"}] +>> 50:[0,743,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,743,null,{"value":null}] +>> 306:[0,744,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_ALL_CACHES === undefined) { return; } else { return clearDataService.CLEAR_ALL_CACHES; } "}] +<< 31:[1,744,null,{"value":12648462}] +>> 31:[0,745,"Marionette:GetContext"] +<< 31:[1,745,null,{"value":"chrome"}] +>> 51:[0,746,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,746,null,{"value":null}] +>> 31:[0,747,"Marionette:GetContext"] +<< 32:[1,747,null,{"value":"content"}] +>> 50:[0,748,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,748,null,{"value":null}] +>> 310:[0,749,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_DOM_STORAGES === undefined) { return; } else { return clearDataService.CLEAR_DOM_STORAGES; } "}] +<< 29:[1,749,null,{"value":262784}] +>> 31:[0,750,"Marionette:GetContext"] +<< 31:[1,750,null,{"value":"chrome"}] +>> 51:[0,751,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,751,null,{"value":null}] +>> 31:[0,752,"Marionette:GetContext"] +<< 32:[1,752,null,{"value":"content"}] +>> 50:[0,753,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,753,null,{"value":null}] +>> 320:[0,754,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_FORGET_ABOUT_SITE === undefined) { return; } else { return clearDataService.CLEAR_FORGET_ABOUT_SITE; } "}] +<< 33:[1,754,null,{"value":3218591647}] +>> 31:[0,755,"Marionette:GetContext"] +<< 31:[1,755,null,{"value":"chrome"}] +>> 51:[0,756,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,756,null,{"value":null}] +>> 31:[0,757,"Marionette:GetContext"] +<< 32:[1,757,null,{"value":"content"}] +>> 50:[0,758,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,758,null,{"value":null}] +>> 328:[0,759,"WebDriver:ExecuteScript",{"script":"let clearDataService = Components.classes[\"@mozilla.org/clear-data-service;1\"].getService(Components.interfaces.nsIClearDataService); if (typeof clearDataService.CLEAR_COOKIES_AND_SITE_DATA === undefined) { return; } else { return clearDataService.CLEAR_COOKIES_AND_SITE_DATA; } "}] +<< 33:[1,759,null,{"value":2013739649}] +>> 31:[0,760,"Marionette:GetContext"] +<< 31:[1,760,null,{"value":"chrome"}] +>> 51:[0,761,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,761,null,{"value":null}] +>> 31:[0,762,"Marionette:GetContext"] +<< 32:[1,762,null,{"value":"content"}] +>> 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":1947975,"moz:profile":"/tmp/firefox_marionette_local_n9yp72BtKpz/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 95 seconds at t/01-marionette.t line 2132 +# Testing has been running for 23 seconds at t/01-marionette.t line 2132 +** firefox --version +** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_UNwxHPCbaU0/profile --no-remote --new-instance +[1948578] 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":"f23a7c5a-8ebf-40ad-b54e-1ade472c9097","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":1948578,"moz:profile":"/tmp/firefox_marionette_local_UNwxHPCbaU0/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":1794506418,"lastModified":1794506418,"childCount":5}}] +>> 29:[0,5,"Marionette:GetContext"] +<< 29:[1,5,null,{"value":"chrome"}] +>> 49:[0,6,"Marionette:SetContext",{"value":"content"}] +<< 25:[1,6,null,{"value":null}] +>> 29:[0,7,"Marionette:GetContext"] +<< 30:[1,7,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 30:[0,10,"Marionette:GetContext"] +<< 30:[1,10,null,{"value":"chrome"}] +>> 50:[0,11,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,11,null,{"value":null}] +>> 30:[0,12,"Marionette:GetContext"] +<< 31:[1,12,null,{"value":"content"}] +>> 49:[0,13,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,13,null,{"value":null}] +>> 2275:[0,14,"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]); "}] +<< 26:[1,14,null,{"value":null}] +>> 30:[0,15,"Marionette:GetContext"] +<< 30:[1,15,null,{"value":"chrome"}] +>> 50:[0,16,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,16,null,{"value":null}] +>> 30:[0,17,"Marionette:GetContext"] +<< 31:[1,17,null,{"value":"content"}] +>> 49:[0,18,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,18,null,{"value":null}] +>> 2982:[0,19,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685611344,"guid":"ExAzkxs5efkR","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; "}] +<< 188:[1,19,null,{"value":{"dateAdded":"2023-06-01T09:22:24.000Z","guid":"ExAzkxs5efkR","lastModified":"2023-06-02T02:20:02.000Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0}}] +>> 30:[0,20,"Marionette:GetContext"] +<< 30:[1,20,null,{"value":"chrome"}] +>> 50:[0,21,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,21,null,{"value":null}] +>> 30:[0,22,"Marionette:GetContext"] +<< 31:[1,22,null,{"value":"content"}] +>> 49:[0,23,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,23,null,{"value":null}] +>> 2275:[0,24,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,24,null,{"value":null}] +>> 30:[0,25,"Marionette:GetContext"] +<< 30:[1,25,null,{"value":"chrome"}] +>> 50:[0,26,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,26,null,{"value":null}] +>> 30:[0,27,"Marionette:GetContext"] +<< 31:[1,27,null,{"value":"content"}] +>> 49:[0,28,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,28,null,{"value":null}] +>> 3199:[0,29,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"utcxPgIOG05d","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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,29,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"utcxPgIOG05d","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":0}}] +>> 30:[0,30,"Marionette:GetContext"] +<< 30:[1,30,null,{"value":"chrome"}] +>> 50:[0,31,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,31,null,{"value":null}] +>> 30:[0,32,"Marionette:GetContext"] +<< 31:[1,32,null,{"value":"content"}] +>> 49:[0,33,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,33,null,{"value":null}] +>> 2275:[0,34,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,34,null,{"value":null}] +>> 30:[0,35,"Marionette:GetContext"] +<< 30:[1,35,null,{"value":"chrome"}] +>> 50:[0,36,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,36,null,{"value":null}] +>> 30:[0,37,"Marionette:GetContext"] +<< 31:[1,37,null,{"value":"content"}] +>> 49:[0,38,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,38,null,{"value":null}] +>> 3231:[0,39,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"XiZLcg8n_B4A","iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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,39,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"XiZLcg8n_B4A","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","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}}] +>> 30:[0,40,"Marionette:GetContext"] +<< 30:[1,40,null,{"value":"chrome"}] +>> 50:[0,41,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,41,null,{"value":null}] +>> 30:[0,42,"Marionette:GetContext"] +<< 31:[1,42,null,{"value":"content"}] +>> 49:[0,43,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,43,null,{"value":null}] +>> 2275:[0,44,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,44,null,{"value":null}] +>> 30:[0,45,"Marionette:GetContext"] +<< 30:[1,45,null,{"value":"chrome"}] +>> 50:[0,46,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,46,null,{"value":null}] +>> 30:[0,47,"Marionette:GetContext"] +<< 31:[1,47,null,{"value":"content"}] +>> 49:[0,48,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,48,null,{"value":null}] +>> 2986:[0,49,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670822,"guid":"eZlh-ztIYBne","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; "}] +<< 192:[1,49,null,{"value":{"dateAdded":"2023-06-02T01:53:42.000Z","guid":"eZlh-ztIYBne","lastModified":"2023-06-02T02:19:43.000Z","parentGuid":"menu________","title":"Searches","type":2,"index":1}}] +>> 30:[0,50,"Marionette:GetContext"] +<< 30:[1,50,null,{"value":"chrome"}] +>> 50:[0,51,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,51,null,{"value":null}] +>> 30:[0,52,"Marionette:GetContext"] +<< 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":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,56,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,56,null,{"value":null}] +>> 30:[0,57,"Marionette:GetContext"] +<< 31:[1,57,null,{"value":"content"}] +>> 49:[0,58,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,58,null,{"value":null}] +>> 3194:[0,59,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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; "}] +<< 276:[1,59,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"bZbedzEdrOnQ","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","title":"perl 🐫 at DuckDuckGo","type":1,"url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","index":0}}] +>> 30:[0,60,"Marionette:GetContext"] +<< 30:[1,60,null,{"value":"chrome"}] +>> 50:[0,61,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,61,null,{"value":null}] +>> 30:[0,62,"Marionette:GetContext"] +<< 31:[1,62,null,{"value":"content"}] +>> 49:[0,63,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,63,null,{"value":null}] +>> 2275:[0,64,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,64,null,{"value":null}] +>> 30:[0,65,"Marionette:GetContext"] +<< 30:[1,65,null,{"value":"chrome"}] +>> 50:[0,66,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,66,null,{"value":null}] +>> 30:[0,67,"Marionette:GetContext"] +<< 31:[1,67,null,{"value":"content"}] +>> 49:[0,68,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,68,null,{"value":null}] +>> 2978:[0,69,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672418,"guid":"zCZX0_5lBXTS","lastModified":1685672418,"parentGuid":"menu________","title":"","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; "}] +<< 184:[1,69,null,{"value":{"dateAdded":"2023-06-02T02:20:18.000Z","guid":"zCZX0_5lBXTS","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________","title":"","type":3,"index":2}}] +>> 30:[0,70,"Marionette:GetContext"] +<< 30:[1,70,null,{"value":"chrome"}] +>> 50:[0,71,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,71,null,{"value":null}] +>> 30:[0,72,"Marionette:GetContext"] +<< 31:[1,72,null,{"value":"content"}] +>> 49:[0,73,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,73,null,{"value":null}] +>> 2275:[0,74,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,74,null,{"value":null}] +>> 30:[0,75,"Marionette:GetContext"] +<< 30:[1,75,null,{"value":"chrome"}] +>> 50:[0,76,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,76,null,{"value":null}] +>> 30:[0,77,"Marionette:GetContext"] +<< 31:[1,77,null,{"value":"content"}] +>> 49:[0,78,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,78,null,{"value":null}] +>> 3243:[0,79,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"JTBNJdLPdYhk","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; "}] +<< 372:[1,79,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"JTBNJdLPdYhk","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}}] +>> 30:[0,80,"Marionette:GetContext"] +<< 30:[1,80,null,{"value":"chrome"}] +>> 50:[0,81,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,81,null,{"value":null}] +>> 30:[0,82,"Marionette:GetContext"] +<< 31:[1,82,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 30:[0,85,"Marionette:GetContext"] +<< 30:[1,85,null,{"value":"chrome"}] +>> 50:[0,86,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,86,null,{"value":null}] +>> 30:[0,87,"Marionette:GetContext"] +<< 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":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 50:[0,91,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,91,null,{"value":null}] +>> 30:[0,92,"Marionette:GetContext"] +<< 31:[1,92,null,{"value":"content"}] +>> 49:[0,93,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,93,null,{"value":null}] +>> 3056:[0,94,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"UjOiVVvuVdng","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; "}] +<< 262:[1,94,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"UjOiVVvuVdng","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}}] +>> 30:[0,95,"Marionette:GetContext"] +<< 30:[1,95,null,{"value":"chrome"}] +>> 50:[0,96,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,96,null,{"value":null}] +>> 30:[0,97,"Marionette:GetContext"] +<< 31:[1,97,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 31:[0,100,"Marionette:GetContext"] +<< 31:[1,100,null,{"value":"chrome"}] +>> 51:[0,101,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,101,null,{"value":null}] +>> 31:[0,102,"Marionette:GetContext"] +<< 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":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,106,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,106,null,{"value":null}] +>> 31:[0,107,"Marionette:GetContext"] +<< 32:[1,107,null,{"value":"content"}] +>> 50:[0,108,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,108,null,{"value":null}] +>> 3041:[0,109,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"wiTkT9Zqb99b","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,109,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"wiTkT9Zqb99b","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":0}}] +>> 31:[0,110,"Marionette:GetContext"] +<< 31:[1,110,null,{"value":"chrome"}] +>> 51:[0,111,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,111,null,{"value":null}] +>> 31:[0,112,"Marionette:GetContext"] +<< 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":["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":1794506418,"lastModified":1794506418,"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":"taP0iMxDEocPXWaw4x6v5S4jHfrOLdRVjzq5LgXbvOg"}] +>> 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;"}] +<< 27:[1,118,null,{"value":true}] +# WebGL appears to be enabled in headless mode (with addons => 1) +>> 31:[0,119,"Marionette:GetContext"] +<< 32:[1,119,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686364081,"childCount":5}}] +>> 31:[0,122,"Marionette:GetContext"] +<< 31:[1,122,null,{"value":"chrome"}] +>> 51:[0,123,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,123,null,{"value":null}] +>> 31:[0,124,"Marionette:GetContext"] +<< 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":["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":1794506418,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] +>> 31:[0,127,"Marionette:GetContext"] +<< 31:[1,127,null,{"value":"chrome"}] +>> 51:[0,128,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,128,null,{"value":null}] +>> 31:[0,129,"Marionette:GetContext"] +<< 32:[1,129,null,{"value":"content"}] +>> 50:[0,130,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,130,null,{"value":null}] +>> 2276:[0,131,"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,131,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685672252,"parentGuid":"menu________","childCount":2}}] +>> 31:[0,132,"Marionette:GetContext"] +<< 31:[1,132,null,{"value":"chrome"}] +>> 51:[0,133,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,133,null,{"value":null}] +>> 31:[0,134,"Marionette:GetContext"] +<< 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":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 310:[1,136,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] +>> 31:[0,137,"Marionette:GetContext"] +<< 31:[1,137,null,{"value":"chrome"}] +>> 51:[0,138,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,138,null,{"value":null}] +>> 31:[0,139,"Marionette:GetContext"] +<< 32:[1,139,null,{"value":"content"}] +>> 50:[0,140,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,140,null,{"value":null}] +>> 831:[0,141,"WebDriver:ExecuteScript",{"args":["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,141,null,{"value":[{"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"}]}] +>> 31:[0,142,"Marionette:GetContext"] +<< 31:[1,142,null,{"value":"chrome"}] +>> 50:[0,143,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,143,null,{"value":null}] +>> 2276:[0,144,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 310:[1,144,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] +>> 31:[0,145,"Marionette:GetContext"] +<< 31:[1,145,null,{"value":"chrome"}] +>> 50:[0,146,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,146,null,{"value":null}] +>> 31:[0,147,"Marionette:GetContext"] +<< 31:[1,147,null,{"value":"chrome"}] +>> 51:[0,148,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,148,null,{"value":null}] +>> 31:[0,149,"Marionette:GetContext"] +<< 32:[1,149,null,{"value":"content"}] +>> 50:[0,150,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,150,null,{"value":null}] +>> 2276:[0,151,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 328:[1,151,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] +>> 31:[0,152,"Marionette:GetContext"] +<< 31:[1,152,null,{"value":"chrome"}] +>> 51:[0,153,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,153,null,{"value":null}] +>> 31:[0,154,"Marionette:GetContext"] +<< 32:[1,154,null,{"value":"content"}] +>> 50:[0,155,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,155,null,{"value":null}] +>> 845:[0,156,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 352:[1,156,null,{"value":[{"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"}]}] +>> 31:[0,157,"Marionette:GetContext"] +<< 31:[1,157,null,{"value":"chrome"}] +>> 50:[0,158,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,158,null,{"value":null}] +>> 2276:[0,159,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 328:[1,159,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] +>> 31:[0,160,"Marionette:GetContext"] +<< 31:[1,160,null,{"value":"chrome"}] +>> 50:[0,161,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,161,null,{"value":null}] +>> 31:[0,162,"Marionette:GetContext"] +<< 31:[1,162,null,{"value":"chrome"}] +>> 51:[0,163,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,163,null,{"value":null}] +>> 31:[0,164,"Marionette:GetContext"] +<< 32:[1,164,null,{"value":"content"}] +>> 50:[0,165,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,165,null,{"value":null}] +>> 2276:[0,166,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,166,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 31:[0,167,"Marionette:GetContext"] +<< 31:[1,167,null,{"value":"chrome"}] +>> 51:[0,168,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,168,null,{"value":null}] +>> 31:[0,169,"Marionette:GetContext"] +<< 32:[1,169,null,{"value":"content"}] +>> 50:[0,170,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,170,null,{"value":null}] +>> 2276:[0,171,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 298:[1,171,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"]}}] +>> 31:[0,172,"Marionette:GetContext"] +<< 31:[1,172,null,{"value":"chrome"}] +>> 51:[0,173,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,173,null,{"value":null}] +>> 31:[0,174,"Marionette:GetContext"] +<< 32:[1,174,null,{"value":"content"}] +>> 50:[0,175,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,175,null,{"value":null}] +>> 847:[0,176,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 25:[1,176,null,{"value":[]}] +>> 31:[0,177,"Marionette:GetContext"] +<< 31:[1,177,null,{"value":"chrome"}] +>> 51:[0,178,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,178,null,{"value":null}] +>> 31:[0,179,"Marionette:GetContext"] +<< 32:[1,179,null,{"value":"content"}] +>> 50:[0,180,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,180,null,{"value":null}] +>> 3195:[0,181,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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,181,null,{"value":{"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"}}] +>> 31:[0,182,"Marionette:GetContext"] +<< 31:[1,182,null,{"value":"chrome"}] +>> 51:[0,183,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,183,null,{"value":null}] +>> 31:[0,184,"Marionette:GetContext"] +<< 32:[1,184,null,{"value":"content"}] +>> 50:[0,185,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,185,null,{"value":null}] +>> 2276:[0,186,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,186,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 31:[0,187,"Marionette:GetContext"] +<< 31:[1,187,null,{"value":"chrome"}] +>> 51:[0,188,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,188,null,{"value":null}] +>> 31:[0,189,"Marionette:GetContext"] +<< 32:[1,189,null,{"value":"content"}] +>> 50:[0,190,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,190,null,{"value":null}] +>> 2276:[0,191,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 348:[1,191,null,{"value":{"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":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[]}}] +>> 31:[0,192,"Marionette:GetContext"] +<< 31:[1,192,null,{"value":"chrome"}] +>> 51:[0,193,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,193,null,{"value":null}] +>> 31:[0,194,"Marionette:GetContext"] +<< 32:[1,194,null,{"value":"content"}] +>> 50:[0,195,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,195,null,{"value":null}] +>> 835:[0,196,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 375:[1,196,null,{"value":[{"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"}]}] +>> 31:[0,197,"Marionette:GetContext"] +<< 31:[1,197,null,{"value":"chrome"}] +>> 50:[0,198,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,198,null,{"value":null}] +>> 2276:[0,199,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 348:[1,199,null,{"value":{"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":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[]}}] +>> 31:[0,200,"Marionette:GetContext"] +<< 31:[1,200,null,{"value":"chrome"}] +>> 50:[0,201,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,201,null,{"value":null}] +>> 31:[0,202,"Marionette:GetContext"] +<< 31:[1,202,null,{"value":"chrome"}] +>> 51:[0,203,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,203,null,{"value":null}] +>> 31:[0,204,"Marionette:GetContext"] +<< 32:[1,204,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 31:[0,207,"Marionette:GetContext"] +<< 31:[1,207,null,{"value":"chrome"}] +>> 51:[0,208,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,208,null,{"value":null}] +>> 31:[0,209,"Marionette:GetContext"] +<< 32:[1,209,null,{"value":"content"}] +>> 50:[0,210,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,210,null,{"value":null}] +>> 2276:[0,211,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,211,null,{"value":{"guid":"UjOiVVvuVdng","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,212,"Marionette:GetContext"] +<< 31:[1,212,null,{"value":"chrome"}] +>> 51:[0,213,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,213,null,{"value":null}] +>> 31:[0,214,"Marionette:GetContext"] +<< 32:[1,214,null,{"value":"content"}] +>> 50:[0,215,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,215,null,{"value":null}] +>> 821:[0,216,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 265:[1,216,null,{"value":[{"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"}]}] +>> 31:[0,217,"Marionette:GetContext"] +<< 31:[1,217,null,{"value":"chrome"}] +>> 50:[0,218,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,218,null,{"value":null}] +>> 2276:[0,219,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,219,null,{"value":{"guid":"UjOiVVvuVdng","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,220,"Marionette:GetContext"] +<< 31:[1,220,null,{"value":"chrome"}] +>> 50:[0,221,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,221,null,{"value":null}] +>> 31:[0,222,"Marionette:GetContext"] +<< 31:[1,222,null,{"value":"chrome"}] +>> 51:[0,223,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,223,null,{"value":null}] +>> 31:[0,224,"Marionette:GetContext"] +<< 32:[1,224,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 31:[0,227,"Marionette:GetContext"] +<< 31:[1,227,null,{"value":"chrome"}] +>> 51:[0,228,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,228,null,{"value":null}] +>> 31:[0,229,"Marionette:GetContext"] +<< 32:[1,229,null,{"value":"content"}] +>> 50:[0,230,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,230,null,{"value":null}] +>> 2276:[0,231,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,231,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 31:[0,232,"Marionette:GetContext"] +<< 31:[1,232,null,{"value":"chrome"}] +>> 51:[0,233,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,233,null,{"value":null}] +>> 31:[0,234,"Marionette:GetContext"] +<< 32:[1,234,null,{"value":"content"}] +>> 50:[0,235,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,235,null,{"value":null}] +>> 809:[0,236,"WebDriver:ExecuteScript",{"args":["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,236,null,{"value":[{"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,237,"Marionette:GetContext"] +<< 31:[1,237,null,{"value":"chrome"}] +>> 50:[0,238,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,238,null,{"value":null}] +>> 2276:[0,239,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,239,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 31:[0,240,"Marionette:GetContext"] +<< 31:[1,240,null,{"value":"chrome"}] +>> 50:[0,241,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,241,null,{"value":null}] +>> 31:[0,242,"Marionette:GetContext"] +<< 31:[1,242,null,{"value":"chrome"}] +>> 51:[0,243,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,243,null,{"value":null}] +>> 31:[0,244,"Marionette:GetContext"] +<< 32:[1,244,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 31:[0,247,"Marionette:GetContext"] +<< 31:[1,247,null,{"value":"chrome"}] +>> 51:[0,248,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,248,null,{"value":null}] +>> 31:[0,249,"Marionette:GetContext"] +<< 32:[1,249,null,{"value":"content"}] +>> 50:[0,250,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,250,null,{"value":null}] +>> 839:[0,251,"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,251,null,{"value":[{"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"}]}] +>> 31:[0,252,"Marionette:GetContext"] +<< 31:[1,252,null,{"value":"chrome"}] +>> 50:[0,253,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,253,null,{"value":null}] +>> 2276:[0,254,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 310:[1,254,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] +>> 31:[0,255,"Marionette:GetContext"] +<< 31:[1,255,null,{"value":"chrome"}] +>> 50:[0,256,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,256,null,{"value":null}] +>> 31:[0,257,"Marionette:GetContext"] +<< 31:[1,257,null,{"value":"chrome"}] +>> 51:[0,258,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,258,null,{"value":null}] +>> 31:[0,259,"Marionette:GetContext"] +<< 32:[1,259,null,{"value":"content"}] +>> 50:[0,260,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,260,null,{"value":null}] +>> 808:[0,261,"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,261,null,{"value":[{"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"}]}] +>> 31:[0,262,"Marionette:GetContext"] +<< 31:[1,262,null,{"value":"chrome"}] +>> 50:[0,263,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,263,null,{"value":null}] +>> 2276:[0,264,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 310:[1,264,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/pod/Firefox::Marionette","tags":[]}}] +>> 31:[0,265,"Marionette:GetContext"] +<< 31:[1,265,null,{"value":"chrome"}] +>> 50:[0,266,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,266,null,{"value":null}] +>> 31:[0,267,"Marionette:GetContext"] +<< 31:[1,267,null,{"value":"chrome"}] +>> 50:[0,268,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,268,null,{"value":null}] +>> 2276:[0,269,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 328:[1,269,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] +>> 31:[0,270,"Marionette:GetContext"] +<< 31:[1,270,null,{"value":"chrome"}] +>> 50:[0,271,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,271,null,{"value":null}] +>> 31:[0,272,"Marionette:GetContext"] +<< 31:[1,272,null,{"value":"chrome"}] +>> 51:[0,273,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,273,null,{"value":null}] +>> 31:[0,274,"Marionette:GetContext"] +<< 32:[1,274,null,{"value":"content"}] +>> 50:[0,275,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,275,null,{"value":null}] +>> 799:[0,276,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,276,null,{"value":null}] +>> 31:[0,277,"Marionette:GetContext"] +<< 31:[1,277,null,{"value":"chrome"}] +>> 51:[0,278,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,278,null,{"value":null}] +>> 31:[0,279,"Marionette:GetContext"] +<< 32:[1,279,null,{"value":"content"}] +>> 50:[0,280,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,280,null,{"value":null}] +>> 839:[0,281,"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]); "}] +<< 25:[1,281,null,{"value":[]}] +>> 31:[0,282,"Marionette:GetContext"] +<< 31:[1,282,null,{"value":"chrome"}] +>> 51:[0,283,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,283,null,{"value":null}] +>> 31:[0,284,"Marionette:GetContext"] +<< 32:[1,284,null,{"value":"content"}] +>> 50:[0,285,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,285,null,{"value":null}] +>> 817:[0,286,"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,286,null,{"value":[{"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,287,"Marionette:GetContext"] +<< 31:[1,287,null,{"value":"chrome"}] +>> 50:[0,288,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,288,null,{"value":null}] +>> 2276:[0,289,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,289,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 31:[0,290,"Marionette:GetContext"] +<< 31:[1,290,null,{"value":"chrome"}] +>> 50:[0,291,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,291,null,{"value":null}] +>> 31:[0,292,"Marionette:GetContext"] +<< 31:[1,292,null,{"value":"chrome"}] +>> 51:[0,293,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,293,null,{"value":null}] +>> 31:[0,294,"Marionette:GetContext"] +<< 32:[1,294,null,{"value":"content"}] +>> 50:[0,295,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,295,null,{"value":null}] +>> 808:[0,296,"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,296,null,{"value":[{"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"}]}] +>> 31:[0,297,"Marionette:GetContext"] +<< 31:[1,297,null,{"value":"chrome"}] +>> 50:[0,298,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,298,null,{"value":null}] +>> 2276:[0,299,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 328:[1,299,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] +>> 31:[0,300,"Marionette:GetContext"] +<< 31:[1,300,null,{"value":"chrome"}] +>> 50:[0,301,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,301,null,{"value":null}] +>> 31:[0,302,"Marionette:GetContext"] +<< 31:[1,302,null,{"value":"chrome"}] +>> 51:[0,303,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,303,null,{"value":null}] +>> 31:[0,304,"Marionette:GetContext"] +<< 32:[1,304,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:22.132Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:19.605Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","parentGuid":"root________"},{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2026-11-12T18:00:22.132Z","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":1794506418,"lastModified":1794506422,"parentGuid":"root________","childCount":4}}] +>> 31:[0,310,"Marionette:GetContext"] +<< 31:[1,310,null,{"value":"chrome"}] +>> 50:[0,311,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,311,null,{"value":null}] +>> 31:[0,312,"Marionette:GetContext"] +<< 31:[1,312,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 31:[0,315,"Marionette:GetContext"] +<< 31:[1,315,null,{"value":"chrome"}] +>> 50:[0,316,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,316,null,{"value":null}] +>> 31:[0,317,"Marionette:GetContext"] +<< 31:[1,317,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506419,"parentGuid":"root________","childCount":4}}] +>> 31:[0,320,"Marionette:GetContext"] +<< 31:[1,320,null,{"value":"chrome"}] +>> 50:[0,321,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,321,null,{"value":null}] +>> 31:[0,322,"Marionette:GetContext"] +<< 31:[1,322,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 31:[0,325,"Marionette:GetContext"] +<< 31:[1,325,null,{"value":"chrome"}] +>> 50:[0,326,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,326,null,{"value":null}] +>> 31:[0,327,"Marionette:GetContext"] +<< 31:[1,327,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 31:[0,330,"Marionette:GetContext"] +<< 31:[1,330,null,{"value":"chrome"}] +>> 50:[0,331,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,331,null,{"value":null}] +>> 31:[0,332,"Marionette:GetContext"] +<< 31:[1,332,null,{"value":"chrome"}] +>> 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":1794506422,"parentGuid":"menu________","childCount":1}}] +>> 31:[0,335,"Marionette:GetContext"] +<< 31:[1,335,null,{"value":"chrome"}] +>> 50:[0,336,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,336,null,{"value":null}] +>> 31:[0,337,"Marionette:GetContext"] +<< 31:[1,337,null,{"value":"chrome"}] +>> 50:[0,338,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,338,null,{"value":null}] +>> 2276:[0,339,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 328:[1,339,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","tags":[]}}] +>> 31:[0,340,"Marionette:GetContext"] +<< 31:[1,340,null,{"value":"chrome"}] +>> 50:[0,341,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,341,null,{"value":null}] +>> 31:[0,342,"Marionette:GetContext"] +<< 31:[1,342,null,{"value":"chrome"}] +>> 50:[0,343,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,343,null,{"value":null}] +>> 2276:[0,344,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,344,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 31:[0,345,"Marionette:GetContext"] +<< 31:[1,345,null,{"value":"chrome"}] +>> 50:[0,346,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,346,null,{"value":null}] +>> 31:[0,347,"Marionette:GetContext"] +<< 31:[1,347,null,{"value":"chrome"}] +>> 50:[0,348,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,348,null,{"value":null}] +>> 2276:[0,349,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 298:[1,349,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web","keyword":"🐫","tags":["🐫","ddg","perl","UTF8"]}}] +>> 31:[0,350,"Marionette:GetContext"] +<< 31:[1,350,null,{"value":"chrome"}] +>> 50:[0,351,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,351,null,{"value":null}] +>> 31:[0,352,"Marionette:GetContext"] +<< 31:[1,352,null,{"value":"chrome"}] +>> 50:[0,353,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,353,null,{"value":null}] +>> 2276:[0,354,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,354,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 31:[0,355,"Marionette:GetContext"] +<< 31:[1,355,null,{"value":"chrome"}] +>> 50:[0,356,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,356,null,{"value":null}] +>> 31:[0,357,"Marionette:GetContext"] +<< 31:[1,357,null,{"value":"chrome"}] +>> 50:[0,358,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,358,null,{"value":null}] +>> 2276:[0,359,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 348:[1,359,null,{"value":{"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":1685611,"lastModified":1685672392,"parentGuid":"menu________","url":"https://github.com/david-dick/firefox-marionette","tags":[]}}] +>> 31:[0,360,"Marionette:GetContext"] +<< 31:[1,360,null,{"value":"chrome"}] +>> 50:[0,361,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,361,null,{"value":null}] +>> 31:[0,362,"Marionette:GetContext"] +<< 31:[1,362,null,{"value":"chrome"}] +>> 50:[0,363,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,363,null,{"value":null}] +>> 2276:[0,364,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,364,null,{"value":{"guid":"UjOiVVvuVdng","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,365,"Marionette:GetContext"] +<< 31:[1,365,null,{"value":"chrome"}] +>> 50:[0,366,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,366,null,{"value":null}] +>> 31:[0,367,"Marionette:GetContext"] +<< 31:[1,367,null,{"value":"chrome"}] +>> 50:[0,368,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,368,null,{"value":null}] +>> 2276:[0,369,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,369,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 31:[0,370,"Marionette:GetContext"] +<< 31:[1,370,null,{"value":"chrome"}] +>> 50:[0,371,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,371,null,{"value":null}] +>> 31:[0,372,"Marionette:GetContext"] +<< 31:[1,372,null,{"value":"chrome"}] +>> 51:[0,373,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,373,null,{"value":null}] +>> 31:[0,374,"Marionette:GetContext"] +<< 32:[1,374,null,{"value":"content"}] +>> 50:[0,375,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,375,null,{"value":null}] +>> 799:[0,376,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,376,null,{"value":null}] +>> 31:[0,377,"Marionette:GetContext"] +<< 31:[1,377,null,{"value":"chrome"}] +>> 51:[0,378,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,378,null,{"value":null}] +>> 31:[0,379,"Marionette:GetContext"] +<< 32:[1,379,null,{"value":"content"}] +>> 50:[0,380,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,380,null,{"value":null}] +>> 799:[0,381,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,381,null,{"value":null}] +>> 31:[0,382,"Marionette:GetContext"] +<< 31:[1,382,null,{"value":"chrome"}] +>> 51:[0,383,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,383,null,{"value":null}] +>> 31:[0,384,"Marionette:GetContext"] +<< 32:[1,384,null,{"value":"content"}] +>> 50:[0,385,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,385,null,{"value":null}] +>> 799:[0,386,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,386,null,{"value":null}] +>> 31:[0,387,"Marionette:GetContext"] +<< 31:[1,387,null,{"value":"chrome"}] +>> 51:[0,388,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,388,null,{"value":null}] +>> 31:[0,389,"Marionette:GetContext"] +<< 32:[1,389,null,{"value":"content"}] +>> 50:[0,390,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,390,null,{"value":null}] +>> 799:[0,391,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,391,null,{"value":null}] +>> 31:[0,392,"Marionette:GetContext"] +<< 31:[1,392,null,{"value":"chrome"}] +>> 51:[0,393,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,393,null,{"value":null}] +>> 31:[0,394,"Marionette:GetContext"] +<< 32:[1,394,null,{"value":"content"}] +>> 50:[0,395,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,395,null,{"value":null}] +>> 799:[0,396,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,396,null,{"value":null}] +>> 31:[0,397,"Marionette:GetContext"] +<< 31:[1,397,null,{"value":"chrome"}] +>> 51:[0,398,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,398,null,{"value":null}] +>> 31:[0,399,"Marionette:GetContext"] +<< 32:[1,399,null,{"value":"content"}] +>> 50:[0,400,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,400,null,{"value":null}] +>> 799:[0,401,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,401,null,{"value":null}] +>> 31:[0,402,"Marionette:GetContext"] +<< 31:[1,402,null,{"value":"chrome"}] +>> 51:[0,403,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,403,null,{"value":null}] +>> 31:[0,404,"Marionette:GetContext"] +<< 32:[1,404,null,{"value":"content"}] +>> 50:[0,405,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,405,null,{"value":null}] +>> 799:[0,406,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,406,null,{"value":null}] +>> 31:[0,407,"Marionette:GetContext"] +<< 31:[1,407,null,{"value":"chrome"}] +>> 51:[0,408,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,408,null,{"value":null}] +>> 31:[0,409,"Marionette:GetContext"] +<< 32:[1,409,null,{"value":"content"}] +>> 50:[0,410,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,410,null,{"value":null}] +>> 799:[0,411,"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 lazy.Bookmarks.remove(arguments[0]); "}] +<< 27:[1,411,null,{"value":null}] +>> 31:[0,412,"Marionette:GetContext"] +<< 31:[1,412,null,{"value":"chrome"}] +>> 51:[0,413,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,413,null,{"value":null}] +>> 31:[0,414,"Marionette:GetContext"] +<< 32:[1,414,null,{"value":"content"}] +>> 50:[0,415,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,415,null,{"value":null}] +>> 2301:[0,416,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 27:[1,416,null,{"value":null}] +>> 31:[0,417,"Marionette:GetContext"] +<< 31:[1,417,null,{"value":"chrome"}] +>> 51:[0,418,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,418,null,{"value":null}] +>> 31:[0,419,"Marionette:GetContext"] +<< 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":"EBbz4HScM2QO"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,423,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,423,null,{"value":null}] +>> 31:[0,424,"Marionette:GetContext"] +<< 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":"EBbz4HScM2QO"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,428,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,428,null,{"value":null}] +>> 31:[0,429,"Marionette:GetContext"] +<< 32:[1,429,null,{"value":"content"}] +>> 50:[0,430,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,430,null,{"value":null}] +>> 2301:[0,431,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 27:[1,431,null,{"value":null}] +>> 31:[0,432,"Marionette:GetContext"] +<< 31:[1,432,null,{"value":"chrome"}] +>> 51:[0,433,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,433,null,{"value":null}] +>> 31:[0,434,"Marionette:GetContext"] +<< 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":"JDr9D6Y0QWgQ"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,438,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,438,null,{"value":null}] +>> 31:[0,439,"Marionette:GetContext"] +<< 32:[1,439,null,{"value":"content"}] +>> 50:[0,440,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,440,null,{"value":null}] +>> 2301:[0,441,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 27:[1,441,null,{"value":null}] +>> 31:[0,442,"Marionette:GetContext"] +<< 31:[1,442,null,{"value":"chrome"}] +>> 51:[0,443,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,443,null,{"value":null}] +>> 31:[0,444,"Marionette:GetContext"] +<< 32:[1,444,null,{"value":"content"}] +>> 50:[0,445,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,445,null,{"value":null}] +>> 2301:[0,446,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 27:[1,446,null,{"value":null}] +>> 31:[0,447,"Marionette:GetContext"] +<< 31:[1,447,null,{"value":"chrome"}] +>> 51:[0,448,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,448,null,{"value":null}] +>> 31:[0,449,"Marionette:GetContext"] +<< 32:[1,449,null,{"value":"content"}] +>> 50:[0,450,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,450,null,{"value":null}] +>> 2301:[0,451,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 27:[1,451,null,{"value":null}] +>> 31:[0,452,"Marionette:GetContext"] +<< 31:[1,452,null,{"value":"chrome"}] +>> 51:[0,453,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,453,null,{"value":null}] +>> 31:[0,454,"Marionette:GetContext"] +<< 32:[1,454,null,{"value":"content"}] +>> 50:[0,455,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,455,null,{"value":null}] +>> 2301:[0,456,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 27:[1,456,null,{"value":null}] +>> 31:[0,457,"Marionette:GetContext"] +<< 31:[1,457,null,{"value":"chrome"}] +>> 51:[0,458,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,458,null,{"value":null}] +>> 31:[0,459,"Marionette:GetContext"] +<< 32:[1,459,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506422,"childCount":5}}] +>> 31:[0,462,"Marionette:GetContext"] +<< 31:[1,462,null,{"value":"chrome"}] +>> 51:[0,463,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,463,null,{"value":null}] +>> 31:[0,464,"Marionette:GetContext"] +<< 32:[1,464,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506422,"parentGuid":"root________","childCount":0}}] +>> 31:[0,467,"Marionette:GetContext"] +<< 31:[1,467,null,{"value":"chrome"}] +>> 51:[0,468,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,468,null,{"value":null}] +>> 31:[0,469,"Marionette:GetContext"] +<< 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":["EBbz4HScM2QO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,473,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,473,null,{"value":null}] +>> 31:[0,474,"Marionette:GetContext"] +<< 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":"EBbz4HScM2QO","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":"EBbz4HScM2QO","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"}] +<< 27:[1,478,null,{"value":null}] +>> 31:[0,479,"Marionette:GetContext"] +<< 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":["mlNkC3d6fmiC"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,483,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,483,null,{"value":null}] +>> 31:[0,484,"Marionette:GetContext"] +<< 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":"mlNkC3d6fmiC","icon":"data:image/png;base64,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","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"EBbz4HScM2QO","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":"mlNkC3d6fmiC","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,488,null,{"value":null}] +>> 31:[0,489,"Marionette:GetContext"] +<< 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":["IqQGFlYY33ms"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,493,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,493,null,{"value":null}] +>> 31:[0,494,"Marionette:GetContext"] +<< 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":"IqQGFlYY33ms","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":"EBbz4HScM2QO","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":"IqQGFlYY33ms","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,498,null,{"value":null}] +>> 31:[0,499,"Marionette:GetContext"] +<< 32:[1,499,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1685672252,"parentGuid":"root________","childCount":1}}] +>> 31:[0,502,"Marionette:GetContext"] +<< 31:[1,502,null,{"value":"chrome"}] +>> 51:[0,503,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,503,null,{"value":null}] +>> 31:[0,504,"Marionette:GetContext"] +<< 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":["JDr9D6Y0QWgQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,508,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,508,null,{"value":null}] +>> 31:[0,509,"Marionette:GetContext"] +<< 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":"JDr9D6Y0QWgQ","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":"JDr9D6Y0QWgQ","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"}] +<< 27:[1,513,null,{"value":null}] +>> 31:[0,514,"Marionette:GetContext"] +<< 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":["beU9aOA0FJRT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,518,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,518,null,{"value":null}] +>> 31:[0,519,"Marionette:GetContext"] +<< 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":"beU9aOA0FJRT","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":"JDr9D6Y0QWgQ","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":"beU9aOA0FJRT","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"JDr9D6Y0QWgQ","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"}] +<< 27:[1,523,null,{"value":null}] +>> 31:[0,524,"Marionette:GetContext"] +<< 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":["iKbCgf4w1Wj1"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,528,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,528,null,{"value":null}] +>> 31:[0,529,"Marionette:GetContext"] +<< 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":"iKbCgf4w1Wj1","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":"iKbCgf4w1Wj1","parentGuid":"menu________","type":3,"index":2,"title":"","dateAdded":"2026-11-12T18:00:23.073Z","lastModified":"2026-11-12T18:00:23.073Z"}}] +>> 31:[0,532,"Marionette:GetContext"] +<< 31:[1,532,null,{"value":"chrome"}] +>> 51:[0,533,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,533,null,{"value":null}] +>> 31:[0,534,"Marionette:GetContext"] +<< 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":["UM5dztSlgFLm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,538,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,538,null,{"value":null}] +>> 31:[0,539,"Marionette:GetContext"] +<< 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":"UM5dztSlgFLm","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":"UM5dztSlgFLm","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"}] +<< 27:[1,543,null,{"value":null}] +>> 31:[0,544,"Marionette:GetContext"] +<< 32:[1,544,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506422,"parentGuid":"root________","childCount":0}}] +>> 31:[0,547,"Marionette:GetContext"] +<< 31:[1,547,null,{"value":"chrome"}] +>> 51:[0,548,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,548,null,{"value":null}] +>> 31:[0,549,"Marionette:GetContext"] +<< 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":["EI_WRlxKe1R-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,553,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,553,null,{"value":null}] +>> 31:[0,554,"Marionette:GetContext"] +<< 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":"EI_WRlxKe1R-","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":"EI_WRlxKe1R-","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"}] +<< 27:[1,558,null,{"value":null}] +>> 31:[0,559,"Marionette:GetContext"] +<< 32:[1,559,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506422,"parentGuid":"root________","childCount":0}}] +>> 31:[0,562,"Marionette:GetContext"] +<< 31:[1,562,null,{"value":"chrome"}] +>> 51:[0,563,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,563,null,{"value":null}] +>> 31:[0,564,"Marionette:GetContext"] +<< 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":["En5dyY2VfXPO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,568,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,568,null,{"value":null}] +>> 31:[0,569,"Marionette:GetContext"] +<< 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":"En5dyY2VfXPO","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":"En5dyY2VfXPO","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"}] +<< 27:[1,573,null,{"value":null}] +>> 31:[0,574,"Marionette:GetContext"] +<< 32:[1,574,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:23.027Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","parentGuid":"root________"},{"guid":"EBbz4HScM2QO","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"menu________"},{"guid":"mlNkC3d6fmiC","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":"EBbz4HScM2QO","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"IqQGFlYY33ms","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":"EBbz4HScM2QO","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"JDr9D6Y0QWgQ","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"beU9aOA0FJRT","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"JDr9D6Y0QWgQ","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"iKbCgf4w1Wj1","index":2,"type":3,"title":"","dateAdded":"2026-11-12T18:00:23.073Z","lastModified":"2026-11-12T18:00:23.073Z","parentGuid":"menu________"},{"guid":"UM5dztSlgFLm","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":"EI_WRlxKe1R-","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":"En5dyY2VfXPO","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":1794506418,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] +>> 31:[0,580,"Marionette:GetContext"] +<< 31:[1,580,null,{"value":"chrome"}] +>> 50:[0,581,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,581,null,{"value":null}] +>> 31:[0,582,"Marionette:GetContext"] +<< 31:[1,582,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 31:[0,585,"Marionette:GetContext"] +<< 31:[1,585,null,{"value":"chrome"}] +>> 50:[0,586,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,586,null,{"value":null}] +>> 31:[0,587,"Marionette:GetContext"] +<< 31:[1,587,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506423,"parentGuid":"root________","childCount":4}}] +>> 31:[0,590,"Marionette:GetContext"] +<< 31:[1,590,null,{"value":"chrome"}] +>> 50:[0,591,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,591,null,{"value":null}] +>> 31:[0,592,"Marionette:GetContext"] +<< 31:[1,592,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 31:[0,595,"Marionette:GetContext"] +<< 31:[1,595,null,{"value":"chrome"}] +>> 50:[0,596,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,596,null,{"value":null}] +>> 31:[0,597,"Marionette:GetContext"] +<< 31:[1,597,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 31:[0,600,"Marionette:GetContext"] +<< 31:[1,600,null,{"value":"chrome"}] +>> 50:[0,601,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,601,null,{"value":null}] +>> 31:[0,602,"Marionette:GetContext"] +<< 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":["EBbz4HScM2QO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"EBbz4HScM2QO","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"}] +<< 27:[1,606,null,{"value":null}] +>> 31:[0,607,"Marionette:GetContext"] +<< 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":["mlNkC3d6fmiC"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"mlNkC3d6fmiC","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"EBbz4HScM2QO","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,610,"Marionette:GetContext"] +<< 31:[1,610,null,{"value":"chrome"}] +>> 50:[0,611,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,611,null,{"value":null}] +>> 31:[0,612,"Marionette:GetContext"] +<< 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":["IqQGFlYY33ms"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"IqQGFlYY33ms","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,616,null,{"value":null}] +>> 31:[0,617,"Marionette:GetContext"] +<< 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":["JDr9D6Y0QWgQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"JDr9D6Y0QWgQ","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"}] +<< 27:[1,621,null,{"value":null}] +>> 31:[0,622,"Marionette:GetContext"] +<< 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":["beU9aOA0FJRT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"beU9aOA0FJRT","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"JDr9D6Y0QWgQ","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"}] +<< 27:[1,626,null,{"value":null}] +>> 31:[0,627,"Marionette:GetContext"] +<< 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":["iKbCgf4w1Wj1"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"iKbCgf4w1Wj1","index":2,"type":3,"title":"","dateAdded":1794506423,"lastModified":1794506423,"parentGuid":"menu________"}}] +>> 31:[0,630,"Marionette:GetContext"] +<< 31:[1,630,null,{"value":"chrome"}] +>> 50:[0,631,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,631,null,{"value":null}] +>> 31:[0,632,"Marionette:GetContext"] +<< 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":["UM5dztSlgFLm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"UM5dztSlgFLm","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"}] +<< 27:[1,636,null,{"value":null}] +>> 31:[0,637,"Marionette:GetContext"] +<< 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":["EI_WRlxKe1R-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"EI_WRlxKe1R-","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"}] +<< 27:[1,641,null,{"value":null}] +>> 31:[0,642,"Marionette:GetContext"] +<< 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":["En5dyY2VfXPO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"En5dyY2VfXPO","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"}] +<< 27:[1,646,null,{"value":null}] +>> 31:[0,647,"Marionette:GetContext"] +<< 31:[1,647,null,{"value":"chrome"}] +>> 51:[0,648,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,648,null,{"value":null}] +>> 31:[0,649,"Marionette:GetContext"] +<< 32:[1,649,null,{"value":"content"}] +>> 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":"mlNkC3d6fmiC","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":"EBbz4HScM2QO","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":["mlNkC3d6fmiC"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"mlNkC3d6fmiC","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,656,null,{"value":null}] +>> 31:[0,657,"Marionette:GetContext"] +<< 31:[1,657,null,{"value":"chrome"}] +>> 51:[0,658,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,658,null,{"value":null}] +>> 31:[0,659,"Marionette:GetContext"] +<< 32:[1,659,null,{"value":"content"}] +>> 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":"mlNkC3d6fmiC","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":"EBbz4HScM2QO","url":"https://metacpan.org/pod/Firefox::Marionette"},{"guid":"IqQGFlYY33ms","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":"EBbz4HScM2QO","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":["mlNkC3d6fmiC"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"mlNkC3d6fmiC","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,666,null,{"value":null}] +>> 31:[0,667,"Marionette:GetContext"] +<< 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":["IqQGFlYY33ms"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"IqQGFlYY33ms","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,671,null,{"value":null}] +>> 31:[0,672,"Marionette:GetContext"] +<< 31:[1,672,null,{"value":"chrome"}] +>> 51:[0,673,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,673,null,{"value":null}] +>> 31:[0,674,"Marionette:GetContext"] +<< 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":["mlNkC3d6fmiC"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,678,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,678,null,{"value":null}] +>> 31:[0,679,"Marionette:GetContext"] +<< 32:[1,679,null,{"value":"content"}] +>> 50:[0,680,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,680,null,{"value":null}] +>> 839:[0,681,"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]); "}] +<< 25:[1,681,null,{"value":[]}] +>> 31:[0,682,"Marionette:GetContext"] +<< 31:[1,682,null,{"value":"chrome"}] +>> 51:[0,683,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,683,null,{"value":null}] +>> 31:[0,684,"Marionette:GetContext"] +<< 32:[1,684,null,{"value":"content"}] +>> 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":"En5dyY2VfXPO","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":["En5dyY2VfXPO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"En5dyY2VfXPO","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"}] +<< 27:[1,691,null,{"value":null}] +>> 31:[0,692,"Marionette:GetContext"] +<< 31:[1,692,null,{"value":"chrome"}] +>> 51:[0,693,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,693,null,{"value":null}] +>> 31:[0,694,"Marionette:GetContext"] +<< 32:[1,694,null,{"value":"content"}] +>> 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":"IqQGFlYY33ms","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":"EBbz4HScM2QO","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":["IqQGFlYY33ms"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"IqQGFlYY33ms","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,701,null,{"value":null}] +>> 31:[0,702,"Marionette:GetContext"] +<< 31:[1,702,null,{"value":"chrome"}] +>> 51:[0,703,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,703,null,{"value":null}] +>> 31:[0,704,"Marionette:GetContext"] +<< 32:[1,704,null,{"value":"content"}] +>> 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":"beU9aOA0FJRT","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"JDr9D6Y0QWgQ","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":["beU9aOA0FJRT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"beU9aOA0FJRT","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"JDr9D6Y0QWgQ","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"}] +<< 27:[1,711,null,{"value":null}] +>> 31:[0,712,"Marionette:GetContext"] +<< 31:[1,712,null,{"value":"chrome"}] +>> 51:[0,713,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,713,null,{"value":null}] +>> 31:[0,714,"Marionette:GetContext"] +<< 32:[1,714,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:23.573Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:23.027Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","parentGuid":"root________"},{"guid":"EBbz4HScM2QO","index":0,"type":2,"title":"CPAN","dateAdded":"2023-06-01T09:22:24.000Z","lastModified":"2026-11-12T18:00:23.573Z","parentGuid":"menu________"},{"guid":"IqQGFlYY33ms","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":"EBbz4HScM2QO","url":"https://metacpan.org/release/DDICK/Firefox-Marionette-1.38"},{"guid":"JDr9D6Y0QWgQ","index":1,"type":2,"title":"Searches","dateAdded":"2023-06-02T01:53:42.000Z","lastModified":"2023-06-02T01:52:51.000Z","parentGuid":"menu________"},{"guid":"beU9aOA0FJRT","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":"2023-06-02T01:52:51.000Z","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"JDr9D6Y0QWgQ","url":"https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web"},{"guid":"iKbCgf4w1Wj1","index":2,"type":3,"title":"","dateAdded":"2026-11-12T18:00:23.073Z","lastModified":"2026-11-12T18:00:23.073Z","parentGuid":"menu________"},{"guid":"UM5dztSlgFLm","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":"EI_WRlxKe1R-","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":"En5dyY2VfXPO","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":1794506418,"lastModified":1794506423,"parentGuid":"root________","childCount":4}}] +>> 31:[0,720,"Marionette:GetContext"] +<< 31:[1,720,null,{"value":"chrome"}] +>> 50:[0,721,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,721,null,{"value":null}] +>> 31:[0,722,"Marionette:GetContext"] +<< 31:[1,722,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 31:[0,725,"Marionette:GetContext"] +<< 31:[1,725,null,{"value":"chrome"}] +>> 50:[0,726,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,726,null,{"value":null}] +>> 31:[0,727,"Marionette:GetContext"] +<< 31:[1,727,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506423,"parentGuid":"root________","childCount":4}}] +>> 31:[0,730,"Marionette:GetContext"] +<< 31:[1,730,null,{"value":"chrome"}] +>> 50:[0,731,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,731,null,{"value":null}] +>> 31:[0,732,"Marionette:GetContext"] +<< 31:[1,732,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 31:[0,735,"Marionette:GetContext"] +<< 31:[1,735,null,{"value":"chrome"}] +>> 50:[0,736,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,736,null,{"value":null}] +>> 31:[0,737,"Marionette:GetContext"] +<< 31:[1,737,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 31:[0,740,"Marionette:GetContext"] +<< 31:[1,740,null,{"value":"chrome"}] +>> 50:[0,741,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,741,null,{"value":null}] +>> 31:[0,742,"Marionette:GetContext"] +<< 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":["EBbz4HScM2QO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"EBbz4HScM2QO","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1794506423,"parentGuid":"menu________","childCount":1}}] +>> 31:[0,745,"Marionette:GetContext"] +<< 31:[1,745,null,{"value":"chrome"}] +>> 50:[0,746,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,746,null,{"value":null}] +>> 31:[0,747,"Marionette:GetContext"] +<< 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":["IqQGFlYY33ms"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"IqQGFlYY33ms","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"EBbz4HScM2QO","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"}] +<< 27:[1,751,null,{"value":null}] +>> 31:[0,752,"Marionette:GetContext"] +<< 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":["JDr9D6Y0QWgQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"JDr9D6Y0QWgQ","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"}] +<< 27:[1,756,null,{"value":null}] +>> 31:[0,757,"Marionette:GetContext"] +<< 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":["beU9aOA0FJRT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"beU9aOA0FJRT","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"JDr9D6Y0QWgQ","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"}] +<< 27:[1,761,null,{"value":null}] +>> 31:[0,762,"Marionette:GetContext"] +<< 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":["iKbCgf4w1Wj1"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"iKbCgf4w1Wj1","index":2,"type":3,"title":"","dateAdded":1794506423,"lastModified":1794506423,"parentGuid":"menu________"}}] +>> 31:[0,765,"Marionette:GetContext"] +<< 31:[1,765,null,{"value":"chrome"}] +>> 50:[0,766,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,766,null,{"value":null}] +>> 31:[0,767,"Marionette:GetContext"] +<< 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":["UM5dztSlgFLm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"UM5dztSlgFLm","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"}] +<< 27:[1,771,null,{"value":null}] +>> 31:[0,772,"Marionette:GetContext"] +<< 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":["EI_WRlxKe1R-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"EI_WRlxKe1R-","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"}] +<< 27:[1,776,null,{"value":null}] +>> 31:[0,777,"Marionette:GetContext"] +<< 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":["En5dyY2VfXPO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"En5dyY2VfXPO","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"}] +<< 27:[1,781,null,{"value":null}] +>> 31:[0,782,"Marionette:GetContext"] +<< 31:[1,782,null,{"value":"chrome"}] +>> 51:[0,783,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,783,null,{"value":null}] +>> 31:[0,784,"Marionette:GetContext"] +<< 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":["En5dyY2VfXPO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,788,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,788,null,{"value":null}] +>> 31:[0,789,"Marionette:GetContext"] +<< 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":["EI_WRlxKe1R-"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,793,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,793,null,{"value":null}] +>> 31:[0,794,"Marionette:GetContext"] +<< 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":["UM5dztSlgFLm"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,798,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,798,null,{"value":null}] +>> 31:[0,799,"Marionette:GetContext"] +<< 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":["iKbCgf4w1Wj1"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,803,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,803,null,{"value":null}] +>> 31:[0,804,"Marionette:GetContext"] +<< 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":["beU9aOA0FJRT"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,808,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,808,null,{"value":null}] +>> 31:[0,809,"Marionette:GetContext"] +<< 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":["JDr9D6Y0QWgQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,813,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,813,null,{"value":null}] +>> 31:[0,814,"Marionette:GetContext"] +<< 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":["IqQGFlYY33ms"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,818,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,818,null,{"value":null}] +>> 31:[0,819,"Marionette:GetContext"] +<< 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":["EBbz4HScM2QO"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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"}] +>> 51:[0,823,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,823,null,{"value":null}] +>> 31:[0,824,"Marionette:GetContext"] +<< 32:[1,824,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506423,"childCount":5}}] +>> 31:[0,827,"Marionette:GetContext"] +<< 31:[1,827,null,{"value":"chrome"}] +>> 51:[0,828,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,828,null,{"value":null}] +>> 31:[0,829,"Marionette:GetContext"] +<< 32:[1,829,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506423,"parentGuid":"root________","childCount":0}}] +>> 31:[0,832,"Marionette:GetContext"] +<< 31:[1,832,null,{"value":"chrome"}] +>> 51:[0,833,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,833,null,{"value":null}] +>> 31:[0,834,"Marionette:GetContext"] +<< 32:[1,834,null,{"value":"content"}] +>> 50:[0,835,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,835,null,{"value":null}] +>> 2276:[0,836,"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]); "}] +<< 27:[1,836,null,{"value":null}] +>> 31:[0,837,"Marionette:GetContext"] +<< 31:[1,837,null,{"value":"chrome"}] +>> 51:[0,838,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,838,null,{"value":null}] +>> 31:[0,839,"Marionette:GetContext"] +<< 32:[1,839,null,{"value":"content"}] +>> 50:[0,840,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,840,null,{"value":null}] +>> 2983:[0,841,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685611344,"guid":"ExAzkxs5efkR","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,841,null,{"value":{"dateAdded":"2023-06-01T09:22:24.000Z","guid":"ExAzkxs5efkR","lastModified":"2023-06-02T02:20:02.000Z","parentGuid":"menu________","title":"CPAN","type":2,"index":0}}] +>> 31:[0,842,"Marionette:GetContext"] +<< 31:[1,842,null,{"value":"chrome"}] +>> 51:[0,843,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,843,null,{"value":null}] +>> 31:[0,844,"Marionette:GetContext"] +<< 32:[1,844,null,{"value":"content"}] +>> 50:[0,845,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,845,null,{"value":null}] +>> 2276:[0,846,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,846,null,{"value":null}] +>> 31:[0,847,"Marionette:GetContext"] +<< 31:[1,847,null,{"value":"chrome"}] +>> 51:[0,848,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,848,null,{"value":null}] +>> 31:[0,849,"Marionette:GetContext"] +<< 32:[1,849,null,{"value":"content"}] +>> 50:[0,850,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,850,null,{"value":null}] +>> 3200:[0,851,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"utcxPgIOG05d","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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,851,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"utcxPgIOG05d","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","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,852,"Marionette:GetContext"] +<< 31:[1,852,null,{"value":"chrome"}] +>> 51:[0,853,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,853,null,{"value":null}] +>> 31:[0,854,"Marionette:GetContext"] +<< 32:[1,854,null,{"value":"content"}] +>> 50:[0,855,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,855,null,{"value":null}] +>> 2276:[0,856,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,856,null,{"value":null}] +>> 31:[0,857,"Marionette:GetContext"] +<< 31:[1,857,null,{"value":"chrome"}] +>> 51:[0,858,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,858,null,{"value":null}] +>> 31:[0,859,"Marionette:GetContext"] +<< 32:[1,859,null,{"value":"content"}] +>> 50:[0,860,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,860,null,{"value":null}] +>> 3232:[0,861,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672252,"guid":"XiZLcg8n_B4A","iconUrl":"fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38","lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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,861,null,{"value":{"dateAdded":"2023-06-02T02:17:32.000Z","guid":"XiZLcg8n_B4A","lastModified":"2023-06-02T02:17:32.000Z","parentGuid":"ExAzkxs5efkR","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,862,"Marionette:GetContext"] +<< 31:[1,862,null,{"value":"chrome"}] +>> 51:[0,863,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,863,null,{"value":null}] +>> 31:[0,864,"Marionette:GetContext"] +<< 32:[1,864,null,{"value":"content"}] +>> 50:[0,865,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,865,null,{"value":null}] +>> 2276:[0,866,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,866,null,{"value":null}] +>> 31:[0,867,"Marionette:GetContext"] +<< 31:[1,867,null,{"value":"chrome"}] +>> 51:[0,868,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,868,null,{"value":null}] +>> 31:[0,869,"Marionette:GetContext"] +<< 32:[1,869,null,{"value":"content"}] +>> 50:[0,870,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,870,null,{"value":null}] +>> 2987:[0,871,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670822,"guid":"eZlh-ztIYBne","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,871,null,{"value":{"dateAdded":"2023-06-02T01:53:42.000Z","guid":"eZlh-ztIYBne","lastModified":"2023-06-02T02:19:43.000Z","parentGuid":"menu________","title":"Searches","type":2,"index":1}}] +>> 31:[0,872,"Marionette:GetContext"] +<< 31:[1,872,null,{"value":"chrome"}] +>> 51:[0,873,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,873,null,{"value":null}] +>> 31:[0,874,"Marionette:GetContext"] +<< 32:[1,874,null,{"value":"content"}] +>> 50:[0,875,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,875,null,{"value":null}] +>> 2276:[0,876,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,876,null,{"value":null}] +>> 31:[0,877,"Marionette:GetContext"] +<< 31:[1,877,null,{"value":"chrome"}] +>> 51:[0,878,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,878,null,{"value":null}] +>> 31:[0,879,"Marionette:GetContext"] +<< 32:[1,879,null,{"value":"content"}] +>> 50:[0,880,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,880,null,{"value":null}] +>> 3195:[0,881,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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,881,null,{"value":{"dateAdded":"2023-06-02T01:52:51.000Z","guid":"bZbedzEdrOnQ","lastModified":"2023-06-02T01:52:52.000Z","parentGuid":"eZlh-ztIYBne","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,882,"Marionette:GetContext"] +<< 31:[1,882,null,{"value":"chrome"}] +>> 51:[0,883,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,883,null,{"value":null}] +>> 31:[0,884,"Marionette:GetContext"] +<< 32:[1,884,null,{"value":"content"}] +>> 50:[0,885,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,885,null,{"value":null}] +>> 2276:[0,886,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,886,null,{"value":null}] +>> 31:[0,887,"Marionette:GetContext"] +<< 31:[1,887,null,{"value":"chrome"}] +>> 51:[0,888,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,888,null,{"value":null}] +>> 31:[0,889,"Marionette:GetContext"] +<< 32:[1,889,null,{"value":"content"}] +>> 50:[0,890,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,890,null,{"value":null}] +>> 2979:[0,891,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685672418,"guid":"zCZX0_5lBXTS","lastModified":1685672418,"parentGuid":"menu________","title":"","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,891,null,{"value":{"dateAdded":"2023-06-02T02:20:18.000Z","guid":"zCZX0_5lBXTS","lastModified":"2023-06-02T02:20:18.000Z","parentGuid":"menu________","title":"","type":3,"index":2}}] +>> 31:[0,892,"Marionette:GetContext"] +<< 31:[1,892,null,{"value":"chrome"}] +>> 51:[0,893,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,893,null,{"value":null}] +>> 31:[0,894,"Marionette:GetContext"] +<< 32:[1,894,null,{"value":"content"}] +>> 50:[0,895,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,895,null,{"value":null}] +>> 2276:[0,896,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,896,null,{"value":null}] +>> 31:[0,897,"Marionette:GetContext"] +<< 31:[1,897,null,{"value":"chrome"}] +>> 51:[0,898,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,898,null,{"value":null}] +>> 31:[0,899,"Marionette:GetContext"] +<< 32:[1,899,null,{"value":"content"}] +>> 50:[0,900,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,900,null,{"value":null}] +>> 3244:[0,901,"WebDriver:ExecuteScript",{"args":[{"dateAdded":"1685611","guid":"JTBNJdLPdYhk","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,901,null,{"value":{"dateAdded":"1970-01-20T12:13:31.000Z","guid":"JTBNJdLPdYhk","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,902,"Marionette:GetContext"] +<< 31:[1,902,null,{"value":"chrome"}] +>> 51:[0,903,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,903,null,{"value":null}] +>> 31:[0,904,"Marionette:GetContext"] +<< 32:[1,904,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506423,"parentGuid":"root________","childCount":0}}] +>> 31:[0,907,"Marionette:GetContext"] +<< 31:[1,907,null,{"value":"chrome"}] +>> 51:[0,908,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,908,null,{"value":null}] +>> 31:[0,909,"Marionette:GetContext"] +<< 32:[1,909,null,{"value":"content"}] +>> 50:[0,910,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,910,null,{"value":null}] +>> 2276:[0,911,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,911,null,{"value":null}] +>> 31:[0,912,"Marionette:GetContext"] +<< 31:[1,912,null,{"value":"chrome"}] +>> 51:[0,913,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,913,null,{"value":null}] +>> 31:[0,914,"Marionette:GetContext"] +<< 32:[1,914,null,{"value":"content"}] +>> 50:[0,915,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,915,null,{"value":null}] +>> 3057:[0,916,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686363942,"guid":"UjOiVVvuVdng","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,916,null,{"value":{"dateAdded":"2023-06-10T02:25:42.000Z","guid":"UjOiVVvuVdng","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,917,"Marionette:GetContext"] +<< 31:[1,917,null,{"value":"chrome"}] +>> 51:[0,918,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,918,null,{"value":null}] +>> 31:[0,919,"Marionette:GetContext"] +<< 32:[1,919,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506423,"parentGuid":"root________","childCount":0}}] +>> 31:[0,922,"Marionette:GetContext"] +<< 31:[1,922,null,{"value":"chrome"}] +>> 51:[0,923,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,923,null,{"value":null}] +>> 31:[0,924,"Marionette:GetContext"] +<< 32:[1,924,null,{"value":"content"}] +>> 50:[0,925,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,925,null,{"value":null}] +>> 2276:[0,926,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,926,null,{"value":null}] +>> 31:[0,927,"Marionette:GetContext"] +<< 31:[1,927,null,{"value":"chrome"}] +>> 51:[0,928,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,928,null,{"value":null}] +>> 31:[0,929,"Marionette:GetContext"] +<< 32:[1,929,null,{"value":"content"}] +>> 50:[0,930,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,930,null,{"value":null}] +>> 3041:[0,931,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1686364081,"guid":"wiTkT9Zqb99b","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,931,null,{"value":{"dateAdded":"2023-06-10T02:28:01.000Z","guid":"wiTkT9Zqb99b","lastModified":"2023-06-10T02:28:15.000Z","parentGuid":"unfiled_____","title":"PerlMonks - The Monastery Gates","type":1,"url":"https://perlmonks.org/","index":0}}] +>> 31:[0,932,"Marionette:GetContext"] +<< 31:[1,932,null,{"value":"chrome"}] +>> 51:[0,933,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,933,null,{"value":null}] +>> 31:[0,934,"Marionette:GetContext"] +<< 32:[1,934,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 31:[0,937,"Marionette:GetContext"] +<< 31:[1,937,null,{"value":"chrome"}] +>> 51:[0,938,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,938,null,{"value":null}] +>> 31:[0,939,"Marionette:GetContext"] +<< 32:[1,939,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"1970-01-20T12:13:31.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:24.184Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","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":1794506418,"lastModified":1685611,"parentGuid":"root________","childCount":4}}] +>> 31:[0,945,"Marionette:GetContext"] +<< 31:[1,945,null,{"value":"chrome"}] +>> 50:[0,946,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,946,null,{"value":null}] +>> 31:[0,947,"Marionette:GetContext"] +<< 31:[1,947,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 31:[0,950,"Marionette:GetContext"] +<< 31:[1,950,null,{"value":"chrome"}] +>> 50:[0,951,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,951,null,{"value":null}] +>> 31:[0,952,"Marionette:GetContext"] +<< 31:[1,952,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506424,"parentGuid":"root________","childCount":4}}] +>> 31:[0,955,"Marionette:GetContext"] +<< 31:[1,955,null,{"value":"chrome"}] +>> 50:[0,956,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,956,null,{"value":null}] +>> 31:[0,957,"Marionette:GetContext"] +<< 31:[1,957,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 31:[0,960,"Marionette:GetContext"] +<< 31:[1,960,null,{"value":"chrome"}] +>> 50:[0,961,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,961,null,{"value":null}] +>> 31:[0,962,"Marionette:GetContext"] +<< 31:[1,962,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 31:[0,965,"Marionette:GetContext"] +<< 31:[1,965,null,{"value":"chrome"}] +>> 50:[0,966,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,966,null,{"value":null}] +>> 31:[0,967,"Marionette:GetContext"] +<< 31:[1,967,null,{"value":"chrome"}] +>> 50:[0,968,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,968,null,{"value":null}] +>> 2276:[0,969,"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,969,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685672252,"parentGuid":"menu________","childCount":2}}] +>> 31:[0,970,"Marionette:GetContext"] +<< 31:[1,970,null,{"value":"chrome"}] +>> 50:[0,971,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,971,null,{"value":null}] +>> 31:[0,972,"Marionette:GetContext"] +<< 31:[1,972,null,{"value":"chrome"}] +>> 50:[0,973,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,973,null,{"value":null}] +>> 2276:[0,974,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,974,null,{"value":{"guid":"utcxPgIOG05d","index":0,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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,975,"Marionette:GetContext"] +<< 31:[1,975,null,{"value":"chrome"}] +>> 50:[0,976,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,976,null,{"value":null}] +>> 31:[0,977,"Marionette:GetContext"] +<< 31:[1,977,null,{"value":"chrome"}] +>> 50:[0,978,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,978,null,{"value":null}] +>> 2276:[0,979,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,979,null,{"value":{"guid":"XiZLcg8n_B4A","index":1,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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,980,"Marionette:GetContext"] +<< 31:[1,980,null,{"value":"chrome"}] +>> 50:[0,981,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,981,null,{"value":null}] +>> 31:[0,982,"Marionette:GetContext"] +<< 31:[1,982,null,{"value":"chrome"}] +>> 50:[0,983,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,983,null,{"value":null}] +>> 2276:[0,984,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,984,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 31:[0,985,"Marionette:GetContext"] +<< 31:[1,985,null,{"value":"chrome"}] +>> 50:[0,986,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,986,null,{"value":null}] +>> 31:[0,987,"Marionette:GetContext"] +<< 31:[1,987,null,{"value":"chrome"}] +>> 50:[0,988,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,988,null,{"value":null}] +>> 2276:[0,989,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,989,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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,990,"Marionette:GetContext"] +<< 31:[1,990,null,{"value":"chrome"}] +>> 50:[0,991,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,991,null,{"value":null}] +>> 31:[0,992,"Marionette:GetContext"] +<< 31:[1,992,null,{"value":"chrome"}] +>> 50:[0,993,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,993,null,{"value":null}] +>> 2276:[0,994,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,994,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 31:[0,995,"Marionette:GetContext"] +<< 31:[1,995,null,{"value":"chrome"}] +>> 50:[0,996,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,996,null,{"value":null}] +>> 31:[0,997,"Marionette:GetContext"] +<< 31:[1,997,null,{"value":"chrome"}] +>> 50:[0,998,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,998,null,{"value":null}] +>> 2276:[0,999,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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,999,null,{"value":{"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":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"}}] +>> 32:[0,1000,"Marionette:GetContext"] +<< 32:[1,1000,null,{"value":"chrome"}] +>> 51:[0,1001,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1001,null,{"value":null}] +>> 32:[0,1002,"Marionette:GetContext"] +<< 32:[1,1002,null,{"value":"chrome"}] +>> 51:[0,1003,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1003,null,{"value":null}] +>> 2277:[0,1004,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1004,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1005,"Marionette:GetContext"] +<< 32:[1,1005,null,{"value":"chrome"}] +>> 51:[0,1006,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1006,null,{"value":null}] +>> 32:[0,1007,"Marionette:GetContext"] +<< 32:[1,1007,null,{"value":"chrome"}] +>> 51:[0,1008,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1008,null,{"value":null}] +>> 2277:[0,1009,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1009,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1010,"Marionette:GetContext"] +<< 32:[1,1010,null,{"value":"chrome"}] +>> 51:[0,1011,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1011,null,{"value":null}] +>> 32:[0,1012,"Marionette:GetContext"] +<< 32:[1,1012,null,{"value":"chrome"}] +>> 52:[0,1013,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1013,null,{"value":null}] +>> 32:[0,1014,"Marionette:GetContext"] +<< 33:[1,1014,null,{"value":"content"}] +>> 51:[0,1015,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1015,null,{"value":null}] +>> 800:[0,1016,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1016,null,{"value":null}] +>> 32:[0,1017,"Marionette:GetContext"] +<< 32:[1,1017,null,{"value":"chrome"}] +>> 52:[0,1018,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1018,null,{"value":null}] +>> 32:[0,1019,"Marionette:GetContext"] +<< 33:[1,1019,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506424,"childCount":5}}] +>> 32:[0,1022,"Marionette:GetContext"] +<< 32:[1,1022,null,{"value":"chrome"}] +>> 52:[0,1023,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1023,null,{"value":null}] +>> 32:[0,1024,"Marionette:GetContext"] +<< 33:[1,1024,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506424,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1027,"Marionette:GetContext"] +<< 32:[1,1027,null,{"value":"chrome"}] +>> 52:[0,1028,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1028,null,{"value":null}] +>> 32:[0,1029,"Marionette:GetContext"] +<< 33:[1,1029,null,{"value":"content"}] +>> 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":1794506424,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1032,"Marionette:GetContext"] +<< 32:[1,1032,null,{"value":"chrome"}] +>> 52:[0,1033,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1033,null,{"value":null}] +>> 32:[0,1034,"Marionette:GetContext"] +<< 33:[1,1034,null,{"value":"content"}] +>> 51:[0,1035,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1035,null,{"value":null}] +>> 2277:[0,1036,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1036,null,{"value":null}] +>> 32:[0,1037,"Marionette:GetContext"] +<< 32:[1,1037,null,{"value":"chrome"}] +>> 52:[0,1038,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1038,null,{"value":null}] +>> 32:[0,1039,"Marionette:GetContext"] +<< 33:[1,1039,null,{"value":"content"}] +>> 51:[0,1040,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1040,null,{"value":null}] +>> 3201:[0,1041,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685610972,"guid":"utcxPgIOG05d","iconUrl":"fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette","lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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; "}] +<< 333:[1,1041,null,{"value":{"dateAdded":"2023-06-01T09:16:12.000Z","guid":"utcxPgIOG05d","lastModified":"2023-06-01T09:16:13.000Z","parentGuid":"ExAzkxs5efkR","title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","type":1,"url":"https://metacpan.org/pod/Firefox::Marionette","index":1}}] +>> 32:[0,1042,"Marionette:GetContext"] +<< 32:[1,1042,null,{"value":"chrome"}] +>> 52:[0,1043,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1043,null,{"value":null}] +>> 32:[0,1044,"Marionette:GetContext"] +<< 33:[1,1044,null,{"value":"content"}] +>> 51:[0,1045,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1045,null,{"value":null}] +>> 2277:[0,1046,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1046,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1047,"Marionette:GetContext"] +<< 32:[1,1047,null,{"value":"chrome"}] +>> 52:[0,1048,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1048,null,{"value":null}] +>> 32:[0,1049,"Marionette:GetContext"] +<< 33:[1,1049,null,{"value":"content"}] +>> 51:[0,1050,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1050,null,{"value":null}] +>> 846:[0,1051,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 353:[1,1051,null,{"value":[{"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"}]}] +>> 32:[0,1052,"Marionette:GetContext"] +<< 32:[1,1052,null,{"value":"chrome"}] +>> 51:[0,1053,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1053,null,{"value":null}] +>> 2277:[0,1054,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1054,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1055,"Marionette:GetContext"] +<< 32:[1,1055,null,{"value":"chrome"}] +>> 51:[0,1056,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1056,null,{"value":null}] +>> 32:[0,1057,"Marionette:GetContext"] +<< 32:[1,1057,null,{"value":"chrome"}] +>> 52:[0,1058,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1058,null,{"value":null}] +>> 32:[0,1059,"Marionette:GetContext"] +<< 33:[1,1059,null,{"value":"content"}] +>> 51:[0,1060,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1060,null,{"value":null}] +>> 2277:[0,1061,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 177:[1,1061,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1062,"Marionette:GetContext"] +<< 32:[1,1062,null,{"value":"chrome"}] +>> 52:[0,1063,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1063,null,{"value":null}] +>> 32:[0,1064,"Marionette:GetContext"] +<< 33:[1,1064,null,{"value":"content"}] +>> 51:[0,1065,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1065,null,{"value":null}] +>> 2277:[0,1066,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1066,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1067,"Marionette:GetContext"] +<< 32:[1,1067,null,{"value":"chrome"}] +>> 52:[0,1068,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1068,null,{"value":null}] +>> 32:[0,1069,"Marionette:GetContext"] +<< 33:[1,1069,null,{"value":"content"}] +>> 51:[0,1070,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1070,null,{"value":null}] +>> 848:[0,1071,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 26:[1,1071,null,{"value":[]}] +>> 32:[0,1072,"Marionette:GetContext"] +<< 32:[1,1072,null,{"value":"chrome"}] +>> 52:[0,1073,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1073,null,{"value":null}] +>> 32:[0,1074,"Marionette:GetContext"] +<< 33:[1,1074,null,{"value":"content"}] +>> 51:[0,1075,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1075,null,{"value":null}] +>> 3196:[0,1076,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","iconUrl":"https://duckduckgo.com/favicon.ico","keyword":"\ud83d\udc2b","lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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; "}] +<< 278:[1,1076,null,{"value":{"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"}}] +>> 32:[0,1077,"Marionette:GetContext"] +<< 32:[1,1077,null,{"value":"chrome"}] +>> 52:[0,1078,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1078,null,{"value":null}] +>> 32:[0,1079,"Marionette:GetContext"] +<< 33:[1,1079,null,{"value":"content"}] +>> 51:[0,1080,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1080,null,{"value":null}] +>> 2277:[0,1081,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 154:[1,1081,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1082,"Marionette:GetContext"] +<< 32:[1,1082,null,{"value":"chrome"}] +>> 52:[0,1083,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1083,null,{"value":null}] +>> 32:[0,1084,"Marionette:GetContext"] +<< 33:[1,1084,null,{"value":"content"}] +>> 51:[0,1085,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1085,null,{"value":null}] +>> 2277:[0,1086,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1086,null,{"value":{"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":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"}}] +>> 32:[0,1087,"Marionette:GetContext"] +<< 32:[1,1087,null,{"value":"chrome"}] +>> 52:[0,1088,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1088,null,{"value":null}] +>> 32:[0,1089,"Marionette:GetContext"] +<< 33:[1,1089,null,{"value":"content"}] +>> 51:[0,1090,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1090,null,{"value":null}] +>> 836:[0,1091,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 376:[1,1091,null,{"value":[{"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"}]}] +>> 32:[0,1092,"Marionette:GetContext"] +<< 32:[1,1092,null,{"value":"chrome"}] +>> 51:[0,1093,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1093,null,{"value":null}] +>> 2277:[0,1094,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1094,null,{"value":{"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":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"}}] +>> 32:[0,1095,"Marionette:GetContext"] +<< 32:[1,1095,null,{"value":"chrome"}] +>> 51:[0,1096,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1096,null,{"value":null}] +>> 32:[0,1097,"Marionette:GetContext"] +<< 32:[1,1097,null,{"value":"chrome"}] +>> 52:[0,1098,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1098,null,{"value":null}] +>> 32:[0,1099,"Marionette:GetContext"] +<< 33:[1,1099,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1102,"Marionette:GetContext"] +<< 32:[1,1102,null,{"value":"chrome"}] +>> 52:[0,1103,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1103,null,{"value":null}] +>> 32:[0,1104,"Marionette:GetContext"] +<< 33:[1,1104,null,{"value":"content"}] +>> 51:[0,1105,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1105,null,{"value":null}] +>> 2277:[0,1106,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1106,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1107,"Marionette:GetContext"] +<< 32:[1,1107,null,{"value":"chrome"}] +>> 52:[0,1108,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1108,null,{"value":null}] +>> 32:[0,1109,"Marionette:GetContext"] +<< 33:[1,1109,null,{"value":"content"}] +>> 51:[0,1110,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1110,null,{"value":null}] +>> 822:[0,1111,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 266:[1,1111,null,{"value":[{"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"}]}] +>> 32:[0,1112,"Marionette:GetContext"] +<< 32:[1,1112,null,{"value":"chrome"}] +>> 51:[0,1113,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1113,null,{"value":null}] +>> 2277:[0,1114,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1114,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1115,"Marionette:GetContext"] +<< 32:[1,1115,null,{"value":"chrome"}] +>> 51:[0,1116,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1116,null,{"value":null}] +>> 32:[0,1117,"Marionette:GetContext"] +<< 32:[1,1117,null,{"value":"chrome"}] +>> 52:[0,1118,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1118,null,{"value":null}] +>> 32:[0,1119,"Marionette:GetContext"] +<< 33:[1,1119,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1122,"Marionette:GetContext"] +<< 32:[1,1122,null,{"value":"chrome"}] +>> 52:[0,1123,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1123,null,{"value":null}] +>> 32:[0,1124,"Marionette:GetContext"] +<< 33:[1,1124,null,{"value":"content"}] +>> 51:[0,1125,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1125,null,{"value":null}] +>> 2277:[0,1126,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1126,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1127,"Marionette:GetContext"] +<< 32:[1,1127,null,{"value":"chrome"}] +>> 52:[0,1128,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1128,null,{"value":null}] +>> 32:[0,1129,"Marionette:GetContext"] +<< 33:[1,1129,null,{"value":"content"}] +>> 51:[0,1130,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1130,null,{"value":null}] +>> 810:[0,1131,"WebDriver:ExecuteScript",{"args":["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]); "}] +<< 250:[1,1131,null,{"value":[{"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/"}]}] +>> 32:[0,1132,"Marionette:GetContext"] +<< 32:[1,1132,null,{"value":"chrome"}] +>> 51:[0,1133,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1133,null,{"value":null}] +>> 2277:[0,1134,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1134,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1135,"Marionette:GetContext"] +<< 32:[1,1135,null,{"value":"chrome"}] +>> 51:[0,1136,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1136,null,{"value":null}] +>> 32:[0,1137,"Marionette:GetContext"] +<< 32:[1,1137,null,{"value":"chrome"}] +>> 52:[0,1138,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1138,null,{"value":null}] +>> 32:[0,1139,"Marionette:GetContext"] +<< 33:[1,1139,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 32:[0,1142,"Marionette:GetContext"] +<< 32:[1,1142,null,{"value":"chrome"}] +>> 52:[0,1143,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1143,null,{"value":null}] +>> 32:[0,1144,"Marionette:GetContext"] +<< 33:[1,1144,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:24.184Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1150,"Marionette:GetContext"] +<< 32:[1,1150,null,{"value":"chrome"}] +>> 51:[0,1151,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1151,null,{"value":null}] +>> 32:[0,1152,"Marionette:GetContext"] +<< 32:[1,1152,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1155,"Marionette:GetContext"] +<< 32:[1,1155,null,{"value":"chrome"}] +>> 51:[0,1156,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1156,null,{"value":null}] +>> 32:[0,1157,"Marionette:GetContext"] +<< 32:[1,1157,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506424,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1160,"Marionette:GetContext"] +<< 32:[1,1160,null,{"value":"chrome"}] +>> 51:[0,1161,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1161,null,{"value":null}] +>> 32:[0,1162,"Marionette:GetContext"] +<< 32:[1,1162,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1165,"Marionette:GetContext"] +<< 32:[1,1165,null,{"value":"chrome"}] +>> 51:[0,1166,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1166,null,{"value":null}] +>> 32:[0,1167,"Marionette:GetContext"] +<< 32:[1,1167,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 32:[0,1170,"Marionette:GetContext"] +<< 32:[1,1170,null,{"value":"chrome"}] +>> 51:[0,1171,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1171,null,{"value":null}] +>> 32:[0,1172,"Marionette:GetContext"] +<< 32:[1,1172,null,{"value":"chrome"}] +>> 51:[0,1173,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1173,null,{"value":null}] +>> 2277:[0,1174,"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,1174,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1175,"Marionette:GetContext"] +<< 32:[1,1175,null,{"value":"chrome"}] +>> 51:[0,1176,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1176,null,{"value":null}] +>> 32:[0,1177,"Marionette:GetContext"] +<< 32:[1,1177,null,{"value":"chrome"}] +>> 51:[0,1178,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1178,null,{"value":null}] +>> 2277:[0,1179,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1179,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1180,"Marionette:GetContext"] +<< 32:[1,1180,null,{"value":"chrome"}] +>> 51:[0,1181,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1181,null,{"value":null}] +>> 32:[0,1182,"Marionette:GetContext"] +<< 32:[1,1182,null,{"value":"chrome"}] +>> 51:[0,1183,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1183,null,{"value":null}] +>> 2277:[0,1184,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 177:[1,1184,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1185,"Marionette:GetContext"] +<< 32:[1,1185,null,{"value":"chrome"}] +>> 51:[0,1186,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1186,null,{"value":null}] +>> 32:[0,1187,"Marionette:GetContext"] +<< 32:[1,1187,null,{"value":"chrome"}] +>> 51:[0,1188,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1188,null,{"value":null}] +>> 2277:[0,1189,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1189,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1190,"Marionette:GetContext"] +<< 32:[1,1190,null,{"value":"chrome"}] +>> 51:[0,1191,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1191,null,{"value":null}] +>> 32:[0,1192,"Marionette:GetContext"] +<< 32:[1,1192,null,{"value":"chrome"}] +>> 51:[0,1193,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1193,null,{"value":null}] +>> 2277:[0,1194,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 154:[1,1194,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1195,"Marionette:GetContext"] +<< 32:[1,1195,null,{"value":"chrome"}] +>> 51:[0,1196,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1196,null,{"value":null}] +>> 32:[0,1197,"Marionette:GetContext"] +<< 32:[1,1197,null,{"value":"chrome"}] +>> 51:[0,1198,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1198,null,{"value":null}] +>> 2277:[0,1199,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1199,null,{"value":{"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":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"}}] +>> 32:[0,1200,"Marionette:GetContext"] +<< 32:[1,1200,null,{"value":"chrome"}] +>> 51:[0,1201,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1201,null,{"value":null}] +>> 32:[0,1202,"Marionette:GetContext"] +<< 32:[1,1202,null,{"value":"chrome"}] +>> 51:[0,1203,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1203,null,{"value":null}] +>> 2277:[0,1204,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1204,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1205,"Marionette:GetContext"] +<< 32:[1,1205,null,{"value":"chrome"}] +>> 51:[0,1206,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1206,null,{"value":null}] +>> 32:[0,1207,"Marionette:GetContext"] +<< 32:[1,1207,null,{"value":"chrome"}] +>> 51:[0,1208,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1208,null,{"value":null}] +>> 2277:[0,1209,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1209,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1210,"Marionette:GetContext"] +<< 32:[1,1210,null,{"value":"chrome"}] +>> 51:[0,1211,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1211,null,{"value":null}] +>> 32:[0,1212,"Marionette:GetContext"] +<< 32:[1,1212,null,{"value":"chrome"}] +>> 51:[0,1213,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1213,null,{"value":null}] +>> 2277:[0,1214,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1214,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1215,"Marionette:GetContext"] +<< 32:[1,1215,null,{"value":"chrome"}] +>> 51:[0,1216,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1216,null,{"value":null}] +>> 32:[0,1217,"Marionette:GetContext"] +<< 32:[1,1217,null,{"value":"chrome"}] +>> 52:[0,1218,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1218,null,{"value":null}] +>> 32:[0,1219,"Marionette:GetContext"] +<< 33:[1,1219,null,{"value":"content"}] +>> 51:[0,1220,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1220,null,{"value":null}] +>> 840:[0,1221,"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]); "}] +<< 335:[1,1221,null,{"value":[{"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,1222,"Marionette:GetContext"] +<< 32:[1,1222,null,{"value":"chrome"}] +>> 51:[0,1223,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1223,null,{"value":null}] +>> 2277:[0,1224,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1224,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1225,"Marionette:GetContext"] +<< 32:[1,1225,null,{"value":"chrome"}] +>> 51:[0,1226,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1226,null,{"value":null}] +>> 32:[0,1227,"Marionette:GetContext"] +<< 32:[1,1227,null,{"value":"chrome"}] +>> 52:[0,1228,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1228,null,{"value":null}] +>> 32:[0,1229,"Marionette:GetContext"] +<< 33:[1,1229,null,{"value":"content"}] +>> 51:[0,1230,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1230,null,{"value":null}] +>> 2302:[0,1231,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1231,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1232,"Marionette:GetContext"] +<< 32:[1,1232,null,{"value":"chrome"}] +>> 52:[0,1233,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1233,null,{"value":null}] +>> 32:[0,1234,"Marionette:GetContext"] +<< 33:[1,1234,null,{"value":"content"}] +>> 51:[0,1235,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1235,null,{"value":null}] +>> 2302:[0,1236,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 2717:[1,1236,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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,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"}}] +>> 32:[0,1237,"Marionette:GetContext"] +<< 32:[1,1237,null,{"value":"chrome"}] +>> 52:[0,1238,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1238,null,{"value":null}] +>> 32:[0,1239,"Marionette:GetContext"] +<< 33:[1,1239,null,{"value":"content"}] +>> 51:[0,1240,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1240,null,{"value":null}] +>> 2302:[0,1241,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 2685:[1,1241,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1242,"Marionette:GetContext"] +<< 32:[1,1242,null,{"value":"chrome"}] +>> 52:[0,1243,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1243,null,{"value":null}] +>> 32:[0,1244,"Marionette:GetContext"] +<< 33:[1,1244,null,{"value":"content"}] +>> 51:[0,1245,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1245,null,{"value":null}] +>> 2302:[0,1246,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 2717:[1,1246,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1247,"Marionette:GetContext"] +<< 32:[1,1247,null,{"value":"chrome"}] +>> 52:[0,1248,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1248,null,{"value":null}] +>> 32:[0,1249,"Marionette:GetContext"] +<< 33:[1,1249,null,{"value":"content"}] +>> 51:[0,1250,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1250,null,{"value":null}] +>> 2302:[0,1251,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1251,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1252,"Marionette:GetContext"] +<< 32:[1,1252,null,{"value":"chrome"}] +>> 52:[0,1253,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1253,null,{"value":null}] +>> 32:[0,1254,"Marionette:GetContext"] +<< 33:[1,1254,null,{"value":"content"}] +>> 51:[0,1255,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1255,null,{"value":null}] +>> 2302:[0,1256,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 177:[1,1256,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1257,"Marionette:GetContext"] +<< 32:[1,1257,null,{"value":"chrome"}] +>> 52:[0,1258,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1258,null,{"value":null}] +>> 32:[0,1259,"Marionette:GetContext"] +<< 33:[1,1259,null,{"value":"content"}] +>> 51:[0,1260,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1260,null,{"value":null}] +>> 2302:[0,1261,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"eZlh-ztIYBne"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1261,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1262,"Marionette:GetContext"] +<< 32:[1,1262,null,{"value":"chrome"}] +>> 52:[0,1263,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1263,null,{"value":null}] +>> 32:[0,1264,"Marionette:GetContext"] +<< 33:[1,1264,null,{"value":"content"}] +>> 51:[0,1265,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1265,null,{"value":null}] +>> 2302:[0,1266,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1266,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1267,"Marionette:GetContext"] +<< 32:[1,1267,null,{"value":"chrome"}] +>> 52:[0,1268,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1268,null,{"value":null}] +>> 32:[0,1269,"Marionette:GetContext"] +<< 33:[1,1269,null,{"value":"content"}] +>> 51:[0,1270,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1270,null,{"value":null}] +>> 2302:[0,1271,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 177:[1,1271,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1272,"Marionette:GetContext"] +<< 32:[1,1272,null,{"value":"chrome"}] +>> 52:[0,1273,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1273,null,{"value":null}] +>> 32:[0,1274,"Marionette:GetContext"] +<< 33:[1,1274,null,{"value":"content"}] +>> 51:[0,1275,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1275,null,{"value":null}] +>> 2302:[0,1276,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"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]); "}] +<< 154:[1,1276,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1277,"Marionette:GetContext"] +<< 32:[1,1277,null,{"value":"chrome"}] +>> 52:[0,1278,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1278,null,{"value":null}] +>> 32:[0,1279,"Marionette:GetContext"] +<< 33:[1,1279,null,{"value":"content"}] +>> 51:[0,1280,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1280,null,{"value":null}] +>> 2302:[0,1281,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1281,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1282,"Marionette:GetContext"] +<< 32:[1,1282,null,{"value":"chrome"}] +>> 52:[0,1283,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1283,null,{"value":null}] +>> 32:[0,1284,"Marionette:GetContext"] +<< 33:[1,1284,null,{"value":"content"}] +>> 51:[0,1285,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1285,null,{"value":null}] +>> 2302:[0,1286,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 177:[1,1286,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1287,"Marionette:GetContext"] +<< 32:[1,1287,null,{"value":"chrome"}] +>> 52:[0,1288,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1288,null,{"value":null}] +>> 32:[0,1289,"Marionette:GetContext"] +<< 33:[1,1289,null,{"value":"content"}] +>> 51:[0,1290,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1290,null,{"value":null}] +>> 2302:[0,1291,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"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]); "}] +<< 154:[1,1291,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1292,"Marionette:GetContext"] +<< 32:[1,1292,null,{"value":"chrome"}] +>> 52:[0,1293,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1293,null,{"value":null}] +>> 32:[0,1294,"Marionette:GetContext"] +<< 33:[1,1294,null,{"value":"content"}] +>> 51:[0,1295,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1295,null,{"value":null}] +>> 2302:[0,1296,"WebDriver:ExecuteScript",{"args":[{"index":3,"parentGuid":"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]); "}] +<< 1447:[1,1296,null,{"value":{"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":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"}}] +>> 32:[0,1297,"Marionette:GetContext"] +<< 32:[1,1297,null,{"value":"chrome"}] +>> 52:[0,1298,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1298,null,{"value":null}] +>> 32:[0,1299,"Marionette:GetContext"] +<< 33:[1,1299,null,{"value":"content"}] +>> 51:[0,1300,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1300,null,{"value":null}] +>> 2302:[0,1301,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 242:[1,1301,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1302,"Marionette:GetContext"] +<< 32:[1,1302,null,{"value":"chrome"}] +>> 52:[0,1303,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1303,null,{"value":null}] +>> 32:[0,1304,"Marionette:GetContext"] +<< 33:[1,1304,null,{"value":"content"}] +>> 51:[0,1305,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1305,null,{"value":null}] +>> 2302:[0,1306,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 226:[1,1306,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1307,"Marionette:GetContext"] +<< 32:[1,1307,null,{"value":"chrome"}] +>> 52:[0,1308,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1308,null,{"value":null}] +>> 32:[0,1309,"Marionette:GetContext"] +<< 33:[1,1309,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1685610972,"childCount":5}}] +>> 32:[0,1312,"Marionette:GetContext"] +<< 32:[1,1312,null,{"value":"chrome"}] +>> 52:[0,1313,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1313,null,{"value":null}] +>> 32:[0,1314,"Marionette:GetContext"] +<< 33:[1,1314,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1317,"Marionette:GetContext"] +<< 32:[1,1317,null,{"value":"chrome"}] +>> 52:[0,1318,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1318,null,{"value":null}] +>> 32:[0,1319,"Marionette:GetContext"] +<< 33:[1,1319,null,{"value":"content"}] +>> 51:[0,1320,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1320,null,{"value":null}] +>> 2277:[0,1321,"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,1321,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1322,"Marionette:GetContext"] +<< 32:[1,1322,null,{"value":"chrome"}] +>> 52:[0,1323,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1323,null,{"value":null}] +>> 32:[0,1324,"Marionette:GetContext"] +<< 33:[1,1324,null,{"value":"content"}] +>> 51:[0,1325,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1325,null,{"value":null}] +>> 2277:[0,1326,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1326,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1327,"Marionette:GetContext"] +<< 32:[1,1327,null,{"value":"chrome"}] +>> 52:[0,1328,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1328,null,{"value":null}] +>> 32:[0,1329,"Marionette:GetContext"] +<< 33:[1,1329,null,{"value":"content"}] +>> 51:[0,1330,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1330,null,{"value":null}] +>> 832:[0,1331,"WebDriver:ExecuteScript",{"args":["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]); "}] +<< 335:[1,1331,null,{"value":[{"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,1332,"Marionette:GetContext"] +<< 32:[1,1332,null,{"value":"chrome"}] +>> 51:[0,1333,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1333,null,{"value":null}] +>> 2277:[0,1334,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1334,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1335,"Marionette:GetContext"] +<< 32:[1,1335,null,{"value":"chrome"}] +>> 51:[0,1336,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1336,null,{"value":null}] +>> 32:[0,1337,"Marionette:GetContext"] +<< 32:[1,1337,null,{"value":"chrome"}] +>> 52:[0,1338,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1338,null,{"value":null}] +>> 32:[0,1339,"Marionette:GetContext"] +<< 33:[1,1339,null,{"value":"content"}] +>> 51:[0,1340,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1340,null,{"value":null}] +>> 2277:[0,1341,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1341,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1342,"Marionette:GetContext"] +<< 32:[1,1342,null,{"value":"chrome"}] +>> 52:[0,1343,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1343,null,{"value":null}] +>> 32:[0,1344,"Marionette:GetContext"] +<< 33:[1,1344,null,{"value":"content"}] +>> 51:[0,1345,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1345,null,{"value":null}] +>> 846:[0,1346,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 353:[1,1346,null,{"value":[{"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"}]}] +>> 32:[0,1347,"Marionette:GetContext"] +<< 32:[1,1347,null,{"value":"chrome"}] +>> 51:[0,1348,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1348,null,{"value":null}] +>> 2277:[0,1349,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1349,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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,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"}}] +>> 32:[0,1350,"Marionette:GetContext"] +<< 32:[1,1350,null,{"value":"chrome"}] +>> 51:[0,1351,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1351,null,{"value":null}] +>> 32:[0,1352,"Marionette:GetContext"] +<< 32:[1,1352,null,{"value":"chrome"}] +>> 52:[0,1353,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1353,null,{"value":null}] +>> 32:[0,1354,"Marionette:GetContext"] +<< 33:[1,1354,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1357,"Marionette:GetContext"] +<< 32:[1,1357,null,{"value":"chrome"}] +>> 52:[0,1358,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1358,null,{"value":null}] +>> 32:[0,1359,"Marionette:GetContext"] +<< 33:[1,1359,null,{"value":"content"}] +>> 51:[0,1360,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1360,null,{"value":null}] +>> 2277:[0,1361,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 177:[1,1361,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1362,"Marionette:GetContext"] +<< 32:[1,1362,null,{"value":"chrome"}] +>> 52:[0,1363,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1363,null,{"value":null}] +>> 32:[0,1364,"Marionette:GetContext"] +<< 33:[1,1364,null,{"value":"content"}] +>> 51:[0,1365,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1365,null,{"value":null}] +>> 2277:[0,1366,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1366,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1367,"Marionette:GetContext"] +<< 32:[1,1367,null,{"value":"chrome"}] +>> 52:[0,1368,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1368,null,{"value":null}] +>> 32:[0,1369,"Marionette:GetContext"] +<< 33:[1,1369,null,{"value":"content"}] +>> 51:[0,1370,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1370,null,{"value":null}] +>> 848:[0,1371,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 26:[1,1371,null,{"value":[]}] +>> 32:[0,1372,"Marionette:GetContext"] +<< 32:[1,1372,null,{"value":"chrome"}] +>> 52:[0,1373,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1373,null,{"value":null}] +>> 32:[0,1374,"Marionette:GetContext"] +<< 33:[1,1374,null,{"value":"content"}] +>> 51:[0,1375,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1375,null,{"value":null}] +>> 4500:[0,1376,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","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":"eZlh-ztIYBne","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; "}] +<< 278:[1,1376,null,{"value":{"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"}}] +>> 32:[0,1377,"Marionette:GetContext"] +<< 32:[1,1377,null,{"value":"chrome"}] +>> 52:[0,1378,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1378,null,{"value":null}] +>> 32:[0,1379,"Marionette:GetContext"] +<< 33:[1,1379,null,{"value":"content"}] +>> 51:[0,1380,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1380,null,{"value":null}] +>> 2277:[0,1381,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 154:[1,1381,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1382,"Marionette:GetContext"] +<< 32:[1,1382,null,{"value":"chrome"}] +>> 52:[0,1383,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1383,null,{"value":null}] +>> 32:[0,1384,"Marionette:GetContext"] +<< 33:[1,1384,null,{"value":"content"}] +>> 51:[0,1385,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1385,null,{"value":null}] +>> 2277:[0,1386,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1386,null,{"value":{"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":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"}}] +>> 32:[0,1387,"Marionette:GetContext"] +<< 32:[1,1387,null,{"value":"chrome"}] +>> 52:[0,1388,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1388,null,{"value":null}] +>> 32:[0,1389,"Marionette:GetContext"] +<< 33:[1,1389,null,{"value":"content"}] +>> 51:[0,1390,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1390,null,{"value":null}] +>> 836:[0,1391,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 376:[1,1391,null,{"value":[{"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"}]}] +>> 32:[0,1392,"Marionette:GetContext"] +<< 32:[1,1392,null,{"value":"chrome"}] +>> 51:[0,1393,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1393,null,{"value":null}] +>> 2277:[0,1394,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1394,null,{"value":{"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":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"}}] +>> 32:[0,1395,"Marionette:GetContext"] +<< 32:[1,1395,null,{"value":"chrome"}] +>> 51:[0,1396,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1396,null,{"value":null}] +>> 32:[0,1397,"Marionette:GetContext"] +<< 32:[1,1397,null,{"value":"chrome"}] +>> 52:[0,1398,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1398,null,{"value":null}] +>> 32:[0,1399,"Marionette:GetContext"] +<< 33:[1,1399,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1402,"Marionette:GetContext"] +<< 32:[1,1402,null,{"value":"chrome"}] +>> 52:[0,1403,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1403,null,{"value":null}] +>> 32:[0,1404,"Marionette:GetContext"] +<< 33:[1,1404,null,{"value":"content"}] +>> 51:[0,1405,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1405,null,{"value":null}] +>> 2277:[0,1406,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1406,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1407,"Marionette:GetContext"] +<< 32:[1,1407,null,{"value":"chrome"}] +>> 52:[0,1408,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1408,null,{"value":null}] +>> 32:[0,1409,"Marionette:GetContext"] +<< 33:[1,1409,null,{"value":"content"}] +>> 51:[0,1410,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1410,null,{"value":null}] +>> 822:[0,1411,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 266:[1,1411,null,{"value":[{"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"}]}] +>> 32:[0,1412,"Marionette:GetContext"] +<< 32:[1,1412,null,{"value":"chrome"}] +>> 51:[0,1413,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1413,null,{"value":null}] +>> 2277:[0,1414,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1414,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1415,"Marionette:GetContext"] +<< 32:[1,1415,null,{"value":"chrome"}] +>> 51:[0,1416,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1416,null,{"value":null}] +>> 32:[0,1417,"Marionette:GetContext"] +<< 32:[1,1417,null,{"value":"chrome"}] +>> 52:[0,1418,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1418,null,{"value":null}] +>> 32:[0,1419,"Marionette:GetContext"] +<< 33:[1,1419,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1422,"Marionette:GetContext"] +<< 32:[1,1422,null,{"value":"chrome"}] +>> 52:[0,1423,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1423,null,{"value":null}] +>> 32:[0,1424,"Marionette:GetContext"] +<< 33:[1,1424,null,{"value":"content"}] +>> 51:[0,1425,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1425,null,{"value":null}] +>> 2277:[0,1426,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1426,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1427,"Marionette:GetContext"] +<< 32:[1,1427,null,{"value":"chrome"}] +>> 52:[0,1428,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1428,null,{"value":null}] +>> 32:[0,1429,"Marionette:GetContext"] +<< 33:[1,1429,null,{"value":"content"}] +>> 51:[0,1430,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1430,null,{"value":null}] +>> 810:[0,1431,"WebDriver:ExecuteScript",{"args":["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]); "}] +<< 250:[1,1431,null,{"value":[{"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/"}]}] +>> 32:[0,1432,"Marionette:GetContext"] +<< 32:[1,1432,null,{"value":"chrome"}] +>> 51:[0,1433,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1433,null,{"value":null}] +>> 2277:[0,1434,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1434,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1435,"Marionette:GetContext"] +<< 32:[1,1435,null,{"value":"chrome"}] +>> 51:[0,1436,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1436,null,{"value":null}] +>> 32:[0,1437,"Marionette:GetContext"] +<< 32:[1,1437,null,{"value":"chrome"}] +>> 52:[0,1438,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1438,null,{"value":null}] +>> 32:[0,1439,"Marionette:GetContext"] +<< 33:[1,1439,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:24.184Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1445,"Marionette:GetContext"] +<< 32:[1,1445,null,{"value":"chrome"}] +>> 51:[0,1446,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1446,null,{"value":null}] +>> 32:[0,1447,"Marionette:GetContext"] +<< 32:[1,1447,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1450,"Marionette:GetContext"] +<< 32:[1,1450,null,{"value":"chrome"}] +>> 51:[0,1451,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1451,null,{"value":null}] +>> 32:[0,1452,"Marionette:GetContext"] +<< 32:[1,1452,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506424,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1455,"Marionette:GetContext"] +<< 32:[1,1455,null,{"value":"chrome"}] +>> 51:[0,1456,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1456,null,{"value":null}] +>> 32:[0,1457,"Marionette:GetContext"] +<< 32:[1,1457,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1460,"Marionette:GetContext"] +<< 32:[1,1460,null,{"value":"chrome"}] +>> 51:[0,1461,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1461,null,{"value":null}] +>> 32:[0,1462,"Marionette:GetContext"] +<< 32:[1,1462,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 32:[0,1465,"Marionette:GetContext"] +<< 32:[1,1465,null,{"value":"chrome"}] +>> 51:[0,1466,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1466,null,{"value":null}] +>> 32:[0,1467,"Marionette:GetContext"] +<< 32:[1,1467,null,{"value":"chrome"}] +>> 51:[0,1468,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1468,null,{"value":null}] +>> 2277:[0,1469,"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,1469,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1470,"Marionette:GetContext"] +<< 32:[1,1470,null,{"value":"chrome"}] +>> 51:[0,1471,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1471,null,{"value":null}] +>> 32:[0,1472,"Marionette:GetContext"] +<< 32:[1,1472,null,{"value":"chrome"}] +>> 51:[0,1473,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1473,null,{"value":null}] +>> 2277:[0,1474,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1474,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1475,"Marionette:GetContext"] +<< 32:[1,1475,null,{"value":"chrome"}] +>> 51:[0,1476,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1476,null,{"value":null}] +>> 32:[0,1477,"Marionette:GetContext"] +<< 32:[1,1477,null,{"value":"chrome"}] +>> 51:[0,1478,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1478,null,{"value":null}] +>> 2277:[0,1479,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 177:[1,1479,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1480,"Marionette:GetContext"] +<< 32:[1,1480,null,{"value":"chrome"}] +>> 51:[0,1481,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1481,null,{"value":null}] +>> 32:[0,1482,"Marionette:GetContext"] +<< 32:[1,1482,null,{"value":"chrome"}] +>> 51:[0,1483,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1483,null,{"value":null}] +>> 2277:[0,1484,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1484,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1485,"Marionette:GetContext"] +<< 32:[1,1485,null,{"value":"chrome"}] +>> 51:[0,1486,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1486,null,{"value":null}] +>> 32:[0,1487,"Marionette:GetContext"] +<< 32:[1,1487,null,{"value":"chrome"}] +>> 51:[0,1488,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1488,null,{"value":null}] +>> 2277:[0,1489,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 154:[1,1489,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1490,"Marionette:GetContext"] +<< 32:[1,1490,null,{"value":"chrome"}] +>> 51:[0,1491,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1491,null,{"value":null}] +>> 32:[0,1492,"Marionette:GetContext"] +<< 32:[1,1492,null,{"value":"chrome"}] +>> 51:[0,1493,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1493,null,{"value":null}] +>> 2277:[0,1494,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1494,null,{"value":{"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":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"}}] +>> 32:[0,1495,"Marionette:GetContext"] +<< 32:[1,1495,null,{"value":"chrome"}] +>> 51:[0,1496,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1496,null,{"value":null}] +>> 32:[0,1497,"Marionette:GetContext"] +<< 32:[1,1497,null,{"value":"chrome"}] +>> 51:[0,1498,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1498,null,{"value":null}] +>> 2277:[0,1499,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1499,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1500,"Marionette:GetContext"] +<< 32:[1,1500,null,{"value":"chrome"}] +>> 51:[0,1501,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1501,null,{"value":null}] +>> 32:[0,1502,"Marionette:GetContext"] +<< 32:[1,1502,null,{"value":"chrome"}] +>> 51:[0,1503,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1503,null,{"value":null}] +>> 2277:[0,1504,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1504,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1505,"Marionette:GetContext"] +<< 32:[1,1505,null,{"value":"chrome"}] +>> 51:[0,1506,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1506,null,{"value":null}] +>> 32:[0,1507,"Marionette:GetContext"] +<< 32:[1,1507,null,{"value":"chrome"}] +>> 51:[0,1508,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1508,null,{"value":null}] +>> 2277:[0,1509,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1509,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1510,"Marionette:GetContext"] +<< 32:[1,1510,null,{"value":"chrome"}] +>> 51:[0,1511,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1511,null,{"value":null}] +>> 32:[0,1512,"Marionette:GetContext"] +<< 32:[1,1512,null,{"value":"chrome"}] +>> 52:[0,1513,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1513,null,{"value":null}] +>> 32:[0,1514,"Marionette:GetContext"] +<< 33:[1,1514,null,{"value":"content"}] +>> 51:[0,1515,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1515,null,{"value":null}] +>> 840:[0,1516,"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]); "}] +<< 335:[1,1516,null,{"value":[{"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,1517,"Marionette:GetContext"] +<< 32:[1,1517,null,{"value":"chrome"}] +>> 51:[0,1518,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1518,null,{"value":null}] +>> 2277:[0,1519,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1519,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1520,"Marionette:GetContext"] +<< 32:[1,1520,null,{"value":"chrome"}] +>> 51:[0,1521,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1521,null,{"value":null}] +>> 32:[0,1522,"Marionette:GetContext"] +<< 32:[1,1522,null,{"value":"chrome"}] +>> 52:[0,1523,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1523,null,{"value":null}] +>> 32:[0,1524,"Marionette:GetContext"] +<< 33:[1,1524,null,{"value":"content"}] +>> 51:[0,1525,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1525,null,{"value":null}] +>> 2302:[0,1526,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1526,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1527,"Marionette:GetContext"] +<< 32:[1,1527,null,{"value":"chrome"}] +>> 52:[0,1528,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1528,null,{"value":null}] +>> 32:[0,1529,"Marionette:GetContext"] +<< 33:[1,1529,null,{"value":"content"}] +>> 51:[0,1530,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1530,null,{"value":null}] +>> 2302:[0,1531,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 2717:[1,1531,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1532,"Marionette:GetContext"] +<< 32:[1,1532,null,{"value":"chrome"}] +>> 52:[0,1533,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1533,null,{"value":null}] +>> 32:[0,1534,"Marionette:GetContext"] +<< 33:[1,1534,null,{"value":"content"}] +>> 51:[0,1535,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1535,null,{"value":null}] +>> 2302:[0,1536,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 2685:[1,1536,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1537,"Marionette:GetContext"] +<< 32:[1,1537,null,{"value":"chrome"}] +>> 52:[0,1538,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1538,null,{"value":null}] +>> 32:[0,1539,"Marionette:GetContext"] +<< 33:[1,1539,null,{"value":"content"}] +>> 51:[0,1540,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1540,null,{"value":null}] +>> 2302:[0,1541,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 2717:[1,1541,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1542,"Marionette:GetContext"] +<< 32:[1,1542,null,{"value":"chrome"}] +>> 52:[0,1543,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1543,null,{"value":null}] +>> 32:[0,1544,"Marionette:GetContext"] +<< 33:[1,1544,null,{"value":"content"}] +>> 51:[0,1545,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1545,null,{"value":null}] +>> 2302:[0,1546,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1546,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1547,"Marionette:GetContext"] +<< 32:[1,1547,null,{"value":"chrome"}] +>> 52:[0,1548,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1548,null,{"value":null}] +>> 32:[0,1549,"Marionette:GetContext"] +<< 33:[1,1549,null,{"value":"content"}] +>> 51:[0,1550,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1550,null,{"value":null}] +>> 2302:[0,1551,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 177:[1,1551,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1552,"Marionette:GetContext"] +<< 32:[1,1552,null,{"value":"chrome"}] +>> 52:[0,1553,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1553,null,{"value":null}] +>> 32:[0,1554,"Marionette:GetContext"] +<< 33:[1,1554,null,{"value":"content"}] +>> 51:[0,1555,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1555,null,{"value":null}] +>> 2302:[0,1556,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"eZlh-ztIYBne"}],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1556,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1557,"Marionette:GetContext"] +<< 32:[1,1557,null,{"value":"chrome"}] +>> 52:[0,1558,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1558,null,{"value":null}] +>> 32:[0,1559,"Marionette:GetContext"] +<< 33:[1,1559,null,{"value":"content"}] +>> 51:[0,1560,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1560,null,{"value":null}] +>> 2302:[0,1561,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1561,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1562,"Marionette:GetContext"] +<< 32:[1,1562,null,{"value":"chrome"}] +>> 52:[0,1563,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1563,null,{"value":null}] +>> 32:[0,1564,"Marionette:GetContext"] +<< 33:[1,1564,null,{"value":"content"}] +>> 51:[0,1565,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1565,null,{"value":null}] +>> 2302:[0,1566,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 177:[1,1566,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1567,"Marionette:GetContext"] +<< 32:[1,1567,null,{"value":"chrome"}] +>> 52:[0,1568,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1568,null,{"value":null}] +>> 32:[0,1569,"Marionette:GetContext"] +<< 33:[1,1569,null,{"value":"content"}] +>> 51:[0,1570,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1570,null,{"value":null}] +>> 2302:[0,1571,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"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]); "}] +<< 154:[1,1571,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1572,"Marionette:GetContext"] +<< 32:[1,1572,null,{"value":"chrome"}] +>> 52:[0,1573,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1573,null,{"value":null}] +>> 32:[0,1574,"Marionette:GetContext"] +<< 33:[1,1574,null,{"value":"content"}] +>> 51:[0,1575,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1575,null,{"value":null}] +>> 2302:[0,1576,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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,1576,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1577,"Marionette:GetContext"] +<< 32:[1,1577,null,{"value":"chrome"}] +>> 52:[0,1578,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1578,null,{"value":null}] +>> 32:[0,1579,"Marionette:GetContext"] +<< 33:[1,1579,null,{"value":"content"}] +>> 51:[0,1580,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1580,null,{"value":null}] +>> 2302:[0,1581,"WebDriver:ExecuteScript",{"args":[{"index":1,"parentGuid":"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]); "}] +<< 177:[1,1581,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1582,"Marionette:GetContext"] +<< 32:[1,1582,null,{"value":"chrome"}] +>> 52:[0,1583,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1583,null,{"value":null}] +>> 32:[0,1584,"Marionette:GetContext"] +<< 33:[1,1584,null,{"value":"content"}] +>> 51:[0,1585,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1585,null,{"value":null}] +>> 2302:[0,1586,"WebDriver:ExecuteScript",{"args":[{"index":2,"parentGuid":"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]); "}] +<< 154:[1,1586,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1587,"Marionette:GetContext"] +<< 32:[1,1587,null,{"value":"chrome"}] +>> 52:[0,1588,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1588,null,{"value":null}] +>> 32:[0,1589,"Marionette:GetContext"] +<< 33:[1,1589,null,{"value":"content"}] +>> 51:[0,1590,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1590,null,{"value":null}] +>> 2302:[0,1591,"WebDriver:ExecuteScript",{"args":[{"index":3,"parentGuid":"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]); "}] +<< 1447:[1,1591,null,{"value":{"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":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"}}] +>> 32:[0,1592,"Marionette:GetContext"] +<< 32:[1,1592,null,{"value":"chrome"}] +>> 52:[0,1593,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1593,null,{"value":null}] +>> 32:[0,1594,"Marionette:GetContext"] +<< 33:[1,1594,null,{"value":"content"}] +>> 51:[0,1595,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1595,null,{"value":null}] +>> 2302:[0,1596,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 242:[1,1596,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1597,"Marionette:GetContext"] +<< 32:[1,1597,null,{"value":"chrome"}] +>> 52:[0,1598,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1598,null,{"value":null}] +>> 32:[0,1599,"Marionette:GetContext"] +<< 33:[1,1599,null,{"value":"content"}] +>> 51:[0,1600,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1600,null,{"value":null}] +>> 2302:[0,1601,"WebDriver:ExecuteScript",{"args":[{"index":0,"parentGuid":"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]); "}] +<< 226:[1,1601,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1602,"Marionette:GetContext"] +<< 32:[1,1602,null,{"value":"chrome"}] +>> 52:[0,1603,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1603,null,{"value":null}] +>> 32:[0,1604,"Marionette:GetContext"] +<< 33:[1,1604,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1685610972,"childCount":5}}] +>> 32:[0,1607,"Marionette:GetContext"] +<< 32:[1,1607,null,{"value":"chrome"}] +>> 52:[0,1608,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1608,null,{"value":null}] +>> 32:[0,1609,"Marionette:GetContext"] +<< 33:[1,1609,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1612,"Marionette:GetContext"] +<< 32:[1,1612,null,{"value":"chrome"}] +>> 52:[0,1613,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1613,null,{"value":null}] +>> 32:[0,1614,"Marionette:GetContext"] +<< 33:[1,1614,null,{"value":"content"}] +>> 51:[0,1615,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1615,null,{"value":null}] +>> 2277:[0,1616,"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,1616,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1617,"Marionette:GetContext"] +<< 32:[1,1617,null,{"value":"chrome"}] +>> 52:[0,1618,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1618,null,{"value":null}] +>> 32:[0,1619,"Marionette:GetContext"] +<< 33:[1,1619,null,{"value":"content"}] +>> 51:[0,1620,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1620,null,{"value":null}] +>> 2277:[0,1621,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1621,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1622,"Marionette:GetContext"] +<< 32:[1,1622,null,{"value":"chrome"}] +>> 52:[0,1623,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1623,null,{"value":null}] +>> 32:[0,1624,"Marionette:GetContext"] +<< 33:[1,1624,null,{"value":"content"}] +>> 51:[0,1625,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1625,null,{"value":null}] +>> 832:[0,1626,"WebDriver:ExecuteScript",{"args":["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]); "}] +<< 335:[1,1626,null,{"value":[{"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,1627,"Marionette:GetContext"] +<< 32:[1,1627,null,{"value":"chrome"}] +>> 51:[0,1628,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1628,null,{"value":null}] +>> 2277:[0,1629,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1629,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1630,"Marionette:GetContext"] +<< 32:[1,1630,null,{"value":"chrome"}] +>> 51:[0,1631,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1631,null,{"value":null}] +>> 32:[0,1632,"Marionette:GetContext"] +<< 32:[1,1632,null,{"value":"chrome"}] +>> 52:[0,1633,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1633,null,{"value":null}] +>> 32:[0,1634,"Marionette:GetContext"] +<< 33:[1,1634,null,{"value":"content"}] +>> 51:[0,1635,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1635,null,{"value":null}] +>> 2277:[0,1636,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1636,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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,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"}}] +>> 32:[0,1637,"Marionette:GetContext"] +<< 32:[1,1637,null,{"value":"chrome"}] +>> 52:[0,1638,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1638,null,{"value":null}] +>> 32:[0,1639,"Marionette:GetContext"] +<< 33:[1,1639,null,{"value":"content"}] +>> 51:[0,1640,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1640,null,{"value":null}] +>> 846:[0,1641,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 353:[1,1641,null,{"value":[{"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"}]}] +>> 32:[0,1642,"Marionette:GetContext"] +<< 32:[1,1642,null,{"value":"chrome"}] +>> 51:[0,1643,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1643,null,{"value":null}] +>> 2277:[0,1644,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1644,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1645,"Marionette:GetContext"] +<< 32:[1,1645,null,{"value":"chrome"}] +>> 51:[0,1646,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1646,null,{"value":null}] +>> 32:[0,1647,"Marionette:GetContext"] +<< 32:[1,1647,null,{"value":"chrome"}] +>> 52:[0,1648,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1648,null,{"value":null}] +>> 32:[0,1649,"Marionette:GetContext"] +<< 33:[1,1649,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1652,"Marionette:GetContext"] +<< 32:[1,1652,null,{"value":"chrome"}] +>> 52:[0,1653,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1653,null,{"value":null}] +>> 32:[0,1654,"Marionette:GetContext"] +<< 33:[1,1654,null,{"value":"content"}] +>> 51:[0,1655,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1655,null,{"value":null}] +>> 2277:[0,1656,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 177:[1,1656,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1657,"Marionette:GetContext"] +<< 32:[1,1657,null,{"value":"chrome"}] +>> 52:[0,1658,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1658,null,{"value":null}] +>> 32:[0,1659,"Marionette:GetContext"] +<< 33:[1,1659,null,{"value":"content"}] +>> 51:[0,1660,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1660,null,{"value":null}] +>> 2277:[0,1661,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1661,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1662,"Marionette:GetContext"] +<< 32:[1,1662,null,{"value":"chrome"}] +>> 52:[0,1663,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1663,null,{"value":null}] +>> 32:[0,1664,"Marionette:GetContext"] +<< 33:[1,1664,null,{"value":"content"}] +>> 51:[0,1665,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1665,null,{"value":null}] +>> 848:[0,1666,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 26:[1,1666,null,{"value":[]}] +>> 32:[0,1667,"Marionette:GetContext"] +<< 32:[1,1667,null,{"value":"chrome"}] +>> 52:[0,1668,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1668,null,{"value":null}] +>> 32:[0,1669,"Marionette:GetContext"] +<< 33:[1,1669,null,{"value":"content"}] +>> 51:[0,1670,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1670,null,{"value":null}] +>> 4500:[0,1671,"WebDriver:ExecuteScript",{"args":[{"dateAdded":1685670771,"guid":"bZbedzEdrOnQ","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":"eZlh-ztIYBne","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; "}] +<< 278:[1,1671,null,{"value":{"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"}}] +>> 32:[0,1672,"Marionette:GetContext"] +<< 32:[1,1672,null,{"value":"chrome"}] +>> 52:[0,1673,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1673,null,{"value":null}] +>> 32:[0,1674,"Marionette:GetContext"] +<< 33:[1,1674,null,{"value":"content"}] +>> 51:[0,1675,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1675,null,{"value":null}] +>> 2277:[0,1676,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 154:[1,1676,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1677,"Marionette:GetContext"] +<< 32:[1,1677,null,{"value":"chrome"}] +>> 52:[0,1678,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1678,null,{"value":null}] +>> 32:[0,1679,"Marionette:GetContext"] +<< 33:[1,1679,null,{"value":"content"}] +>> 51:[0,1680,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1680,null,{"value":null}] +>> 2277:[0,1681,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1681,null,{"value":{"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":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"}}] +>> 32:[0,1682,"Marionette:GetContext"] +<< 32:[1,1682,null,{"value":"chrome"}] +>> 52:[0,1683,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1683,null,{"value":null}] +>> 32:[0,1684,"Marionette:GetContext"] +<< 33:[1,1684,null,{"value":"content"}] +>> 51:[0,1685,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1685,null,{"value":null}] +>> 836:[0,1686,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 376:[1,1686,null,{"value":[{"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"}]}] +>> 32:[0,1687,"Marionette:GetContext"] +<< 32:[1,1687,null,{"value":"chrome"}] +>> 51:[0,1688,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1688,null,{"value":null}] +>> 2277:[0,1689,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1689,null,{"value":{"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":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"}}] +>> 32:[0,1690,"Marionette:GetContext"] +<< 32:[1,1690,null,{"value":"chrome"}] +>> 51:[0,1691,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1691,null,{"value":null}] +>> 32:[0,1692,"Marionette:GetContext"] +<< 32:[1,1692,null,{"value":"chrome"}] +>> 52:[0,1693,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1693,null,{"value":null}] +>> 32:[0,1694,"Marionette:GetContext"] +<< 33:[1,1694,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1697,"Marionette:GetContext"] +<< 32:[1,1697,null,{"value":"chrome"}] +>> 52:[0,1698,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1698,null,{"value":null}] +>> 32:[0,1699,"Marionette:GetContext"] +<< 33:[1,1699,null,{"value":"content"}] +>> 51:[0,1700,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1700,null,{"value":null}] +>> 2277:[0,1701,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1701,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1702,"Marionette:GetContext"] +<< 32:[1,1702,null,{"value":"chrome"}] +>> 52:[0,1703,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1703,null,{"value":null}] +>> 32:[0,1704,"Marionette:GetContext"] +<< 33:[1,1704,null,{"value":"content"}] +>> 51:[0,1705,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1705,null,{"value":null}] +>> 822:[0,1706,"WebDriver:ExecuteScript",{"args":["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); return lazy.Bookmarks.search(arguments[0]); "}] +<< 266:[1,1706,null,{"value":[{"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"}]}] +>> 32:[0,1707,"Marionette:GetContext"] +<< 32:[1,1707,null,{"value":"chrome"}] +>> 51:[0,1708,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1708,null,{"value":null}] +>> 2277:[0,1709,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1709,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1710,"Marionette:GetContext"] +<< 32:[1,1710,null,{"value":"chrome"}] +>> 51:[0,1711,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1711,null,{"value":null}] +>> 32:[0,1712,"Marionette:GetContext"] +<< 32:[1,1712,null,{"value":"chrome"}] +>> 52:[0,1713,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1713,null,{"value":null}] +>> 32:[0,1714,"Marionette:GetContext"] +<< 33:[1,1714,null,{"value":"content"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1717,"Marionette:GetContext"] +<< 32:[1,1717,null,{"value":"chrome"}] +>> 52:[0,1718,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1718,null,{"value":null}] +>> 32:[0,1719,"Marionette:GetContext"] +<< 33:[1,1719,null,{"value":"content"}] +>> 51:[0,1720,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1720,null,{"value":null}] +>> 2277:[0,1721,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1721,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1722,"Marionette:GetContext"] +<< 32:[1,1722,null,{"value":"chrome"}] +>> 52:[0,1723,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1723,null,{"value":null}] +>> 32:[0,1724,"Marionette:GetContext"] +<< 33:[1,1724,null,{"value":"content"}] +>> 51:[0,1725,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1725,null,{"value":null}] +>> 810:[0,1726,"WebDriver:ExecuteScript",{"args":["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]); "}] +<< 250:[1,1726,null,{"value":[{"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/"}]}] +>> 32:[0,1727,"Marionette:GetContext"] +<< 32:[1,1727,null,{"value":"chrome"}] +>> 51:[0,1728,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1728,null,{"value":null}] +>> 2277:[0,1729,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1729,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1730,"Marionette:GetContext"] +<< 32:[1,1730,null,{"value":"chrome"}] +>> 51:[0,1731,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1731,null,{"value":null}] +>> 32:[0,1732,"Marionette:GetContext"] +<< 32:[1,1732,null,{"value":"chrome"}] +>> 52:[0,1733,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1733,null,{"value":null}] +>> 32:[0,1734,"Marionette:GetContext"] +<< 33:[1,1734,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:24.184Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1740,"Marionette:GetContext"] +<< 32:[1,1740,null,{"value":"chrome"}] +>> 51:[0,1741,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1741,null,{"value":null}] +>> 32:[0,1742,"Marionette:GetContext"] +<< 32:[1,1742,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1745,"Marionette:GetContext"] +<< 32:[1,1745,null,{"value":"chrome"}] +>> 51:[0,1746,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1746,null,{"value":null}] +>> 32:[0,1747,"Marionette:GetContext"] +<< 32:[1,1747,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506424,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1750,"Marionette:GetContext"] +<< 32:[1,1750,null,{"value":"chrome"}] +>> 51:[0,1751,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1751,null,{"value":null}] +>> 32:[0,1752,"Marionette:GetContext"] +<< 32:[1,1752,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1755,"Marionette:GetContext"] +<< 32:[1,1755,null,{"value":"chrome"}] +>> 51:[0,1756,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1756,null,{"value":null}] +>> 32:[0,1757,"Marionette:GetContext"] +<< 32:[1,1757,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 32:[0,1760,"Marionette:GetContext"] +<< 32:[1,1760,null,{"value":"chrome"}] +>> 51:[0,1761,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1761,null,{"value":null}] +>> 32:[0,1762,"Marionette:GetContext"] +<< 32:[1,1762,null,{"value":"chrome"}] +>> 51:[0,1763,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1763,null,{"value":null}] +>> 2277:[0,1764,"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,1764,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1765,"Marionette:GetContext"] +<< 32:[1,1765,null,{"value":"chrome"}] +>> 51:[0,1766,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1766,null,{"value":null}] +>> 32:[0,1767,"Marionette:GetContext"] +<< 32:[1,1767,null,{"value":"chrome"}] +>> 51:[0,1768,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1768,null,{"value":null}] +>> 2277:[0,1769,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1769,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1770,"Marionette:GetContext"] +<< 32:[1,1770,null,{"value":"chrome"}] +>> 51:[0,1771,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1771,null,{"value":null}] +>> 32:[0,1772,"Marionette:GetContext"] +<< 32:[1,1772,null,{"value":"chrome"}] +>> 51:[0,1773,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1773,null,{"value":null}] +>> 2277:[0,1774,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 177:[1,1774,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1775,"Marionette:GetContext"] +<< 32:[1,1775,null,{"value":"chrome"}] +>> 51:[0,1776,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1776,null,{"value":null}] +>> 32:[0,1777,"Marionette:GetContext"] +<< 32:[1,1777,null,{"value":"chrome"}] +>> 51:[0,1778,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1778,null,{"value":null}] +>> 2277:[0,1779,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1779,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1780,"Marionette:GetContext"] +<< 32:[1,1780,null,{"value":"chrome"}] +>> 51:[0,1781,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1781,null,{"value":null}] +>> 32:[0,1782,"Marionette:GetContext"] +<< 32:[1,1782,null,{"value":"chrome"}] +>> 51:[0,1783,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1783,null,{"value":null}] +>> 2277:[0,1784,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 154:[1,1784,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1785,"Marionette:GetContext"] +<< 32:[1,1785,null,{"value":"chrome"}] +>> 51:[0,1786,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1786,null,{"value":null}] +>> 32:[0,1787,"Marionette:GetContext"] +<< 32:[1,1787,null,{"value":"chrome"}] +>> 51:[0,1788,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1788,null,{"value":null}] +>> 2277:[0,1789,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1789,null,{"value":{"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":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"}}] +>> 32:[0,1790,"Marionette:GetContext"] +<< 32:[1,1790,null,{"value":"chrome"}] +>> 51:[0,1791,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1791,null,{"value":null}] +>> 32:[0,1792,"Marionette:GetContext"] +<< 32:[1,1792,null,{"value":"chrome"}] +>> 51:[0,1793,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1793,null,{"value":null}] +>> 2277:[0,1794,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1794,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1795,"Marionette:GetContext"] +<< 32:[1,1795,null,{"value":"chrome"}] +>> 51:[0,1796,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1796,null,{"value":null}] +>> 32:[0,1797,"Marionette:GetContext"] +<< 32:[1,1797,null,{"value":"chrome"}] +>> 51:[0,1798,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1798,null,{"value":null}] +>> 2277:[0,1799,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1799,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1800,"Marionette:GetContext"] +<< 32:[1,1800,null,{"value":"chrome"}] +>> 51:[0,1801,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1801,null,{"value":null}] +>> 32:[0,1802,"Marionette:GetContext"] +<< 32:[1,1802,null,{"value":"chrome"}] +>> 51:[0,1803,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1803,null,{"value":null}] +>> 2277:[0,1804,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1804,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1805,"Marionette:GetContext"] +<< 32:[1,1805,null,{"value":"chrome"}] +>> 51:[0,1806,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1806,null,{"value":null}] +>> 32:[0,1807,"Marionette:GetContext"] +<< 32:[1,1807,null,{"value":"chrome"}] +>> 52:[0,1808,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1808,null,{"value":null}] +>> 32:[0,1809,"Marionette:GetContext"] +<< 33:[1,1809,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-01T09:16:12.000Z","parentGuid":"root________"},{"guid":"toolbar_____","index":1,"type":2,"title":"toolbar","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:25:42.000Z","parentGuid":"root________"},{"guid":"tags________","index":2,"type":2,"title":"tags","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2026-11-12T18:00:24.184Z","parentGuid":"root________"},{"guid":"unfiled_____","index":3,"type":2,"title":"unfiled","dateAdded":"2026-11-12T18:00:18.875Z","lastModified":"2023-06-10T02:28:01.000Z","parentGuid":"root________"},{"guid":"mobile______","index":4,"type":2,"title":"mobile","dateAdded":"2026-11-12T18:00:18.878Z","lastModified":"2026-11-12T18:00:18.985Z","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":1794506418,"lastModified":1685610972,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1815,"Marionette:GetContext"] +<< 32:[1,1815,null,{"value":"chrome"}] +>> 51:[0,1816,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1816,null,{"value":null}] +>> 32:[0,1817,"Marionette:GetContext"] +<< 32:[1,1817,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686363942,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1820,"Marionette:GetContext"] +<< 32:[1,1820,null,{"value":"chrome"}] +>> 51:[0,1821,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1821,null,{"value":null}] +>> 32:[0,1822,"Marionette:GetContext"] +<< 32:[1,1822,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506424,"parentGuid":"root________","childCount":4}}] +>> 32:[0,1825,"Marionette:GetContext"] +<< 32:[1,1825,null,{"value":"chrome"}] +>> 51:[0,1826,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1826,null,{"value":null}] +>> 32:[0,1827,"Marionette:GetContext"] +<< 32:[1,1827,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1686364081,"parentGuid":"root________","childCount":1}}] +>> 32:[0,1830,"Marionette:GetContext"] +<< 32:[1,1830,null,{"value":"chrome"}] +>> 51:[0,1831,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1831,null,{"value":null}] +>> 32:[0,1832,"Marionette:GetContext"] +<< 32:[1,1832,null,{"value":"chrome"}] +>> 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":1794506418,"lastModified":1794506418,"parentGuid":"root________","childCount":0}}] +>> 32:[0,1835,"Marionette:GetContext"] +<< 32:[1,1835,null,{"value":"chrome"}] +>> 51:[0,1836,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1836,null,{"value":null}] +>> 32:[0,1837,"Marionette:GetContext"] +<< 32:[1,1837,null,{"value":"chrome"}] +>> 51:[0,1838,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1838,null,{"value":null}] +>> 2277:[0,1839,"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,1839,null,{"value":{"guid":"ExAzkxs5efkR","index":0,"type":2,"title":"CPAN","dateAdded":1685611344,"lastModified":1685610972,"parentGuid":"menu________","childCount":2}}] +>> 32:[0,1840,"Marionette:GetContext"] +<< 32:[1,1840,null,{"value":"chrome"}] +>> 51:[0,1841,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1841,null,{"value":null}] +>> 32:[0,1842,"Marionette:GetContext"] +<< 32:[1,1842,null,{"value":"chrome"}] +>> 51:[0,1843,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1843,null,{"value":null}] +>> 2277:[0,1844,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2717:[1,1844,null,{"value":{"guid":"XiZLcg8n_B4A","index":0,"type":1,"title":"Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685672252,"lastModified":1685672252,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1845,"Marionette:GetContext"] +<< 32:[1,1845,null,{"value":"chrome"}] +>> 51:[0,1846,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1846,null,{"value":null}] +>> 32:[0,1847,"Marionette:GetContext"] +<< 32:[1,1847,null,{"value":"chrome"}] +>> 51:[0,1848,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1848,null,{"value":null}] +>> 2277:[0,1849,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 177:[1,1849,null,{"value":{"guid":"eZlh-ztIYBne","index":1,"type":2,"title":"Searches","dateAdded":1685670822,"lastModified":1685670771,"parentGuid":"menu________","childCount":1}}] +>> 32:[0,1850,"Marionette:GetContext"] +<< 32:[1,1850,null,{"value":"chrome"}] +>> 51:[0,1851,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1851,null,{"value":null}] +>> 32:[0,1852,"Marionette:GetContext"] +<< 32:[1,1852,null,{"value":"chrome"}] +>> 51:[0,1853,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1853,null,{"value":null}] +>> 2277:[0,1854,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1650:[1,1854,null,{"value":{"guid":"bZbedzEdrOnQ","index":0,"type":1,"title":"perl 🐫 at DuckDuckGo","dateAdded":1685670771,"lastModified":1685670772,"parentGuid":"eZlh-ztIYBne","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="}}] +>> 32:[0,1855,"Marionette:GetContext"] +<< 32:[1,1855,null,{"value":"chrome"}] +>> 51:[0,1856,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1856,null,{"value":null}] +>> 32:[0,1857,"Marionette:GetContext"] +<< 32:[1,1857,null,{"value":"chrome"}] +>> 51:[0,1858,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1858,null,{"value":null}] +>> 2277:[0,1859,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 154:[1,1859,null,{"value":{"guid":"zCZX0_5lBXTS","index":2,"type":3,"title":"","dateAdded":1685672418,"lastModified":1685672418,"parentGuid":"menu________"}}] +>> 32:[0,1860,"Marionette:GetContext"] +<< 32:[1,1860,null,{"value":"chrome"}] +>> 51:[0,1861,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1861,null,{"value":null}] +>> 32:[0,1862,"Marionette:GetContext"] +<< 32:[1,1862,null,{"value":"chrome"}] +>> 51:[0,1863,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1863,null,{"value":null}] +>> 2277:[0,1864,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 1447:[1,1864,null,{"value":{"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":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"}}] +>> 32:[0,1865,"Marionette:GetContext"] +<< 32:[1,1865,null,{"value":"chrome"}] +>> 51:[0,1866,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1866,null,{"value":null}] +>> 32:[0,1867,"Marionette:GetContext"] +<< 32:[1,1867,null,{"value":"chrome"}] +>> 51:[0,1868,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1868,null,{"value":null}] +>> 2277:[0,1869,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 242:[1,1869,null,{"value":{"guid":"UjOiVVvuVdng","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":[]}}] +>> 32:[0,1870,"Marionette:GetContext"] +<< 32:[1,1870,null,{"value":"chrome"}] +>> 51:[0,1871,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1871,null,{"value":null}] +>> 32:[0,1872,"Marionette:GetContext"] +<< 32:[1,1872,null,{"value":"chrome"}] +>> 51:[0,1873,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1873,null,{"value":null}] +>> 2277:[0,1874,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 226:[1,1874,null,{"value":{"guid":"wiTkT9Zqb99b","index":0,"type":1,"title":"PerlMonks - The Monastery Gates","dateAdded":1686364081,"lastModified":1686364095,"parentGuid":"unfiled_____","url":"https://perlmonks.org/","tags":[]}}] +>> 32:[0,1875,"Marionette:GetContext"] +<< 32:[1,1875,null,{"value":"chrome"}] +>> 51:[0,1876,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1876,null,{"value":null}] +>> 32:[0,1877,"Marionette:GetContext"] +<< 32:[1,1877,null,{"value":"chrome"}] +>> 51:[0,1878,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1878,null,{"value":null}] +>> 2277:[0,1879,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 2685:[1,1879,null,{"value":{"guid":"utcxPgIOG05d","index":1,"type":1,"title":"Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org","dateAdded":1685610972,"lastModified":1685610973,"parentGuid":"ExAzkxs5efkR","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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"}}] +>> 32:[0,1880,"Marionette:GetContext"] +<< 32:[1,1880,null,{"value":"chrome"}] +>> 51:[0,1881,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1881,null,{"value":null}] +>> 32:[0,1882,"Marionette:GetContext"] +<< 32:[1,1882,null,{"value":"chrome"}] +>> 52:[0,1883,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1883,null,{"value":null}] +>> 32:[0,1884,"Marionette:GetContext"] +<< 33:[1,1884,null,{"value":"content"}] +>> 51:[0,1885,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1885,null,{"value":null}] +>> 800:[0,1886,"WebDriver:ExecuteScript",{"args":["utcxPgIOG05d"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1886,null,{"value":null}] +>> 32:[0,1887,"Marionette:GetContext"] +<< 32:[1,1887,null,{"value":"chrome"}] +>> 52:[0,1888,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1888,null,{"value":null}] +>> 32:[0,1889,"Marionette:GetContext"] +<< 33:[1,1889,null,{"value":"content"}] +>> 51:[0,1890,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1890,null,{"value":null}] +>> 800:[0,1891,"WebDriver:ExecuteScript",{"args":["wiTkT9Zqb99b"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1891,null,{"value":null}] +>> 32:[0,1892,"Marionette:GetContext"] +<< 32:[1,1892,null,{"value":"chrome"}] +>> 52:[0,1893,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1893,null,{"value":null}] +>> 32:[0,1894,"Marionette:GetContext"] +<< 33:[1,1894,null,{"value":"content"}] +>> 51:[0,1895,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1895,null,{"value":null}] +>> 800:[0,1896,"WebDriver:ExecuteScript",{"args":["UjOiVVvuVdng"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1896,null,{"value":null}] +>> 32:[0,1897,"Marionette:GetContext"] +<< 32:[1,1897,null,{"value":"chrome"}] +>> 52:[0,1898,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1898,null,{"value":null}] +>> 32:[0,1899,"Marionette:GetContext"] +<< 33:[1,1899,null,{"value":"content"}] +>> 51:[0,1900,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1900,null,{"value":null}] +>> 800:[0,1901,"WebDriver:ExecuteScript",{"args":["JTBNJdLPdYhk"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1901,null,{"value":null}] +>> 32:[0,1902,"Marionette:GetContext"] +<< 32:[1,1902,null,{"value":"chrome"}] +>> 52:[0,1903,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1903,null,{"value":null}] +>> 32:[0,1904,"Marionette:GetContext"] +<< 33:[1,1904,null,{"value":"content"}] +>> 51:[0,1905,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1905,null,{"value":null}] +>> 800:[0,1906,"WebDriver:ExecuteScript",{"args":["zCZX0_5lBXTS"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1906,null,{"value":null}] +>> 32:[0,1907,"Marionette:GetContext"] +<< 32:[1,1907,null,{"value":"chrome"}] +>> 52:[0,1908,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1908,null,{"value":null}] +>> 32:[0,1909,"Marionette:GetContext"] +<< 33:[1,1909,null,{"value":"content"}] +>> 51:[0,1910,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1910,null,{"value":null}] +>> 800:[0,1911,"WebDriver:ExecuteScript",{"args":["bZbedzEdrOnQ"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1911,null,{"value":null}] +>> 32:[0,1912,"Marionette:GetContext"] +<< 32:[1,1912,null,{"value":"chrome"}] +>> 52:[0,1913,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1913,null,{"value":null}] +>> 32:[0,1914,"Marionette:GetContext"] +<< 33:[1,1914,null,{"value":"content"}] +>> 51:[0,1915,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1915,null,{"value":null}] +>> 800:[0,1916,"WebDriver:ExecuteScript",{"args":["eZlh-ztIYBne"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1916,null,{"value":null}] +>> 32:[0,1917,"Marionette:GetContext"] +<< 32:[1,1917,null,{"value":"chrome"}] +>> 52:[0,1918,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1918,null,{"value":null}] +>> 32:[0,1919,"Marionette:GetContext"] +<< 33:[1,1919,null,{"value":"content"}] +>> 51:[0,1920,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1920,null,{"value":null}] +>> 800:[0,1921,"WebDriver:ExecuteScript",{"args":["XiZLcg8n_B4A"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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]); "}] +<< 28:[1,1921,null,{"value":null}] +>> 32:[0,1922,"Marionette:GetContext"] +<< 32:[1,1922,null,{"value":"chrome"}] +>> 52:[0,1923,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1923,null,{"value":null}] +>> 32:[0,1924,"Marionette:GetContext"] +<< 33:[1,1924,null,{"value":"content"}] +>> 51:[0,1925,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1925,null,{"value":null}] +>> 800:[0,1926,"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 lazy.Bookmarks.remove(arguments[0]); "}] +<< 28:[1,1926,null,{"value":null}] +>> 32:[0,1927,"Marionette:GetContext"] +<< 32:[1,1927,null,{"value":"chrome"}] +>> 52:[0,1928,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1928,null,{"value":null}] +>> 32:[0,1929,"Marionette:GetContext"] +<< 33:[1,1929,null,{"value":"content"}] +>> 51:[0,1930,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1930,null,{"value":null}] +>> 701:[0,1931,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize"],"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; "}] +<< 44:[1,1931,null,{"value":[16777216,"integer"]}] +>> 32:[0,1932,"Marionette:GetContext"] +<< 32:[1,1932,null,{"value":"chrome"}] +>> 52:[0,1933,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1933,null,{"value":null}] +>> 32:[0,1934,"Marionette:GetContext"] +<< 33:[1,1934,null,{"value":"content"}] +>> 51:[0,1935,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1935,null,{"value":null}] +>> 843:[0,1936,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize",4321],"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,1936,null,{"value":null}] +>> 32:[0,1937,"Marionette:GetContext"] +<< 32:[1,1937,null,{"value":"chrome"}] +>> 52:[0,1938,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1938,null,{"value":null}] +>> 32:[0,1939,"Marionette:GetContext"] +<< 33:[1,1939,null,{"value":"content"}] +>> 51:[0,1940,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1940,null,{"value":null}] +>> 701:[0,1941,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize"],"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; "}] +<< 40:[1,1941,null,{"value":[4321,"integer"]}] +>> 32:[0,1942,"Marionette:GetContext"] +<< 32:[1,1942,null,{"value":"chrome"}] +>> 52:[0,1943,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1943,null,{"value":null}] +>> 32:[0,1944,"Marionette:GetContext"] +<< 33:[1,1944,null,{"value":"content"}] +>> 51:[0,1945,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1945,null,{"value":null}] +>> 847:[0,1946,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize",16777216],"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,1946,null,{"value":null}] +>> 32:[0,1947,"Marionette:GetContext"] +<< 32:[1,1947,null,{"value":"chrome"}] +>> 52:[0,1948,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1948,null,{"value":null}] +>> 32:[0,1949,"Marionette:GetContext"] +<< 33:[1,1949,null,{"value":"content"}] +>> 51:[0,1950,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1950,null,{"value":null}] +>> 701:[0,1951,"WebDriver:ExecuteScript",{"args":["browser.history.maxStateObjectSize"],"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; "}] +<< 44:[1,1951,null,{"value":[16777216,"integer"]}] +>> 32:[0,1952,"Marionette:GetContext"] +<< 32:[1,1952,null,{"value":"chrome"}] +>> 52:[0,1953,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1953,null,{"value":null}] +>> 32:[0,1954,"Marionette:GetContext"] +<< 33:[1,1954,null,{"value":"content"}] +>> 51:[0,1955,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1955,null,{"value":null}] +>> 700:[0,1956,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"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; "}] +<< 41:[1,1956,null,{"value":[false,"boolean"]}] +>> 32:[0,1957,"Marionette:GetContext"] +<< 32:[1,1957,null,{"value":"chrome"}] +>> 52:[0,1958,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1958,null,{"value":null}] +>> 32:[0,1959,"Marionette:GetContext"] +<< 33:[1,1959,null,{"value":"content"}] +>> 51:[0,1960,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1960,null,{"value":null}] +>> 842:[0,1961,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors",true],"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,1961,null,{"value":null}] +>> 32:[0,1962,"Marionette:GetContext"] +<< 32:[1,1962,null,{"value":"chrome"}] +>> 52:[0,1963,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1963,null,{"value":null}] +>> 32:[0,1964,"Marionette:GetContext"] +<< 33:[1,1964,null,{"value":"content"}] +>> 51:[0,1965,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1965,null,{"value":null}] +>> 700:[0,1966,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"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; "}] +<< 40:[1,1966,null,{"value":[true,"boolean"]}] +>> 32:[0,1967,"Marionette:GetContext"] +<< 32:[1,1967,null,{"value":"chrome"}] +>> 52:[0,1968,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1968,null,{"value":null}] +>> 32:[0,1969,"Marionette:GetContext"] +<< 33:[1,1969,null,{"value":"content"}] +>> 51:[0,1970,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1970,null,{"value":null}] +>> 843:[0,1971,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors",false],"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,1971,null,{"value":null}] +>> 32:[0,1972,"Marionette:GetContext"] +<< 32:[1,1972,null,{"value":"chrome"}] +>> 52:[0,1973,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1973,null,{"value":null}] +>> 32:[0,1974,"Marionette:GetContext"] +<< 33:[1,1974,null,{"value":"content"}] +>> 51:[0,1975,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1975,null,{"value":null}] +>> 700:[0,1976,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"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; "}] +<< 41:[1,1976,null,{"value":[false,"boolean"]}] +>> 32:[0,1977,"Marionette:GetContext"] +<< 32:[1,1977,null,{"value":"chrome"}] +>> 52:[0,1978,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1978,null,{"value":null}] +>> 32:[0,1979,"Marionette:GetContext"] +<< 33:[1,1979,null,{"value":"content"}] +>> 51:[0,1980,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1980,null,{"value":null}] +>> 286:[0,1981,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 28:[1,1981,null,{"value":null}] +>> 32:[0,1982,"Marionette:GetContext"] +<< 32:[1,1982,null,{"value":"chrome"}] +>> 52:[0,1983,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1983,null,{"value":null}] +>> 32:[0,1984,"Marionette:GetContext"] +<< 33:[1,1984,null,{"value":"content"}] +>> 51:[0,1985,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1985,null,{"value":null}] +>> 700:[0,1986,"WebDriver:ExecuteScript",{"args":["browser.display.use_system_colors"],"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; "}] +<< 41:[1,1986,null,{"value":[false,"boolean"]}] +>> 32:[0,1987,"Marionette:GetContext"] +<< 32:[1,1987,null,{"value":"chrome"}] +>> 52:[0,1988,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1988,null,{"value":null}] +>> 32:[0,1989,"Marionette:GetContext"] +<< 33:[1,1989,null,{"value":"content"}] +>> 51:[0,1990,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,1990,null,{"value":null}] +>> 686:[0,1991,"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; "}] +<< 30:[1,1991,null,{"value":[null]}] +>> 32:[0,1992,"Marionette:GetContext"] +<< 32:[1,1992,null,{"value":"chrome"}] +>> 52:[0,1993,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1993,null,{"value":null}] +>> 32:[0,1994,"Marionette:GetContext"] +<< 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:1945606"],"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"}] +>> 52:[0,1998,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,1998,null,{"value":null}] +>> 32:[0,1999,"Marionette:GetContext"] +<< 33:[1,1999,null,{"value":"content"}] +>> 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:1945606","string"]}] +>> 32:[0,2002,"Marionette:GetContext"] +<< 32:[1,2002,null,{"value":"chrome"}] +>> 52:[0,2003,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,2003,null,{"value":null}] +>> 32:[0,2004,"Marionette:GetContext"] +<< 33:[1,2004,null,{"value":"content"}] +>> 51:[0,2005,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,2005,null,{"value":null}] +>> 687:[0,2006,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"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; "}] +<< 44:[1,2006,null,{"value":["#EE0000","string"]}] +>> 32:[0,2007,"Marionette:GetContext"] +<< 32:[1,2007,null,{"value":"chrome"}] +>> 52:[0,2008,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,2008,null,{"value":null}] +>> 32:[0,2009,"Marionette:GetContext"] +<< 33:[1,2009,null,{"value":"content"}] +>> 51:[0,2010,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,2010,null,{"value":null}] +>> 687:[0,2011,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"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; "}] +<< 44:[1,2011,null,{"value":["#EE0000","string"]}] +>> 32:[0,2012,"Marionette:GetContext"] +<< 32:[1,2012,null,{"value":"chrome"}] +>> 52:[0,2013,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,2013,null,{"value":null}] +>> 32:[0,2014,"Marionette:GetContext"] +<< 33:[1,2014,null,{"value":"content"}] +>> 51:[0,2015,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,2015,null,{"value":null}] +>> 834:[0,2016,"WebDriver:ExecuteScript",{"args":["browser.active_color","#FFFFFF"],"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,2016,null,{"value":null}] +>> 32:[0,2017,"Marionette:GetContext"] +<< 32:[1,2017,null,{"value":"chrome"}] +>> 52:[0,2018,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,2018,null,{"value":null}] +>> 32:[0,2019,"Marionette:GetContext"] +<< 33:[1,2019,null,{"value":"content"}] +>> 51:[0,2020,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,2020,null,{"value":null}] +>> 687:[0,2021,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"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; "}] +<< 44:[1,2021,null,{"value":["#FFFFFF","string"]}] +>> 32:[0,2022,"Marionette:GetContext"] +<< 32:[1,2022,null,{"value":"chrome"}] +>> 52:[0,2023,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,2023,null,{"value":null}] +>> 32:[0,2024,"Marionette:GetContext"] +<< 33:[1,2024,null,{"value":"content"}] +>> 51:[0,2025,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,2025,null,{"value":null}] +>> 273:[0,2026,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"script":"let prefs = Components.classes[\"@mozilla.org/preferences-service;1\"].getService(Components.interfaces.nsIPrefService); let branch = prefs.getBranch(\"\"); branch.clearUserPref(arguments[0]); "}] +<< 28:[1,2026,null,{"value":null}] +>> 32:[0,2027,"Marionette:GetContext"] +<< 32:[1,2027,null,{"value":"chrome"}] +>> 52:[0,2028,"Marionette:SetContext",{"value":"content"}] +<< 28:[1,2028,null,{"value":null}] +>> 32:[0,2029,"Marionette:GetContext"] +<< 33:[1,2029,null,{"value":"content"}] +>> 51:[0,2030,"Marionette:SetContext",{"value":"chrome"}] +<< 28:[1,2030,null,{"value":null}] +>> 687:[0,2031,"WebDriver:ExecuteScript",{"args":["browser.active_color"],"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; "}] +<< 44:[1,2031,null,{"value":["#EE0000","string"]}] +>> 32:[0,2032,"Marionette:GetContext"] +<< 32:[1,2032,null,{"value":"chrome"}] +>> 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":1948578,"moz:profile":"/tmp/firefox_marionette_local_UNwxHPCbaU0/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 35 seconds at t/01-marionette.t line 2504 # Starting new firefox for testing custom headers -# Testing has been running for 95 seconds at t/01-marionette.t line 2887 +# Testing has been running for 35 seconds at t/01-marionette.t line 2887 +** firefox --version +** firefox -marionette -remote-allow-system-access -headless -profile /tmp/firefox_marionette_local_vpHbOEFvPSk/profile --no-remote --new-instance --devtools +[1949520] 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":"2b55c78d-43db-4770-ad25-7160eeb874e8","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":1949520,"moz:profile":"/tmp/firefox_marionette_local_vpHbOEFvPSk/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_vpHbOEFvPSk/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":"dg8P8Fj8xijyIyqd8YGN02RUe10OQHvlANNqbaxUBJk"}] +>> 29:[0,4,"Marionette:GetContext"] +<< 30:[1,4,null,{"value":"content"}] +>> 48:[0,5,"Marionette:SetContext",{"value":"chrome"}] +<< 25:[1,5,null,{"value":null}] +>> 814:[0,6,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"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); } } "}] +<< 25:[1,6,null,{"value":null}] +>> 29:[0,7,"Marionette:GetContext"] +<< 29:[1,7,null,{"value":"chrome"}] +>> 49:[0,8,"Marionette:SetContext",{"value":"content"}] +<< 25:[1,8,null,{"value":null}] +>> 29:[0,9,"Marionette:GetContext"] +<< 30:[1,9,null,{"value":"content"}] +>> 49:[0,10,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,10,null,{"value":null}] +>> 828:[0,11,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"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,11,null,{"value":null}] +>> 30:[0,12,"Marionette:GetContext"] +<< 30:[1,12,null,{"value":"chrome"}] +>> 50:[0,13,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,13,null,{"value":null}] +>> 30:[0,14,"Marionette:GetContext"] +<< 31:[1,14,null,{"value":"content"}] +>> 49:[0,15,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,15,null,{"value":null}] +>> 833:[0,16,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"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,16,null,{"value":null}] +>> 30:[0,17,"Marionette:GetContext"] +<< 30:[1,17,null,{"value":"chrome"}] +>> 50:[0,18,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,18,null,{"value":null}] +>> 30:[0,19,"Marionette:GetContext"] +<< 31:[1,19,null,{"value":"content"}] +>> 49:[0,20,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,20,null,{"value":null}] +>> 824:[0,21,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"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,21,null,{"value":null}] +>> 30:[0,22,"Marionette:GetContext"] +<< 30:[1,22,null,{"value":"chrome"}] +>> 50:[0,23,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,23,null,{"value":null}] +>> 30:[0,24,"Marionette:GetContext"] +<< 31:[1,24,null,{"value":"content"}] +>> 49:[0,25,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,25,null,{"value":null}] +>> 822:[0,26,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"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,26,null,{"value":null}] +>> 30:[0,27,"Marionette:GetContext"] +<< 30:[1,27,null,{"value":"chrome"}] +>> 50:[0,28,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,28,null,{"value":null}] +>> 30:[0,29,"Marionette:GetContext"] +<< 31:[1,29,null,{"value":"content"}] +>> 49:[0,30,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,30,null,{"value":null}] +>> 828:[0,31,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"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,31,null,{"value":null}] +>> 30:[0,32,"Marionette:GetContext"] +<< 30:[1,32,null,{"value":"chrome"}] +>> 50:[0,33,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,33,null,{"value":null}] +>> 30:[0,34,"Marionette:GetContext"] +<< 31:[1,34,null,{"value":"content"}] +>> 49:[0,35,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,35,null,{"value":null}] +>> 830:[0,36,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"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,36,null,{"value":null}] +>> 30:[0,37,"Marionette:GetContext"] +<< 30:[1,37,null,{"value":"chrome"}] +>> 50:[0,38,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,38,null,{"value":null}] +>> 30:[0,39,"Marionette:GetContext"] +<< 31:[1,39,null,{"value":"content"}] +>> 49:[0,40,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,40,null,{"value":null}] +>> 817:[0,41,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"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,41,null,{"value":null}] +>> 30:[0,42,"Marionette:GetContext"] +<< 30:[1,42,null,{"value":"chrome"}] +>> 50:[0,43,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,43,null,{"value":null}] +>> 30:[0,44,"Marionette:GetContext"] +<< 31:[1,44,null,{"value":"content"}] +>> 49:[0,45,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,45,null,{"value":null}] +>> 827:[0,46,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"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,46,null,{"value":null}] +>> 30:[0,47,"Marionette:GetContext"] +<< 30:[1,47,null,{"value":"chrome"}] +>> 50:[0,48,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,48,null,{"value":null}] +>> 30:[0,49,"Marionette:GetContext"] +<< 31:[1,49,null,{"value":"content"}] +>> 49:[0,50,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,50,null,{"value":null}] +>> 808:[0,51,"WebDriver:ExecuteScript",{"args":["data:application/json,%7B%22ipVersion%22:6,%22ipAddress%22:%222001:8001:4ab3:d800:7215:c1fe:fc85:1329%22,%22latitude%22:-37.5,%22longitude%22:144.5,%22countryName%22:%22Australia%22,%22countryCode%22:%22AU%22,%22timeZone%22:%22+11:00%22,%22zipCode%22:%223000%22,%22cityName%22:%22Melbourne%22,%22regionName%22:%22Victoria%22,%22isProxy%22:false,%22continent%22:%22Oceania%22,%22continentCode%22:%22OC%22%7D"],"script":"return (async function(url) { let response = await fetch(url, { method: \"GET\", mode: \"cors\", headers: { \"Content-Type\": \"application/json\" }, redirect: \"follow\", referrerPolicy: \"no-referrer\"}); if (response.ok) { return await response.json(); } else { throw new Error(url + \" returned a \" + response.status); } })(arguments[0]); "}] +<< 314:[1,51,null,{"value":{"ipVersion":6,"ipAddress":"2001:8001:4ab3:d800:7215:c1fe:fc85:1329","latitude":-37.5,"longitude":144.5,"countryName":"Australia","countryCode":"AU","timeZone":"+11:00","zipCode":"3000","cityName":"Melbourne","regionName":"Victoria","isProxy":false,"continent":"Oceania","continentCode":"OC"}}] +>> 30:[0,52,"Marionette:GetContext"] +<< 30:[1,52,null,{"value":"chrome"}] +>> 50:[0,53,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,53,null,{"value":null}] +>> 30:[0,54,"Marionette:GetContext"] +<< 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); } } "}] +<< 26:[1,56,null,{"value":null}] +>> 30:[0,57,"Marionette:GetContext"] +<< 30:[1,57,null,{"value":"chrome"}] +>> 50:[0,58,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,58,null,{"value":null}] +>> 30:[0,59,"Marionette:GetContext"] +<< 31:[1,59,null,{"value":"content"}] +>> 49:[0,60,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,60,null,{"value":null}] +>> 883:[0,61,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","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); } } "}] +<< 26:[1,61,null,{"value":null}] +>> 30:[0,62,"Marionette:GetContext"] +<< 30:[1,62,null,{"value":"chrome"}] +>> 50:[0,63,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,63,null,{"value":null}] +>> 53:[0,2035,"Marionette:Quit",{"flags":["eAttemptQuit"]}] +<< 63:[1,2035,null,{"cause":"shutdown","forced":false,"in_app":true}] +>> 30:[0,64,"Marionette:GetContext"] +<< 31:[1,64,null,{"value":"content"}] +>> 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":"2026-11-12T18:00:34.054Z","lastModified":"2026-11-12T18:00:34.054Z","guid":"--kh4pmSX9Ui"}}] +>> 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"] +<< 31:[1,69,null,{"value":"content"}] +>> 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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-12T18:00:34.054Z","lastModified":"2026-11-12T18:00:34.054Z","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":["--kh4pmSX9Ui"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794506434,"lastModified":1794506434,"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"}] +<< 26:[1,76,null,{"value":null}] +>> 30:[0,77,"Marionette:GetContext"] +<< 30:[1,77,null,{"value":"chrome"}] +>> 50:[0,78,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,78,null,{"value":null}] +>> 30:[0,79,"Marionette:GetContext"] +<< 31:[1,79,null,{"value":"content"}] +>> 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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-12T18:00:34.054Z","lastModified":"2026-11-12T18:00:34.054Z","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":["--kh4pmSX9Ui"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794506434,"lastModified":1794506434,"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"}] +<< 26:[1,86,null,{"value":null}] +>> 30:[0,87,"Marionette:GetContext"] +<< 30:[1,87,null,{"value":"chrome"}] +>> 50:[0,88,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,88,null,{"value":null}] +>> 30:[0,89,"Marionette:GetContext"] +<< 31:[1,89,null,{"value":"content"}] +>> 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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-12T18:00:34.054Z","lastModified":"2026-11-12T18:00:34.054Z","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":["--kh4pmSX9Ui"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794506434,"lastModified":1794506434,"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"}] +<< 26:[1,96,null,{"value":null}] +>> 30:[0,97,"Marionette:GetContext"] +<< 30:[1,97,null,{"value":"chrome"}] +>> 50:[0,98,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,98,null,{"value":null}] +>> 30:[0,99,"Marionette:GetContext"] +<< 31:[1,99,null,{"value":"content"}] +>> 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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-12T18:00:34.054Z","lastModified":"2026-11-12T18:00:34.054Z","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":["--kh4pmSX9Ui"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794506434,"lastModified":1794506434,"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"}] +<< 27:[1,106,null,{"value":null}] +>> 31:[0,107,"Marionette:GetContext"] +<< 31:[1,107,null,{"value":"chrome"}] +>> 51:[0,108,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,108,null,{"value":null}] +>> 31:[0,109,"Marionette:GetContext"] +<< 32:[1,109,null,{"value":"content"}] +>> 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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":"2026-11-12T18:00:34.054Z","lastModified":"2026-11-12T18:00:34.054Z","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":["--kh4pmSX9Ui"],"script":"let lazy = {}; if (ChromeUtils.defineESModuleGetters) { ChromeUtils.defineESModuleGetters(lazy, { Bookmarks: \"resource://gre/modules/Bookmarks.sys.mjs\", PlacesUtils: \"resource://gre/modules/PlacesUtils.sys.mjs\", NetUtil: \"resource://gre/modules/NetUtil.sys.mjs\", }); } else { lazy.Bookmarks = ChromeUtils.import(\"resource://gre/modules/Bookmarks.jsm\").Bookmarks; lazy.PlacesUtils = ChromeUtils.import(\"resource://gre/modules/PlacesUtils.jsm\").PlacesUtils; lazy.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":"--kh4pmSX9Ui","index":0,"type":1,"title":"This is MetaCPAN!","dateAdded":1794506434,"lastModified":1794506434,"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"}] +<< 27:[1,116,null,{"value":null}] +>> 31:[0,117,"Marionette:GetContext"] +<< 31:[1,117,null,{"value":"chrome"}] +>> 51:[0,118,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,118,null,{"value":null}] +>> 31:[0,119,"Marionette:GetContext"] +<< 32:[1,119,null,{"value":"content"}] +>> 50:[0,120,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,120,null,{"value":null}] +>> 208:[0,121,"WebDriver:ExecuteScript",{"script":"let loginManager = Components.classes[\"@mozilla.org/login-manager;1\"].getService(Components.interfaces.nsILoginManager); return loginManager.getAllLogins({}); "}] +<< 25:[1,121,null,{"value":[]}] +>> 31:[0,122,"Marionette:GetContext"] +<< 31:[1,122,null,{"value":"chrome"}] +>> 51:[0,123,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,123,null,{"value":null}] +>> 31:[0,124,"Marionette:GetContext"] +<< 32:[1,124,null,{"value":"content"}] +>> 50:[0,125,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,125,null,{"value":null}] +>> 208:[0,126,"WebDriver:ExecuteScript",{"script":"let loginManager = Components.classes[\"@mozilla.org/login-manager;1\"].getService(Components.interfaces.nsILoginManager); return loginManager.getAllLogins({}); "}] +<< 25:[1,126,null,{"value":[]}] +>> 31:[0,127,"Marionette:GetContext"] +<< 31:[1,127,null,{"value":"chrome"}] +>> 51:[0,128,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,128,null,{"value":null}] +>> 31:[0,129,"Marionette:GetContext"] +<< 32:[1,129,null,{"value":"content"}] +>> 50:[0,130,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,130,null,{"value":null}] +>> 1226:[0,131,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); } }).register(); "}] +<< 27:[1,131,null,{"value":null}] +>> 31:[0,132,"Marionette:GetContext"] +<< 31:[1,132,null,{"value":"chrome"}] +>> 51:[0,133,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,133,null,{"value":null}] +>> 31:[0,134,"Marionette:GetContext"] +<< 32:[1,134,null,{"value":"content"}] +>> 50:[0,135,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,135,null,{"value":null}] +>> 1326:[0,136,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); } }).register(); "}] +<< 27:[1,136,null,{"value":null}] +>> 31:[0,137,"Marionette:GetContext"] +<< 31:[1,137,null,{"value":"chrome"}] +>> 51:[0,138,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,138,null,{"value":null}] +>> 31:[0,139,"Marionette:GetContext"] +<< 32:[1,139,null,{"value":"content"}] +>> 50:[0,140,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,140,null,{"value":null}] +>> 1462:[0,141,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); } }).register(); "}] +<< 27:[1,141,null,{"value":null}] +>> 31:[0,142,"Marionette:GetContext"] +<< 31:[1,142,null,{"value":"chrome"}] +>> 51:[0,143,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,143,null,{"value":null}] +>> 31:[0,144,"Marionette:GetContext"] +<< 32:[1,144,null,{"value":"content"}] +>> 50:[0,145,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,145,null,{"value":null}] +>> 1665:[0,146,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } } }).register(); "}] +<< 27:[1,146,null,{"value":null}] +>> 31:[0,147,"Marionette:GetContext"] +<< 31:[1,147,null,{"value":"chrome"}] +>> 51:[0,148,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,148,null,{"value":null}] +>> 31:[0,149,"Marionette:GetContext"] +<< 32:[1,149,null,{"value":"content"}] +>> 50:[0,150,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,150,null,{"value":null}] +>> 1833:[0,151,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } } }).register(); "}] +<< 27:[1,151,null,{"value":null}] +>> 31:[0,152,"Marionette:GetContext"] +<< 31:[1,152,null,{"value":"chrome"}] +>> 51:[0,153,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,153,null,{"value":null}] +>> 31:[0,154,"Marionette:GetContext"] +<< 32:[1,154,null,{"value":"content"}] +>> 50:[0,155,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,155,null,{"value":null}] +>> 2038:[0,156,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } } }).register(); "}] +<< 27:[1,156,null,{"value":null}] +>> 31:[0,157,"Marionette:GetContext"] +<< 31:[1,157,null,{"value":"chrome"}] +>> 51:[0,158,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,158,null,{"value":null}] +>> 31:[0,159,"Marionette:GetContext"] +<< 32:[1,159,null,{"value":"content"}] +>> 50:[0,160,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,160,null,{"value":null}] +>> 2244:[0,161,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } if (host === decodeURIComponent(\"missing.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-No-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20None%201.68\"), true); } } }).register(); "}] +<< 27:[1,161,null,{"value":null}] +>> 31:[0,162,"Marionette:GetContext"] +<< 31:[1,162,null,{"value":"chrome"}] +>> 51:[0,163,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,163,null,{"value":null}] +>> 31:[0,164,"Marionette:GetContext"] +<< 32:[1,164,null,{"value":"content"}] +>> 50:[0,165,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,165,null,{"value":null}] +>> 2344:[0,166,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"Accept-Language\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } if (host === decodeURIComponent(\"missing.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-No-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20None%201.68\"), true); } } }).register(); "}] +<< 27:[1,166,null,{"value":null}] +>> 31:[0,167,"Marionette:GetContext"] +<< 31:[1,167,null,{"value":"chrome"}] +>> 51:[0,168,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,168,null,{"value":null}] +>> 31:[0,169,"Marionette:GetContext"] +<< 32:[1,169,null,{"value":"content"}] +>> 50:[0,170,"Marionette:SetContext",{"value":"chrome"}] +<< 27:[1,170,null,{"value":null}] +>> 2505:[0,171,"WebDriver:ExecuteScript",{"script":"(function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); let iterator = observerService.enumerateObservers(\"http-on-modify-request\"); while (iterator.hasMoreElements()) { observerService.removeObserver(iterator.getNext(), \"http-on-modify-request\"); } })(); ({ observe: function(subject, topic, data) { this.onHeaderChanged(subject.QueryInterface(Components.interfaces.nsIHttpChannel), topic, data); }, register: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(this, \"http-on-modify-request\", false); }, unregister: function() { let observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObserverService); observerService.removeObserver(this, \"http-on-modify-request\"); }, onHeaderChanged: function(channel, topic, data) { let host = channel.URI.host; channel.setRequestHeader(decodeURIComponent(\"Accept-Language\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All%201.68\"), true); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"\"), false); channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20All2%201.68\"), true); if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"Cache-Control\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site%201.68\"), true); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"\"), false); } if (host === decodeURIComponent(\"fastapi.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-Site-Testing2\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20Site2%201.68\"), true); } if (host === decodeURIComponent(\"missing.metacpan.org\")) { channel.setRequestHeader(decodeURIComponent(\"X-CPAN-No-Site-Testing\"), decodeURIComponent(\"Firefox%3A%3AMarionette%20None%201.68\"), true); } } }).register(); "}] +<< 27:[1,171,null,{"value":null}] +>> 31:[0,172,"Marionette:GetContext"] +<< 31:[1,172,null,{"value":"chrome"}] +>> 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":1949520,"moz:profile":"/tmp/firefox_marionette_local_vpHbOEFvPSk/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 95 seconds at t/01-marionette.t line 3063 +# Testing has been running for 41 seconds at t/01-marionette.t line 3063 +** firefox --version +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_Cesp8r3A4nL/profile --no-remote --new-instance +[1950105] 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":"f62ac837-3ceb-4f2b-af84-d24ea962bf24","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":1950105,"moz:profile":"/tmp/firefox_marionette_local_Cesp8r3A4nL/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":"EwqTUjAdysHQSS_TseY6olQrkpJsAHcdElOjq-PKLs0"}] +>> 29:[0,5,"Marionette:GetContext"] +<< 30:[1,5,null,{"value":"content"}] +>> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] +<< 25:[1,6,null,{"value":null}] +>> 814:[0,7,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"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); } } "}] +<< 25:[1,7,null,{"value":null}] +>> 29:[0,8,"Marionette:GetContext"] +<< 29:[1,8,null,{"value":"chrome"}] +>> 49:[0,9,"Marionette:SetContext",{"value":"content"}] +<< 25:[1,9,null,{"value":null}] +>> 30:[0,10,"Marionette:GetContext"] +<< 31:[1,10,null,{"value":"content"}] +>> 49:[0,11,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,11,null,{"value":null}] +>> 828:[0,12,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"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,12,null,{"value":null}] +>> 30:[0,13,"Marionette:GetContext"] +<< 30:[1,13,null,{"value":"chrome"}] +>> 50:[0,14,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,14,null,{"value":null}] +>> 30:[0,15,"Marionette:GetContext"] +<< 31:[1,15,null,{"value":"content"}] +>> 49:[0,16,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,16,null,{"value":null}] +>> 833:[0,17,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"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,17,null,{"value":null}] +>> 30:[0,18,"Marionette:GetContext"] +<< 30:[1,18,null,{"value":"chrome"}] +>> 50:[0,19,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,19,null,{"value":null}] +>> 30:[0,20,"Marionette:GetContext"] +<< 31:[1,20,null,{"value":"content"}] +>> 49:[0,21,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,21,null,{"value":null}] +>> 824:[0,22,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"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,22,null,{"value":null}] +>> 30:[0,23,"Marionette:GetContext"] +<< 30:[1,23,null,{"value":"chrome"}] +>> 50:[0,24,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,24,null,{"value":null}] +>> 30:[0,25,"Marionette:GetContext"] +<< 31:[1,25,null,{"value":"content"}] +>> 49:[0,26,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,26,null,{"value":null}] +>> 822:[0,27,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"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,27,null,{"value":null}] +>> 30:[0,28,"Marionette:GetContext"] +<< 30:[1,28,null,{"value":"chrome"}] +>> 50:[0,29,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,29,null,{"value":null}] +>> 30:[0,30,"Marionette:GetContext"] +<< 31:[1,30,null,{"value":"content"}] +>> 49:[0,31,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,31,null,{"value":null}] +>> 828:[0,32,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"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,32,null,{"value":null}] +>> 30:[0,33,"Marionette:GetContext"] +<< 30:[1,33,null,{"value":"chrome"}] +>> 50:[0,34,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,34,null,{"value":null}] +>> 30:[0,35,"Marionette:GetContext"] +<< 31:[1,35,null,{"value":"content"}] +>> 49:[0,36,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,36,null,{"value":null}] +>> 830:[0,37,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"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,37,null,{"value":null}] +>> 30:[0,38,"Marionette:GetContext"] +<< 30:[1,38,null,{"value":"chrome"}] +>> 50:[0,39,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,39,null,{"value":null}] +>> 30:[0,40,"Marionette:GetContext"] +<< 31:[1,40,null,{"value":"content"}] +>> 49:[0,41,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,41,null,{"value":null}] +>> 817:[0,42,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"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,42,null,{"value":null}] +>> 30:[0,43,"Marionette:GetContext"] +<< 30:[1,43,null,{"value":"chrome"}] +>> 50:[0,44,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,44,null,{"value":null}] +>> 30:[0,45,"Marionette:GetContext"] +<< 31:[1,45,null,{"value":"content"}] +>> 49:[0,46,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,46,null,{"value":null}] +>> 827:[0,47,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"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,47,null,{"value":null}] +>> 30:[0,48,"Marionette:GetContext"] +<< 30:[1,48,null,{"value":"chrome"}] +>> 50:[0,49,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,49,null,{"value":null}] +>> 30:[0,50,"Marionette:GetContext"] +<< 31:[1,50,null,{"value":"content"}] +>> 49:[0,51,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,51,null,{"value":null}] +>> 760:[0,52,"WebDriver:ExecuteScript",{"args":["data:application/json,{\"ipVersion\":6,\"ipAddress\":\"2001:8001:4ab3:d800:7215:c1fe:fc85:1329\",\"latitude\":-37.5,\"longitude\":144.5,\"countryName\":\"Australia\",\"countryCode\":\"AU\",\"timeZone\":\"+11:00\",\"zipCode\":\"3000\",\"cityName\":\"Melbourne\",\"regionName\":\"Victoria\",\"isProxy\":false,\"continent\":\"Oceania\",\"continentCode\":\"OC\"}"],"script":"return (async function(url) { let response = await fetch(url, { method: \"GET\", mode: \"cors\", headers: { \"Content-Type\": \"application/json\" }, redirect: \"follow\", referrerPolicy: \"no-referrer\"}); if (response.ok) { return await response.json(); } else { throw new Error(url + \" returned a \" + response.status); } })(arguments[0]); "}] +<< 314:[1,52,null,{"value":{"ipVersion":6,"ipAddress":"2001:8001:4ab3:d800:7215:c1fe:fc85:1329","latitude":-37.5,"longitude":144.5,"countryName":"Australia","countryCode":"AU","timeZone":"+11:00","zipCode":"3000","cityName":"Melbourne","regionName":"Victoria","isProxy":false,"continent":"Oceania","continentCode":"OC"}}] +>> 30:[0,53,"Marionette:GetContext"] +<< 30:[1,53,null,{"value":"chrome"}] +>> 50:[0,54,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,54,null,{"value":null}] +>> 30:[0,55,"Marionette:GetContext"] +<< 31:[1,55,null,{"value":"content"}] +>> 49:[0,56,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,56,null,{"value":null}] +>> 895:[0,57,"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,57,null,{"value":null}] +>> 30:[0,58,"Marionette:GetContext"] +<< 30:[1,58,null,{"value":"chrome"}] +>> 50:[0,59,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,59,null,{"value":null}] +>> 30:[0,60,"Marionette:GetContext"] +<< 31:[1,60,null,{"value":"content"}] +>> 49:[0,61,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,61,null,{"value":null}] +>> 883:[0,62,"WebDriver:ExecuteScript",{"args":["geo.wifi.uri","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); } } "}] +<< 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}] +>> 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 95 seconds at t/01-marionette.t line 4370 -# Starting new firefox for testing proxy by argument, capabilities, window switching and certificates using proxy port TCP/59665 +# Testing has been running for 45 seconds at t/01-marionette.t line 4370 +** firefox --version +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_15hPhMXaHs6/profile --no-remote --new-instance +[1951042] 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":"0766fc5d-099c-42f5-9449-9cb156c65e1c","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":1951042,"moz:profile":"/tmp/firefox_marionette_local_15hPhMXaHs6/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":"WewtKWR3RsW4JdHL_LkmyMsSX3WpMhSh2YycjWA01-g"}] +>> 29:[0,5,"Marionette:GetContext"] +<< 30:[1,5,null,{"value":"content"}] +>> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] +<< 25:[1,6,null,{"value":null}] +>> 814:[0,7,"WebDriver:ExecuteScript",{"args":["geo.enabled",1],"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); } } "}] +<< 25:[1,7,null,{"value":null}] +>> 29:[0,8,"Marionette:GetContext"] +<< 29:[1,8,null,{"value":"chrome"}] +>> 49:[0,9,"Marionette:SetContext",{"value":"content"}] +<< 25:[1,9,null,{"value":null}] +>> 30:[0,10,"Marionette:GetContext"] +<< 31:[1,10,null,{"value":"content"}] +>> 49:[0,11,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,11,null,{"value":null}] +>> 828:[0,12,"WebDriver:ExecuteScript",{"args":["geo.provider.use_geoclue",0],"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,12,null,{"value":null}] +>> 30:[0,13,"Marionette:GetContext"] +<< 30:[1,13,null,{"value":"chrome"}] +>> 50:[0,14,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,14,null,{"value":null}] +>> 30:[0,15,"Marionette:GetContext"] +<< 31:[1,15,null,{"value":"content"}] +>> 49:[0,16,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,16,null,{"value":null}] +>> 833:[0,17,"WebDriver:ExecuteScript",{"args":["geo.provider.use_corelocation",0],"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,17,null,{"value":null}] +>> 30:[0,18,"Marionette:GetContext"] +<< 30:[1,18,null,{"value":"chrome"}] +>> 50:[0,19,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,19,null,{"value":null}] +>> 30:[0,20,"Marionette:GetContext"] +<< 31:[1,20,null,{"value":"content"}] +>> 49:[0,21,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,21,null,{"value":null}] +>> 824:[0,22,"WebDriver:ExecuteScript",{"args":["geo.provider.testing",1],"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,22,null,{"value":null}] +>> 30:[0,23,"Marionette:GetContext"] +<< 30:[1,23,null,{"value":"chrome"}] +>> 50:[0,24,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,24,null,{"value":null}] +>> 30:[0,25,"Marionette:GetContext"] +<< 31:[1,25,null,{"value":"content"}] +>> 49:[0,26,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,26,null,{"value":null}] +>> 822:[0,27,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing",1],"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,27,null,{"value":null}] +>> 30:[0,28,"Marionette:GetContext"] +<< 30:[1,28,null,{"value":"chrome"}] +>> 50:[0,29,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,29,null,{"value":null}] +>> 30:[0,30,"Marionette:GetContext"] +<< 31:[1,30,null,{"value":"content"}] +>> 49:[0,31,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,31,null,{"value":null}] +>> 828:[0,32,"WebDriver:ExecuteScript",{"args":["geo.prompt.testing.allow",1],"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,32,null,{"value":null}] +>> 30:[0,33,"Marionette:GetContext"] +<< 30:[1,33,null,{"value":"chrome"}] +>> 50:[0,34,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,34,null,{"value":null}] +>> 30:[0,35,"Marionette:GetContext"] +<< 31:[1,35,null,{"value":"content"}] +>> 49:[0,36,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,36,null,{"value":null}] +>> 830:[0,37,"WebDriver:ExecuteScript",{"args":["geo.security.allowinsecure",1],"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,37,null,{"value":null}] +>> 30:[0,38,"Marionette:GetContext"] +<< 30:[1,38,null,{"value":"chrome"}] +>> 50:[0,39,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,39,null,{"value":null}] +>> 30:[0,40,"Marionette:GetContext"] +<< 31:[1,40,null,{"value":"content"}] +>> 49:[0,41,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,41,null,{"value":null}] +>> 817:[0,42,"WebDriver:ExecuteScript",{"args":["geo.wifi.scan",1],"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,42,null,{"value":null}] +>> 30:[0,43,"Marionette:GetContext"] +<< 30:[1,43,null,{"value":"chrome"}] +>> 50:[0,44,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,44,null,{"value":null}] +>> 30:[0,45,"Marionette:GetContext"] +<< 31:[1,45,null,{"value":"content"}] +>> 49:[0,46,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,46,null,{"value":null}] +>> 827:[0,47,"WebDriver:ExecuteScript",{"args":["permissions.default.geo",1],"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,47,null,{"value":null}] +>> 30:[0,48,"Marionette:GetContext"] +<< 30:[1,48,null,{"value":"chrome"}] +>> 50:[0,49,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,49,null,{"value":null}] +>> 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":1951042,"moz:profile":"/tmp/firefox_marionette_local_15hPhMXaHs6/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_15hPhMXaHs6/extension/1_borderify.xpi","temporary":true}] +<< 80:[1,51,null,{"value":"078c69413610815a7e5cce8452a4c1c0da0af4f7@temporary-addon"}] +>> 171:[0,52,"WebDriver:Navigate",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c","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":"078c69413610815a7e5cce8452a4c1c0da0af4f7@temporary-addon"}] +<< 26:[1,54,null,{"value":null}] +>> 30:[0,55,"Marionette:GetContext"] +<< 31:[1,55,null,{"value":"content"}] +>> 49:[0,56,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,56,null,{"value":null}] +>> 899:[0,57,"WebDriver:ExecuteScript",{"args":["geo.provider.network.url","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); } } "}] +<< 26:[1,57,null,{"value":null}] +>> 30:[0,58,"Marionette:GetContext"] +<< 30:[1,58,null,{"value":"chrome"}] +>> 50:[0,59,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,59,null,{"value":null}] +>> 30:[0,60,"Marionette:GetContext"] +<< 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); } } "}] +<< 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":"0766fc5d-099c-42f5-9449-9cb156c65e1c","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 }); })(); "}] +<< 166:[1,66,null,{"value":{"timezone_offset":-840,"latitude":-37.123,"longitude":144.456,"altitude":null,"accuracy":0,"altitudeAccuracy":null,"heading":null,"speed":null}}] +# Accepting connections for [Test HTTP Content Server for 1945606] +>> 124:[0,67,"WebDriver:Navigate",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c","url":"http://127.0.0.1:59905/?format=JSON"}] +# Accepted connection +# Accepted connection +# Got request for /?format=JSON +<< 26:[1,67,null,{"value":null}] +>> 85:[0,68,"WebDriver:GetPageSource",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c"}] +<< 196:[1,68,null,{"value":"
{ \"id\": \"5\", \"value\": \"sömething\"}"}]
+>> 85:[0,69,"WebDriver:GetPageSource",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c"}]
+<< 196:[1,69,null,{"value":"{ \"id\": \"5\", \"value\": \"sömething\"}"}]
+# { "id": "5", "value": "sömething"}
+>> 85:[0,70,"WebDriver:GetPageSource",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c"}]
+<< 196:[1,70,null,{"value":"{ \"id\": \"5\", \"value\": \"sömething\"}"}]
+>> 85:[0,71,"WebDriver:GetPageSource",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c"}]
+<< 196:[1,71,null,{"value":"{ \"id\": \"5\", \"value\": \"sömething\"}"}]
+>> 123:[0,72,"WebDriver:Navigate",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c","url":"http://127.0.0.1:59905/?format=txt"}]
+# Accepted connection
+# Got request for /?format=txt
+<< 26:[1,72,null,{"value":null}]
+>> 85:[0,73,"WebDriver:GetPageSource",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c"}]
+<< 173:[1,73,null,{"value":"This is ordinary text"}] +>> 85:[0,74,"WebDriver:GetPageSource",{"sessionId":"0766fc5d-099c-42f5-9449-9cb156c65e1c"}] +<< 173:[1,74,null,{"value":"
This is ordinary text"}] +# This is ordinary text +>> 30:[0,75,"Marionette:GetContext"] +<< 31:[1,75,null,{"value":"content"}] +>> 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_15hPhMXaHs6/downloads","string"]}] +>> 30:[0,78,"Marionette:GetContext"] +<< 30:[1,78,null,{"value":"chrome"}] +>> 50:[0,79,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,79,null,{"value":null}] +>> 30:[0,80,"WebDriver:GetTimeouts"] +<< 64:[1,80,null,{"implicit":987654,"pageLoad":300000,"script":30000}] +>> 30:[0,81,"Marionette:GetContext"] +<< 31:[1,81,null,{"value":"content"}] +>> 49:[0,82,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,82,null,{"value":null}] +>> 30:[0,83,"WebDriver:GetTimeouts"] +<< 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:59905/?format=txt","/tmp/firefox_marionette_local_15hPhMXaHs6/downloads/firefox_marionette_download_J04eUOCITW6"],"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 1951042, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 + +(firefox-esr:1951042): GLib-GObject-CRITICAL **: 18:00:43.579: 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}] +>> 83:[0,87,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":30000}] +<< 26:[1,87,null,{"value":null}] +>> 30:[0,88,"Marionette:GetContext"] +<< 30:[1,88,null,{"value":"chrome"}] +>> 50:[0,89,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,89,null,{"value":null}] +>> 30:[0,90,"Marionette:GetContext"] +<< 31:[1,90,null,{"value":"content"}] +>> 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_15hPhMXaHs6/downloads","string"]}] +>> 30:[0,93,"Marionette:GetContext"] +<< 30:[1,93,null,{"value":"chrome"}] +>> 50:[0,94,"Marionette:SetContext",{"value":"content"}] +<< 26:[1,94,null,{"value":null}] +>> 30:[0,95,"WebDriver:GetTimeouts"] +<< 64:[1,95,null,{"implicit":987654,"pageLoad":300000,"script":30000}] +>> 30:[0,96,"Marionette:GetContext"] +<< 31:[1,96,null,{"value":"content"}] +>> 49:[0,97,"Marionette:SetContext",{"value":"chrome"}] +<< 26:[1,97,null,{"value":null}] +>> 30:[0,98,"WebDriver:GetTimeouts"] +<< 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:59905/?format=txt","/tmp/firefox_marionette_local_15hPhMXaHs6/downloads/firefox_marionette_download_yA2s__uJgHJ"],"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 1951042, Main Thread] WARNING: g_object_get: assertion 'G_IS_OBJECT (object)' failed: 'glib warning', file toolkit/xre/nsSigHandlers.cpp:201 + +(firefox-esr:1951042): GLib-GObject-CRITICAL **: 18:00:43.617: 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}] +>> 84:[0,102,"WebDriver:SetTimeouts",{"implicit":987654,"pageLoad":300000,"script":30000}] +<< 27:[1,102,null,{"value":null}] +>> 31:[0,103,"Marionette:GetContext"] +<< 31:[1,103,null,{"value":"chrome"}] +>> 51:[0,104,"Marionette:SetContext",{"value":"content"}] +<< 27:[1,104,null,{"value":null}] +# Caught exception in content server:Caught a TERM signal at t/01-marionette.t line 115. +>> 69:[0,105,"WebDriver:ExecuteScript",{"script":"alert('testing alert')"}] +<< 27:[1,105,null,{"value":null}] +>> 32:[0,106,"WebDriver:GetAlertText"] +<< 38:[1,106,null,{"value":"testing alert"}] +>> 32:[0,107,"WebDriver:DismissAlert"] +<< 27:[1,107,null,{"value":null}] +>> 102:[0,108,"WebDriver:ExecuteAsyncScript",{"script":"prompt(\"Please enter your name\", \"John Cole\");"}] +<< 27:[1,108,null,{"value":null}] +>> 61:[0,109,"WebDriver:SendAlertText",{"text":"Roland Grelewicz"}] +<< 27:[1,109,null,{"value":null}] +**** DEPRECATED METHOD - using accept_dialog() HAS BEEN REPLACED BY accept_alert **** at t/01-marionette.t line 4579. +>> 32:[0,110,"WebDriver:AcceptDialog"] +<< 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/41807 # 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 95 seconds at t/01-marionette.t line 5407 -# Testing has been running for 95 seconds at t/01-marionette.t line 5425 -# Total runtime is 95 seconds +# Testing has been running for 53 seconds at t/01-marionette.t line 5407 +** firefox --version +** firefox -marionette -safe-mode -headless -profile /tmp/firefox_marionette_local_FNTj2D0OR5T/profile --no-remote --new-instance +[1953989] 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":"ec87d8a4-c0d5-47f8-b0e8-93d701ca70d6","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":1953989,"moz:profile":"/tmp/firefox_marionette_local_FNTj2D0OR5T/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":"5v-hcqBwfHiZ020efqCbSbdvio2AFvlBOKd7m8eFL-M"}] +>> 29:[0,3,"Marionette:GetContext"] +<< 30:[1,3,null,{"value":"content"}] +>> 49:[0,4,"Marionette:SetContext",{"value":"content"}] +<< 25:[1,4,null,{"value":null}] +>> 29:[0,5,"Marionette:GetContext"] +<< 30:[1,5,null,{"value":"content"}] +>> 48:[0,6,"Marionette:SetContext",{"value":"chrome"}] +<< 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 57 seconds at t/01-marionette.t line 5425 +# Total runtime is 66 seconds t/01-marionette.t ..... ok 1 - Read 0 existing profiles ok 2 - No default profile @@ -2013,7 +8425,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_JgjoNBOdxt9 +ok 18 - $firefox->root_directory() is /tmp/firefox_marionette_local_KClMizpU9OU 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 @@ -2024,7 +8436,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_JgjoNBOdxt9 +ok 29 - Firefox::Marionette->root_directory() returns the exising local directory:/tmp/firefox_marionette_local_KClMizpU9OU ok 30 - $firefox->application_type() returns gecko ok 31 - $firefox->marionette_protocol() returns 3 ok 32 - $firefox->window_type() returns 'navigator:browser':navigator:browser @@ -2072,7 +8484,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_F3c_31yReZr +ok 72 - $firefox->root_directory() is /tmp/firefox_marionette_local_aCH0rBR8Zpj 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 @@ -2081,14 +8493,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() Yv0yuDh5-hPU -ok 82 - $bookmark->guid() is LbnFAEAL8NXT +ok 81 - $bookmark->parent_guid() LOS9EhaklhNc +ok 82 - $bookmark->guid() is VlqV7HUcPYYr 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 NJXx5HdaLoyp +ok 88 - $bookmark->guid() is 7sn7UWalPU9- 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 @@ -2105,22 +8517,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:45741':localhost:45741 -ok 106 - $capabilities->proxy()->https() is 'localhost:37965' +ok 105 - $capabilities->proxy()->http() is 'localhost:55273':localhost:55273 +ok 106 - $capabilities->proxy()->https() is 'localhost:40369' 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:56363':localhost:56363 +ok 110 - $capabilities->proxy()->socks() is 'localhost:53177':localhost:53177 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 -1760095987152 Marionette INFO Listening on port 34769 +1794506405912 Marionette INFO Listening on port 40033 +1794506406468 RemoteAgent INFO Proxy settings initialized: {"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:51127"} [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt -1760095988150 RemoteAgent INFO Proxy settings initialized: {"proxyType":"pac","proxyAutoconfigUrl":"http://localhost:41825"} -ok 115 - $firefox->root_directory() is /tmp/firefox_marionette_local_5uFVAd_90Sj +ok 115 - $firefox->root_directory() is /tmp/firefox_marionette_local_mD4xf7wdMEy 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' @@ -2128,7 +8540,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 -1760096010967 Marionette INFO Stopped listening on port 34769 +1794506409423 Marionette INFO Stopped listening on port 40033 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 @@ -2137,358 +8549,969 @@ ok 128 # skip Skipping b/c proxy seems to cause hangs ok 129 # skip Skipping b/c proxy seems to cause hangs ok 130 # skip Skipping b/c proxy seems to cause hangs -ok 131 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 132 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 133 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 134 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 135 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 136 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 137 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 138 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 139 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 140 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 141 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 142 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 143 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 144 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 145 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 146 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 147 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 148 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 149 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 150 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 151 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 152 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 153 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 154 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 155 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 156 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 157 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 158 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 159 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 160 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 161 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 162 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 163 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 164 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 165 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 166 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 167 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 168 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 169 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 170 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 171 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 172 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 173 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 174 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 175 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 176 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 177 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 178 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 179 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 180 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 181 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 182 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 183 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 184 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 185 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 186 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 187 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 188 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 189 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 190 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 191 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 192 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 193 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 194 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 195 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 196 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 197 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 198 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 199 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 200 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 201 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 202 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 203 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 204 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 205 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 206 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 207 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 208 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 209 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 210 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 211 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 212 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 213 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 214 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 215 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 216 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 217 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 218 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 219 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 220 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 221 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 222 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 223 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 224 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 225 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 226 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 227 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 228 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 229 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 230 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 231 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 232 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 233 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 234 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 235 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 236 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 237 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 238 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 239 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 240 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 241 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 242 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 243 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 244 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 245 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 246 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 247 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 248 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 249 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 250 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 251 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 252 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 253 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 254 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 255 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 256 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 257 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 258 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 259 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 260 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 261 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 262 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 263 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 264 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 265 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 266 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 267 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 268 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 269 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 270 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 271 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 272 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 273 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 274 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 275 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 276 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 277 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 278 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 279 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 280 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 281 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 282 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 283 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 284 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 285 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 286 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 287 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 288 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 289 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 290 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 291 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 292 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 293 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 294 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 295 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 296 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 297 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 298 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 299 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 300 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 301 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 302 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 303 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 304 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 305 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 306 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 307 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 308 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 309 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 310 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 311 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 312 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 313 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 314 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 315 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 316 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 317 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 318 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 319 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 320 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 321 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 322 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 323 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 324 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 325 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 326 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 327 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 328 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 329 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 330 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 331 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 332 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 333 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 334 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 335 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 336 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 337 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 338 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 339 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 340 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 341 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 342 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 343 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 344 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 345 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 346 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 347 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 348 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 349 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 350 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 351 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 352 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 353 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 354 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 355 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 356 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 357 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 358 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 359 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 360 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 361 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 362 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 363 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 364 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 365 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 366 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 367 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 368 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 369 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 370 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 371 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 372 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 373 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 374 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 375 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 376 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 377 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 378 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 379 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 380 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 381 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 382 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 383 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 384 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 385 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 386 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 387 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 388 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 389 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 390 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 391 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 392 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 393 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 394 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 395 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 396 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 397 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 398 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 399 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 400 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 401 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 402 # skip Skipping b/c proxy seems to cause hangs -ok 403 # skip Skipping b/c proxy seems to cause hangs -ok 404 # skip Skipping b/c proxy seems to cause hangs -ok 405 # skip Skipping b/c proxy seems to cause hangs -ok 406 # skip Skipping b/c proxy seems to cause hangs -ok 407 # skip Skipping b/c proxy seems to cause hangs -ok 408 # skip Skipping b/c proxy seems to cause hangs -ok 409 # skip Skipping b/c proxy seems to cause hangs -ok 410 # skip Skipping b/c proxy seems to cause hangs -ok 411 # skip Skipping b/c proxy seems to cause hangs -ok 412 # skip Skipping b/c proxy seems to cause hangs -ok 413 # skip Skipping b/c proxy seems to cause hangs -ok 414 # skip Skipping b/c proxy seems to cause hangs -ok 415 # skip Skipping b/c proxy seems to cause hangs -ok 416 # skip Skipping b/c proxy seems to cause hangs -ok 417 # skip Skipping b/c proxy seems to cause hangs -ok 418 # skip Skipping b/c proxy seems to cause hangs -ok 419 # skip Skipping b/c proxy seems to cause hangs -ok 420 # skip Skipping b/c proxy seems to cause hangs -ok 421 # skip Skipping b/c proxy seems to cause hangs -ok 422 # skip Skipping b/c proxy seems to cause hangs -ok 423 # skip Skipping b/c proxy seems to cause hangs -ok 424 # skip Skipping b/c proxy seems to cause hangs -ok 425 # skip Skipping b/c proxy seems to cause hangs -ok 426 # skip Skipping b/c proxy seems to cause hangs -ok 427 # skip Skipping b/c proxy seems to cause hangs -ok 428 # skip Skipping b/c proxy seems to cause hangs -ok 429 # skip Skipping b/c proxy seems to cause hangs -ok 430 # skip Skipping b/c proxy seems to cause hangs -ok 431 # skip Skipping b/c proxy seems to cause hangs -ok 432 # skip Skipping b/c proxy seems to cause hangs -ok 433 # skip Skipping b/c proxy seems to cause hangs -ok 434 # skip Skipping b/c proxy seems to cause hangs -ok 435 # skip Skipping b/c proxy seems to cause hangs -ok 436 # skip Skipping b/c proxy seems to cause hangs -ok 437 # skip Skipping b/c proxy seems to cause hangs -ok 438 # skip Skipping b/c proxy seems to cause hangs -ok 439 # skip Skipping b/c proxy seems to cause hangs -ok 440 # skip Skipping b/c proxy seems to cause hangs -ok 441 # skip Skipping b/c proxy seems to cause hangs -ok 442 # skip Skipping b/c proxy seems to cause hangs -ok 443 # skip Skipping b/c proxy seems to cause hangs -ok 444 # skip Skipping b/c proxy seems to cause hangs -ok 445 # skip Skipping b/c proxy seems to cause hangs -ok 446 # skip Skipping b/c proxy seems to cause hangs -ok 447 # skip Skipping b/c proxy seems to cause hangs -ok 448 # skip Skipping b/c proxy seems to cause hangs -ok 449 # skip Skipping b/c proxy seems to cause hangs -ok 450 # skip Skipping b/c proxy seems to cause hangs -ok 451 # skip Skipping b/c proxy seems to cause hangs -ok 452 # skip Skipping b/c proxy seems to cause hangs -ok 453 # skip Skipping b/c proxy seems to cause hangs -ok 454 # skip Skipping b/c proxy seems to cause hangs -ok 455 # skip Skipping b/c proxy seems to cause hangs -ok 456 # skip Skipping b/c proxy seems to cause hangs -ok 457 # skip Skipping b/c proxy seems to cause hangs -ok 458 # skip Skipping b/c proxy seems to cause hangs -ok 459 # skip Skipping b/c proxy seems to cause hangs -ok 460 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 461 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 462 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 463 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 464 # skip Running out of time. Trying to shutdown tests as fast as possible -ok 465 # skip Skipping exit status b/c out of time -ok 466 # skip Skipping exit status b/c out of time -ok 467 - Specified profile names work -ok 468 - At least one firefox start worked -ok 469 - File::Temp::newdir is redefined to fail: -ok 470 - When File::Temp::newdir is forced to fail, a Firefox::Marionette::Exception is thrown:Failed to create temporary directory:Permission denied at t/01-marionette.t line 5472 -1..470 +[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_n9yp72BtKpz +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 yz_cU0orOa1- +ok 139 - $bookmark->guid() is L2C1A9_iuIiF +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 0oV22UtShKv- +ok 146 - $bookmark->icon_url() is not defined +ok 147 - $bookmark->icon() is not defined +ok 148 - Retrieved the ARIA label correctly:Close +ok 149 - Retrieved the ARIA label correctly:Close +ok 150 - Retrieved the ARIA role correctly:button +ok 151 - Retrieved the ARIA label correctly:button +ok 152 - $firefox->languages() equals navigator.languages:'en-US, en' vs 'en-US, en' +ok 153 - $firefox->languages(split q[, ], "en-AU, en-GB, en") returns correctly +ok 154 - $firefox->languages() equals navigator.languages:'en-AU, en-GB, en' vs 'en-AU, en-GB, en' +ok 155 - $firefox->languages("en-GB") returns correctly +ok 156 - $firefox->languages() matches navigator.language b/c there is only one entry:'en-GB' vs 'en-GB' +ok 157 - $firefox->agent($test_agent_string) returns the original user agent string of 'Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0' +ok 158 - $firefox->go("file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html") loaded successfully +ok 159 - $firefox->agent(undef) returns 'Firefox::Marionette v1.68 test suite':Firefox::Marionette v1.68 test suite +ok 160 - Deleted element with 'add' class +ok 161 - Deleted 'add' element cannot be found in the DOM +ok 162 - Deleted element with 'update' class +ok 163 - Deleted 'update' element cannot be found in the DOM +ok 164 - $firefox->go("file:///build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/elements.html") loaded successfully again +ok 165 - $firefox->agent() returns the original user agent string 'Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0':Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 +ok 166 - $firefox->has_tag('span') has children and the first child is an Firefox::Marionette::Element with a tag_name of 'button' +ok 167 - $firefox->has_tag('custom-square') returns a Firefox::Marionette::Element +ok 168 - $span->shadowy() returns false +ok 169 - $custom_square->shadowy() returns true +ok 170 - First element from scripted shadowRoot is a style tag +ok 171 - $firefox->has_tag('custom-square')->shadow_root() returns a Firefox::Marionette::ShadowRoot +ok 172 - First element from ShadowRoot via script is a style tag +ok 173 - Second element from ShadowRoot via script is a div tag +ok 174 - $firefox->has_tag('custom-square')->shadow_root() has 2 children:6 +ok 175 - $firefox->has_tag('custom-square')->shadow_root() returns a Firefox::Marionette::ShadowRoot +ok 176 - Element returned from ShadowRoot via script is a style tag +ok 177 - First element is the numeric 2 +ok 178 - Second element from ShadowRoot via script is a style tag +ok 179 - $firefox->script() correctly returns an array with 2 elements +ok 180 - Correctly found shadow element with find_id +ok 181 - Correctly found shadow span with find_tag +ok 182 - Correctly found shadow span with find_tag +ok 183 - There are 2 span elements in the custom-square element +ok 184 - There are 0 notag elements in the custom-square element +ok 185 - Correctly found shadow element with find_name +ok 186 - Correctly found shadow element with find_class +ok 187 - Correctly found shadow element with find_link +ok 188 - Correctly found shadow element with find_partial +not ok 189 - Correctly found shadow element with find (xpath): # TODO xpath is not supported as a strategy for find in the shadow DOM +# Failed (TODO) test 'Correctly found shadow element with find (xpath):' +# at t/01-marionette.t line 1743. +ok 190 - Value returned from script is the numeric 2 in an array +ok 191 - Value returned from script is a Firefox::Marionette::Element for a 'span' in an array +ok 192 - Value returned from script is a Firefox::Marionette::Element for a 'span' in a hash +ok 193 - Value returned from script is the numeric 2 +ok 194 - Value returned from script is the numeric 2 in a hash +ok 195 - navigator.webdriver returns false when stealth is on +ok 196 - $firefox->check_cache_key(CLEAR_COOKIES) eq Firefox::Marionette::Cache::CLEAR_COOKIES which should be 1 and is 1 +ok 197 - $firefox->check_cache_key(CLEAR_NETWORK_CACHE) eq Firefox::Marionette::Cache::CLEAR_NETWORK_CACHE which should be 2 and is 2 +ok 198 - $firefox->check_cache_key(CLEAR_IMAGE_CACHE) eq Firefox::Marionette::Cache::CLEAR_IMAGE_CACHE which should be 4 and is 4 +ok 199 - $firefox->check_cache_key(CLEAR_JS_CACHE) eq Firefox::Marionette::Cache::CLEAR_JS_CACHE which should be 8 and is 8 +ok 200 - $firefox->check_cache_key(CLEAR_DOWNLOADS) eq Firefox::Marionette::Cache::CLEAR_DOWNLOADS which should be 16 and is 16 +ok 201 - $firefox->check_cache_key(CLEAR_MEDIA_DEVICES) eq Firefox::Marionette::Cache::CLEAR_MEDIA_DEVICES which should be 64 and is 64 +ok 202 - $firefox->check_cache_key(CLEAR_DOM_QUOTA) eq Firefox::Marionette::Cache::CLEAR_DOM_QUOTA which should be 128 and is 128 +ok 203 - $firefox->check_cache_key(CLEAR_PREDICTOR_NETWORK_DATA) eq Firefox::Marionette::Cache::CLEAR_PREDICTOR_NETWORK_DATA which should be 256 and is 256 +ok 204 - $firefox->check_cache_key(CLEAR_DOM_PUSH_NOTIFICATIONS) eq Firefox::Marionette::Cache::CLEAR_DOM_PUSH_NOTIFICATIONS which should be 512 and is 512 +ok 205 - $firefox->check_cache_key(CLEAR_HISTORY) eq Firefox::Marionette::Cache::CLEAR_HISTORY which should be 1024 and is 1024 +ok 206 - $firefox->check_cache_key(CLEAR_AUTH_TOKENS) eq Firefox::Marionette::Cache::CLEAR_AUTH_TOKENS which should be 4096 and is 4096 +ok 207 - $firefox->check_cache_key(CLEAR_AUTH_CACHE) eq Firefox::Marionette::Cache::CLEAR_AUTH_CACHE which should be 8192 and is 8192 +ok 208 - $firefox->check_cache_key(CLEAR_PERMISSIONS) eq Firefox::Marionette::Cache::CLEAR_PERMISSIONS which should be 2147500032 and is 2147500032 +ok 209 - $firefox->check_cache_key(CLEAR_CONTENT_PREFERENCES) eq Firefox::Marionette::Cache::CLEAR_CONTENT_PREFERENCES which should be 32768 and is 32768 +ok 210 - $firefox->check_cache_key(CLEAR_HSTS) eq Firefox::Marionette::Cache::CLEAR_HSTS which should be 65536 and is 65536 +ok 211 - $firefox->check_cache_key(CLEAR_EME) eq Firefox::Marionette::Cache::CLEAR_EME which should be 131072 and is 131072 +ok 212 - $firefox->check_cache_key(CLEAR_REPORTS) eq Firefox::Marionette::Cache::CLEAR_REPORTS which should be 262144 and is 262144 +ok 213 - $firefox->check_cache_key(CLEAR_STORAGE_ACCESS) eq Firefox::Marionette::Cache::CLEAR_STORAGE_ACCESS which should be 524288 and is 524288 +ok 214 - $firefox->check_cache_key(CLEAR_CERT_EXCEPTIONS) eq Firefox::Marionette::Cache::CLEAR_CERT_EXCEPTIONS which should be 1048576 and is 1048576 +ok 215 - $firefox->check_cache_key(CLEAR_CONTENT_BLOCKING_RECORDS) eq Firefox::Marionette::Cache::CLEAR_CONTENT_BLOCKING_RECORDS which should be 2097152 and is 2097152 +ok 216 - $firefox->check_cache_key(CLEAR_CSS_CACHE) eq Firefox::Marionette::Cache::CLEAR_CSS_CACHE which should be 4194304 and is 4194304 +ok 217 - $firefox->check_cache_key(CLEAR_PREFLIGHT_CACHE) eq Firefox::Marionette::Cache::CLEAR_PREFLIGHT_CACHE which should be 8388608 and is 8388608 +ok 218 - $firefox->check_cache_key(CLEAR_CLIENT_AUTH_REMEMBER_SERVICE) eq Firefox::Marionette::Cache::CLEAR_CLIENT_AUTH_REMEMBER_SERVICE which should be 16777216 and is 16777216 +ok 219 - $firefox->check_cache_key(CLEAR_CREDENTIAL_MANAGER_STATE) eq Firefox::Marionette::Cache::CLEAR_CREDENTIAL_MANAGER_STATE which should be 33554432 and is 33554432 +ok 220 - $firefox->check_cache_key(CLEAR_COOKIE_BANNER_EXCEPTION) eq Firefox::Marionette::Cache::CLEAR_COOKIE_BANNER_EXCEPTION which should be 67108864 and is 67108864 +ok 221 - $firefox->check_cache_key(CLEAR_COOKIE_BANNER_EXECUTED_RECORD) eq Firefox::Marionette::Cache::CLEAR_COOKIE_BANNER_EXECUTED_RECORD which should be 134217728 and is 134217728 +ok 222 - $firefox->check_cache_key(CLEAR_FINGERPRINTING_PROTECTION_STATE) eq Firefox::Marionette::Cache::CLEAR_FINGERPRINTING_PROTECTION_STATE which should be 268435456 and is 268435456 +ok 223 - $firefox->check_cache_key(CLEAR_BOUNCE_TRACKING_PROTECTION_STATE) eq Firefox::Marionette::Cache::CLEAR_BOUNCE_TRACKING_PROTECTION_STATE which should be 536870912 and is 536870912 +ok 224 - $firefox->check_cache_key(CLEAR_MESSAGING_LAYER_SECURITY_STATE) eq Firefox::Marionette::Cache::CLEAR_MESSAGING_LAYER_SECURITY_STATE which should be 2048 and is 2048 +ok 225 - $firefox->check_cache_key(CLEAR_STORAGE_PERMISSIONS) eq Firefox::Marionette::Cache::CLEAR_STORAGE_PERMISSIONS which should be 1073741824 and is 1073741824 +ok 226 - $firefox->check_cache_key(CLEAR_SHUTDOWN_EXCEPTIONS) eq Firefox::Marionette::Cache::CLEAR_SHUTDOWN_EXCEPTIONS which should be 2147483648 and is 2147483648 +ok 227 - $firefox->check_cache_key(CLEAR_ALL) eq Firefox::Marionette::Cache::CLEAR_ALL which should be 4294967295 and is 4294967295 +ok 228 - $firefox->check_cache_key(CLEAR_ALL_CACHES) eq Firefox::Marionette::Cache::CLEAR_ALL_CACHES which should be 12648462 and is 12648462 +ok 229 - $firefox->check_cache_key(CLEAR_DOM_STORAGES) eq Firefox::Marionette::Cache::CLEAR_DOM_STORAGES which should be 262784 and is 262784 +ok 230 - $firefox->check_cache_key(CLEAR_FORGET_ABOUT_SITE) eq Firefox::Marionette::Cache::CLEAR_FORGET_ABOUT_SITE which should be 3218591647 and is 3218591647 +ok 231 - $firefox->check_cache_key(CLEAR_COOKIES_AND_SITE_DATA) eq Firefox::Marionette::Cache::CLEAR_COOKIES_AND_SITE_DATA which should be 2013739649 and is 2013739649 +ok 232 - $firefox->check_cache_key() throws an exception +ok 233 - $firefox->check_cache_key("123!\#") throws an exception +ok 234 - $firefox->content() is called in case of previous exceptions getting the context out of sync +ok 235 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object +ok 236 - $capabilities->accept_insecure_certs() is true +ok 237 # skip Skipping network tests +ok 238 # skip Skipping network tests +ok 239 # skip Skipping network tests +[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_UNwxHPCbaU0 +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 +ok 244 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette +ok 245 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 +ok 246 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 +ok 247 - $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 248 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 +ok 249 - $bookmark->parent_guid() is ExAzkxs5efkR +ok 250 - $bookmark->guid() is 'utcxPgIOG05d':utcxPgIOG05d +ok 251 - $firefox->search_bookmark('https://metacpan.org/') produces 2 results:2 +ok 252 - $firefox->delete_bookmark($bookmark) returns itself for chaining +ok 253 - Bookmark for https://metacpan.org/pod/Firefox::Marionette has been deleted +ok 254 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ +ok 255 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 +ok 256 - $bookmark->last_modified() is Sat Jun 10 02:28:15 2023 +ok 257 - $bookmark->title() is 'PerlMonks - The Monastery Gates':PerlMonks - The Monastery Gates +ok 258 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 +ok 259 - $bookmark->parent_guid() is unfiled_____ +ok 260 - $bookmark->guid() is wiTkT9Zqb99b +ok 261 - $bookmark->icon_url() is not defined +ok 262 - $bookmark->icon() is not defined +ok 263 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a type method:1 +ok 264 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a guid method:XiZLcg8n_B4A +ok 265 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 +ok 266 - $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 267 - $firefox->search_bookmark('https://metacpan.org/') returns results (1) that have a parent_guid method:ExAzkxs5efkR +ok 268 - $firefox->search_bookmark('https://metacpan.org/') produces 1 result:1 +ok 269 - $firefox->search_bookmark() returns results (1) that have a type method:1 +ok 270 - $firefox->search_bookmark() returns results (1) that have a guid method:wiTkT9Zqb99b +ok 271 - $firefox->search_bookmark() returns results (1) that have a url method:https://perlmonks.org/ +ok 272 - $firefox->search_bookmark() returns results (1) that have a title method:PerlMonks - The Monastery Gates +ok 273 - $firefox->search_bookmark() returns results (1) that have a tag method that produces 0 tags +ok 274 - $firefox->search_bookmark() returns results (1) that have a parent_guid method:unfiled_____ +ok 275 - Deleting this bookmark +ok 276 - $firefox->search_bookmark() returns results (2) that have a type method:1 +ok 277 - $firefox->search_bookmark() returns results (2) that have a guid method:UjOiVVvuVdng +ok 278 - $firefox->search_bookmark() returns results (2) that have a url method:https://pause.perl.org/pause/query +ok 279 - $firefox->search_bookmark() returns results (2) that have a title method:PAUSE: The CPAN back stage entrance +ok 280 - $firefox->search_bookmark() returns results (2) that have a tag method that produces 0 tags +ok 281 - $firefox->search_bookmark() returns results (2) that have a parent_guid method:toolbar_____ +ok 282 - Deleting this bookmark +ok 283 - $firefox->search_bookmark() returns results (3) that have a type method:1 +ok 284 - $firefox->search_bookmark() returns results (3) that have a guid method:JTBNJdLPdYhk +ok 285 - $firefox->search_bookmark() returns results (3) that have a url method:https://github.com/david-dick/firefox-marionette +ok 286 - $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 287 - $firefox->search_bookmark() returns results (3) that have a tag method that produces 0 tags +ok 288 - $firefox->search_bookmark() returns results (3) that have a parent_guid method:menu________ +ok 289 - Deleting this bookmark +ok 290 - $firefox->search_bookmark() returns results (4) that have a type method:3 +ok 291 - $firefox->search_bookmark() returns results (4) that have a guid method:zCZX0_5lBXTS +ok 292 - $firefox->search_bookmark() returns results (4) that have a tag method that produces 0 tags +ok 293 - $firefox->search_bookmark() returns results (4) that have a parent_guid method:menu________ +ok 294 - Deleting this bookmark +ok 295 - $firefox->search_bookmark() returns results (5) that have a type method:1 +ok 296 - $firefox->search_bookmark() returns results (5) that have a guid method:bZbedzEdrOnQ +ok 297 - $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 298 - $firefox->search_bookmark() returns results (5) that have a title method:perl 🐫 at DuckDuckGo +ok 299 - $firefox->search_bookmark() returns results (5) that have a tag method that produces 4 tags +ok 300 - $firefox->search_bookmark() returns results (5) that have a parent_guid method:eZlh-ztIYBne +ok 301 - Deleting this bookmark +ok 302 - $firefox->search_bookmark() returns results (6) that have a type method:2 +ok 303 - $firefox->search_bookmark() returns results (6) that have a guid method:eZlh-ztIYBne +ok 304 - $firefox->search_bookmark() returns results (6) that have a title method:Searches +ok 305 - $firefox->search_bookmark() returns results (6) that have a tag method that produces 0 tags +ok 306 - $firefox->search_bookmark() returns results (6) that have a parent_guid method:menu________ +ok 307 - Deleting this bookmark +ok 308 - $firefox->search_bookmark() returns results (7) that have a type method:1 +ok 309 - $firefox->search_bookmark() returns results (7) that have a guid method:XiZLcg8n_B4A +ok 310 - $firefox->search_bookmark() returns results (7) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 +ok 311 - $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 312 - $firefox->search_bookmark() returns results (7) that have a tag method that produces 0 tags +ok 313 - $firefox->search_bookmark() returns results (7) that have a parent_guid method:ExAzkxs5efkR +ok 314 - Deleting this bookmark +ok 315 - $firefox->search_bookmark() returns results (8) that have a type method:2 +ok 316 - $firefox->search_bookmark() returns results (8) that have a guid method:ExAzkxs5efkR +ok 317 - $firefox->search_bookmark() returns results (8) that have a title method:CPAN +ok 318 - $firefox->search_bookmark() returns results (8) that have a tag method that produces 0 tags +ok 319 - $firefox->search_bookmark() returns results (8) that have a parent_guid method:menu________ +ok 320 - Deleting this bookmark +ok 321 - $firefox->search_bookmark() returns results (9) that have a type method:2 +ok 322 - $firefox->search_bookmark() returns results (9) that have a guid method:mobile______ +ok 323 - $firefox->search_bookmark() returns results (9) that have a title method:mobile +ok 324 - $firefox->search_bookmark() returns results (9) that have a tag method that produces 0 tags +ok 325 - $firefox->search_bookmark() returns results (9) that have a parent_guid method:root________ +ok 326 - $firefox->search_bookmark() returns results (10) that have a type method:2 +ok 327 - $firefox->search_bookmark() returns results (10) that have a guid method:unfiled_____ +ok 328 - $firefox->search_bookmark() returns results (10) that have a title method:unfiled +ok 329 - $firefox->search_bookmark() returns results (10) that have a tag method that produces 0 tags +ok 330 - $firefox->search_bookmark() returns results (10) that have a parent_guid method:root________ +ok 331 - $firefox->search_bookmark() returns results (11) that have a type method:2 +ok 332 - $firefox->search_bookmark() returns results (11) that have a guid method:tags________ +ok 333 - $firefox->search_bookmark() returns results (11) that have a title method:tags +ok 334 - $firefox->search_bookmark() returns results (11) that have a tag method that produces 0 tags +ok 335 - $firefox->search_bookmark() returns results (11) that have a parent_guid method:root________ +ok 336 - $firefox->search_bookmark() returns results (12) that have a type method:2 +ok 337 - $firefox->search_bookmark() returns results (12) that have a guid method:toolbar_____ +ok 338 - $firefox->search_bookmark() returns results (12) that have a title method:toolbar +ok 339 - $firefox->search_bookmark() returns results (12) that have a tag method that produces 0 tags +ok 340 - $firefox->search_bookmark() returns results (12) that have a parent_guid method:root________ +ok 341 - $firefox->search_bookmark() returns results (13) that have a type method:2 +ok 342 - $firefox->search_bookmark() returns results (13) that have a guid method:menu________ +ok 343 - $firefox->search_bookmark() returns results (13) that have a title method:menu +ok 344 - $firefox->search_bookmark() returns results (13) that have a tag method that produces 0 tags +ok 345 - $firefox->search_bookmark() returns results (13) that have a parent_guid method:root________ +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:En5dyY2VfXPO +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:EI_WRlxKe1R- +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:UM5dztSlgFLm +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:iKbCgf4w1Wj1 +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:beU9aOA0FJRT +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:JDr9D6Y0QWgQ +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:JDr9D6Y0QWgQ +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:IqQGFlYY33ms +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:EBbz4HScM2QO +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:mlNkC3d6fmiC +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:EBbz4HScM2QO +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:EBbz4HScM2QO +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________ +ok 398 - $firefox->search_bookmark() returns results (10) that have a type method:2 +ok 399 - $firefox->search_bookmark() returns results (10) that have a guid method:mobile______ +ok 400 - $firefox->search_bookmark() returns results (10) that have a guid method:4 +ok 401 - $firefox->search_bookmark() returns results (10) that have a title method:mobile +ok 402 - $firefox->search_bookmark() returns results (10) that have a parent_guid method:root________ +ok 403 - $firefox->search_bookmark() returns results (11) that have a type method:2 +ok 404 - $firefox->search_bookmark() returns results (11) that have a guid method:unfiled_____ +ok 405 - $firefox->search_bookmark() returns results (11) that have a guid method:3 +ok 406 - $firefox->search_bookmark() returns results (11) that have a title method:unfiled +ok 407 - $firefox->search_bookmark() returns results (11) that have a parent_guid method:root________ +ok 408 - $firefox->search_bookmark() returns results (12) that have a type method:2 +ok 409 - $firefox->search_bookmark() returns results (12) that have a guid method:tags________ +ok 410 - $firefox->search_bookmark() returns results (12) that have a guid method:2 +ok 411 - $firefox->search_bookmark() returns results (12) that have a title method:tags +ok 412 - $firefox->search_bookmark() returns results (12) that have a parent_guid method:root________ +ok 413 - $firefox->search_bookmark() returns results (13) that have a type method:2 +ok 414 - $firefox->search_bookmark() returns results (13) that have a guid method:toolbar_____ +ok 415 - $firefox->search_bookmark() returns results (13) that have a guid method:1 +ok 416 - $firefox->search_bookmark() returns results (13) that have a title method:toolbar +ok 417 - $firefox->search_bookmark() returns results (13) that have a parent_guid method:root________ +ok 418 - $firefox->search_bookmark() returns results (14) that have a type method:2 +ok 419 - $firefox->search_bookmark() returns results (14) that have a guid method:menu________ +ok 420 - $firefox->search_bookmark() returns results (14) that have a guid method:0 +ok 421 - $firefox->search_bookmark() returns results (14) that have a title method:menu +ok 422 - $firefox->search_bookmark() returns results (14) that have a parent_guid method:root________ +ok 423 - Retrieved bookmark from firefox export as https://metacpan.org/pod/Firefox::Marionette +ok 424 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette +ok 425 - $bookmark->idx() is defined:0 +ok 426 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 +ok 427 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 +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 EBbz4HScM2QO +ok 432 - $bookmark->guid() is 'mlNkC3d6fmiC':mlNkC3d6fmiC +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 +ok 436 - $firefox->delete_bookmark($bookmark) returns itself for chaining +ok 437 - Bookmark for https://metacpan.org/pod/Firefox::Marionette has been deleted +ok 438 - $bookmark->url() is 'https://perlmonks.org/':https://perlmonks.org/ +ok 439 - $bookmark->date_added() is Sat Jun 10 02:28:01 2023 +ok 440 - $bookmark->last_modified() is Sat Jun 10 02:28:15 2023 +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 En5dyY2VfXPO +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:IqQGFlYY33ms +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:EBbz4HScM2QO +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:beU9aOA0FJRT +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:JDr9D6Y0QWgQ +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 +ok 467 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a icon method that is :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= +ok 468 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a keyword method:🐫 +ok 469 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':🐫 +ok 470 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':ddg +ok 471 - $firefox->search_bookmark('https://duckduckgo.com') returns results (1) that have a tag method with one of '🐫', 'ddg', 'UTF8' or 'perl':perl +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:En5dyY2VfXPO +ok 476 - Deleting this bookmark:EI_WRlxKe1R- +ok 477 - Deleting this bookmark:UM5dztSlgFLm +ok 478 - Deleting this bookmark:iKbCgf4w1Wj1 +ok 479 - Deleting this bookmark:beU9aOA0FJRT +ok 480 - Deleting this bookmark:JDr9D6Y0QWgQ +ok 481 - Deleting this bookmark:IqQGFlYY33ms +ok 482 - Deleting this bookmark:EBbz4HScM2QO +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 +ok 486 - Bookmark 0 is Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 487 - Bookmark 1 is PerlMonks - The Monastery Gates +ok 488 - Bookmark 2 is PAUSE: The CPAN back stage entrance +ok 489 - Bookmark 3 is GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol +ok 490 - Bookmark 4 is zCZX0_5lBXTS with type 3 with parent menu________ +ok 491 - Bookmark 5 is perl 🐫 at DuckDuckGo +ok 492 - Bookmark 6 is Searches +ok 493 - Bookmark 7 is Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 494 - Bookmark 8 is CPAN +ok 495 - Bookmark 9 is mobile +ok 496 - Bookmark 10 is unfiled +ok 497 - Bookmark 11 is tags +ok 498 - Bookmark 12 is toolbar +ok 499 - Bookmark 13 is menu +ok 500 - Same number of bookmarks after importing the same json file:14 == 14 +ok 501 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette +ok 502 - $bookmark->idx() is defined:1 +ok 503 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 +ok 504 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 +ok 505 - $bookmark->content_type() is 'text/x-moz-place':text/x-moz-place +ok 506 - $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 507 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 +ok 508 - $bookmark->parent_guid() is ExAzkxs5efkR +ok 509 - $bookmark->guid() is 'utcxPgIOG05d':utcxPgIOG05d +ok 510 - $bookmark->icon_url() is 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette':fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette +ok 511 - $bookmark->icon() is correct:data:image/png;base64,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 +ok 512 - $firefox->import_bookmarks('/build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.html') returns itself for chaining +ok 513 - Bookmark 0 is Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 514 - Bookmark 1 is PerlMonks - The Monastery Gates +ok 515 - Bookmark 2 is PAUSE: The CPAN back stage entrance +ok 516 - Bookmark 3 is GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol +ok 517 - Bookmark 4 is zCZX0_5lBXTS with type 3 with parent menu________ +ok 518 - Bookmark 5 is perl 🐫 at DuckDuckGo +ok 519 - Bookmark 6 is Searches +ok 520 - Bookmark 7 is Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 521 - Bookmark 8 is CPAN +ok 522 - Bookmark 9 is mobile +ok 523 - Bookmark 10 is unfiled +ok 524 - Bookmark 11 is tags +ok 525 - Bookmark 12 is toolbar +ok 526 - Bookmark 13 is menu +ok 527 - Same number of bookmarks after importing the same json file:14 == 14 +ok 528 - $bookmark->url() is 'https://metacpan.org/pod/Firefox::Marionette':https://metacpan.org/pod/Firefox::Marionette +ok 529 - $bookmark->idx() is defined:1 +ok 530 - $bookmark->date_added() is Thu Jun 1 09:16:12 2023 +ok 531 - $bookmark->last_modified() is Thu Jun 1 09:16:13 2023 +ok 532 - $bookmark->content_type() is 'text/x-moz-place':text/x-moz-place +ok 533 - $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 534 - $bookmark->type() is Firefox::Marionette::Bookmark::BOOKMARK():1 +ok 535 - $bookmark->parent_guid() is ExAzkxs5efkR +ok 536 - $bookmark->guid() is 'utcxPgIOG05d':utcxPgIOG05d +ok 537 - $bookmark->icon_url() is 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette':fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette +ok 538 - $bookmark->icon() is correct:data:image/png;base64,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 +ok 539 - $firefox->import_bookmarks('/build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/bookmarks_firefox.html') returns itself for chaining +ok 540 - Bookmark 0 is Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 541 - Bookmark 1 is PerlMonks - The Monastery Gates +ok 542 - Bookmark 2 is PAUSE: The CPAN back stage entrance +ok 543 - Bookmark 3 is GitHub - david-dick/firefox-marionette: This is a client module to automate the Mozilla Firefox browser via the Marionette protocol +ok 544 - Bookmark 4 is zCZX0_5lBXTS with type 3 with parent menu________ +ok 545 - Bookmark 5 is perl 🐫 at DuckDuckGo +ok 546 - Bookmark 6 is Searches +ok 547 - Bookmark 7 is Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 548 - Bookmark 8 is CPAN +ok 549 - Bookmark 9 is mobile +ok 550 - Bookmark 10 is unfiled +ok 551 - Bookmark 11 is tags +ok 552 - Bookmark 12 is toolbar +ok 553 - Bookmark 13 is menu +ok 554 - Same number of bookmarks after importing the same json file:14 == 14 +ok 555 - $firefox->search_bookmark() returns results (1) that have a type method:1 +ok 556 - $firefox->search_bookmark() returns results (1) that have a guid method:utcxPgIOG05d +ok 557 - $firefox->search_bookmark() returns results (1) that have a url method:https://metacpan.org/pod/Firefox::Marionette +ok 558 - $firefox->search_bookmark() returns results (1) that have a content_type method:text/x-moz-place +ok 559 - $firefox->search_bookmark() returns results (1) that have a title method:Firefox::Marionette - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 560 - $firefox->search_bookmark() returns results (1) that have a icon_url method:fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette +ok 561 - $firefox->search_bookmark() returns results (1) that have a icon method that is :data:image/png;base64,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 +ok 562 - $firefox->search_bookmark() returns results (1) that have a parent_guid method:ExAzkxs5efkR +ok 563 - Deleting this bookmark +ok 564 - $firefox->search_bookmark() returns results (2) that have a type method:1 +ok 565 - $firefox->search_bookmark() returns results (2) that have a guid method:wiTkT9Zqb99b +ok 566 - $firefox->search_bookmark() returns results (2) that have a url method:https://perlmonks.org/ +ok 567 - $firefox->search_bookmark() returns results (2) that have a content_type method:text/x-moz-place +ok 568 - $firefox->search_bookmark() returns results (2) that have a title method:PerlMonks - The Monastery Gates +ok 569 - $firefox->search_bookmark() returns results (2) that have a parent_guid method:unfiled_____ +ok 570 - Deleting this bookmark +ok 571 - $firefox->search_bookmark() returns results (3) that have a type method:1 +ok 572 - $firefox->search_bookmark() returns results (3) that have a guid method:UjOiVVvuVdng +ok 573 - $firefox->search_bookmark() returns results (3) that have a url method:https://pause.perl.org/pause/query +ok 574 - $firefox->search_bookmark() returns results (3) that have a content_type method:text/x-moz-place +ok 575 - $firefox->search_bookmark() returns results (3) that have a title method:PAUSE: The CPAN back stage entrance +ok 576 - $firefox->search_bookmark() returns results (3) that have a parent_guid method:toolbar_____ +ok 577 - Deleting this bookmark +ok 578 - $firefox->search_bookmark() returns results (4) that have a type method:1 +ok 579 - $firefox->search_bookmark() returns results (4) that have a guid method:JTBNJdLPdYhk +ok 580 - $firefox->search_bookmark() returns results (4) that have a url method:https://github.com/david-dick/firefox-marionette +ok 581 - $firefox->search_bookmark() returns results (4) that have a content_type method:text/x-moz-place +ok 582 - $firefox->search_bookmark() returns results (4) 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 583 - $firefox->search_bookmark() returns results (4) that have a icon_url method:fake-favicon-uri:https://github.com/david-dick/firefox-marionette +ok 584 - $firefox->search_bookmark() returns results (4) that have a icon method that is :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 +ok 585 - $firefox->search_bookmark() returns results (4) that have a parent_guid method:menu________ +ok 586 - Deleting this bookmark +ok 587 - $firefox->search_bookmark() returns results (5) that have a type method:3 +ok 588 - $firefox->search_bookmark() returns results (5) that have a guid method:zCZX0_5lBXTS +ok 589 - $firefox->search_bookmark() returns results (5) that have a content_type method:text/x-moz-place-separator +ok 590 - $firefox->search_bookmark() returns results (5) that have a parent_guid method:menu________ +ok 591 - Deleting this bookmark +ok 592 - $firefox->search_bookmark() returns results (6) that have a type method:1 +ok 593 - $firefox->search_bookmark() returns results (6) that have a guid method:bZbedzEdrOnQ +ok 594 - $firefox->search_bookmark() returns results (6) that have a url method:https://duckduckgo.com/?va=v&t=ha&q=perl+%F0%9F%90%AB&ia=web +ok 595 - $firefox->search_bookmark() returns results (6) that have a content_type method:text/x-moz-place +ok 596 - $firefox->search_bookmark() returns results (6) that have a title method:perl 🐫 at DuckDuckGo +ok 597 - $firefox->search_bookmark() returns results (6) that have a icon_url method:https://duckduckgo.com/favicon.ico +ok 598 - $firefox->search_bookmark() returns results (6) that have a icon method that is :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= +ok 599 - $firefox->search_bookmark() returns results (6) that have a parent_guid method:eZlh-ztIYBne +ok 600 - Deleting this bookmark +ok 601 - $firefox->search_bookmark() returns results (7) that have a type method:2 +ok 602 - $firefox->search_bookmark() returns results (7) that have a guid method:eZlh-ztIYBne +ok 603 - $firefox->search_bookmark() returns results (7) that have a content_type method:text/x-moz-place-container +ok 604 - $firefox->search_bookmark() returns results (7) that have a title method:Searches +ok 605 - $firefox->search_bookmark() returns results (7) that have a parent_guid method:menu________ +ok 606 - Deleting this bookmark +ok 607 - $firefox->search_bookmark() returns results (8) that have a type method:1 +ok 608 - $firefox->search_bookmark() returns results (8) that have a guid method:XiZLcg8n_B4A +ok 609 - $firefox->search_bookmark() returns results (8) that have a url method:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 +ok 610 - $firefox->search_bookmark() returns results (8) that have a content_type method:text/x-moz-place +ok 611 - $firefox->search_bookmark() returns results (8) that have a title method:Firefox-Marionette-1.38 - Automate the Firefox browser with the Marionette protocol - metacpan.org +ok 612 - $firefox->search_bookmark() returns results (8) that have a icon_url method:fake-favicon-uri:https://metacpan.org/release/DDICK/Firefox-Marionette-1.38 +ok 613 - $firefox->search_bookmark() returns results (8) that have a icon method that is :data:image/png;base64,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 +ok 614 - $firefox->search_bookmark() returns results (8) that have a parent_guid method:ExAzkxs5efkR +ok 615 - Deleting this bookmark +ok 616 - $firefox->search_bookmark() returns results (9) that have a type method:2 +ok 617 - $firefox->search_bookmark() returns results (9) that have a guid method:ExAzkxs5efkR +ok 618 - $firefox->search_bookmark() returns results (9) that have a content_type method:text/x-moz-place-container +ok 619 - $firefox->search_bookmark() returns results (9) that have a title method:CPAN +ok 620 - $firefox->search_bookmark() returns results (9) that have a parent_guid method:menu________ +ok 621 - Deleting this bookmark +ok 622 - $firefox->search_bookmark() returns results (10) that have a type method:2 +ok 623 - $firefox->search_bookmark() returns results (10) that have a guid method:mobile______ +ok 624 - $firefox->search_bookmark() returns results (10) that have a content_type method:text/x-moz-place-container +ok 625 - $firefox->search_bookmark() returns results (10) that have a title method:mobile +ok 626 - $firefox->search_bookmark() returns results (10) that have a parent_guid method:root________ +ok 627 - $firefox->search_bookmark() returns results (11) that have a type method:2 +ok 628 - $firefox->search_bookmark() returns results (11) that have a guid method:unfiled_____ +ok 629 - $firefox->search_bookmark() returns results (11) that have a content_type method:text/x-moz-place-container +ok 630 - $firefox->search_bookmark() returns results (11) that have a title method:unfiled +ok 631 - $firefox->search_bookmark() returns results (11) that have a parent_guid method:root________ +ok 632 - $firefox->search_bookmark() returns results (12) that have a type method:2 +ok 633 - $firefox->search_bookmark() returns results (12) that have a guid method:tags________ +ok 634 - $firefox->search_bookmark() returns results (12) that have a content_type method:text/x-moz-place-container +ok 635 - $firefox->search_bookmark() returns results (12) that have a title method:tags +ok 636 - $firefox->search_bookmark() returns results (12) that have a parent_guid method:root________ +ok 637 - $firefox->search_bookmark() returns results (13) that have a type method:2 +ok 638 - $firefox->search_bookmark() returns results (13) that have a guid method:toolbar_____ +ok 639 - $firefox->search_bookmark() returns results (13) that have a content_type method:text/x-moz-place-container +ok 640 - $firefox->search_bookmark() returns results (13) that have a title method:toolbar +ok 641 - $firefox->search_bookmark() returns results (13) that have a parent_guid method:root________ +ok 642 - $firefox->search_bookmark() returns results (14) that have a type method:2 +ok 643 - $firefox->search_bookmark() returns results (14) that have a guid method:menu________ +ok 644 - $firefox->search_bookmark() returns results (14) that have a content_type method:text/x-moz-place-container +ok 645 - $firefox->search_bookmark() returns results (14) that have a title method:menu +ok 646 - $firefox->search_bookmark() returns results (14) that have a parent_guid method:root________ +ok 647 - $firefox->search_bookmark('https://metacpan.org/') produces more than 7 results:14 +ok 648 - Firefox::Marionette::Bookmark->new() produces a new bookmark +ok 649 - Firefox::Marionette::Bookmark->new()->url() returns a URI::URL object +ok 650 - Firefox::Marionette::Bookmark->new()->url() returns 'https://metacpan.org/' as a string +ok 651 - Firefox::Marionette::Bookmark->new()->icon_url() returns a URI::URL object +ok 652 - Firefox::Marionette::Bookmark->new()->icon_url() returns 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette' as a string +ok 653 - Firefox::Marionette::Bookmark->new()->icon() returns a URI::data object +ok 654 - Firefox::Marionette::Bookmark->new()->icon() returns 'data:image/png;base64,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' as a string +ok 655 - Firefox::Marionette::Bookmark->new() produces a new bookmark +ok 656 - Firefox::Marionette::Bookmark->new()->title() returns 'Meta Cpan for the win!' as a string +ok 657 - Firefox::Marionette::Bookmark->new()->url() returns a URI::URL object +ok 658 - Firefox::Marionette::Bookmark->new()->url() returns 'https://metacpan.org/' as a string +ok 659 - Firefox::Marionette::Bookmark->new()->icon_url() returns a URI::URL object +ok 660 - Firefox::Marionette::Bookmark->new()->icon_url() returns 'fake-favicon-uri:https://metacpan.org/pod/Firefox::Marionette' as a string +ok 661 - Firefox::Marionette::Bookmark->new()->icon() returns a URI::data object +ok 662 - Firefox::Marionette::Bookmark->new()->icon() returns 'data:image/png;base64,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' as a string +ok 663 - Firefox::Marionette::Bookmark->new()->type() returns a bookmark if a url and title is supplied +ok 664 - Firefox::Marionette::Bookmark->new()->content_type() returns 'text/x-moz-place' if a url and title is supplied +ok 665 - Firefox::Marionette::Bookmark->new()->title() returns the supplied title +ok 666 - Firefox::Marionette::Bookmark->new()->type() returns a folder if a title is supplied, with no url +ok 667 - Firefox::Marionette::Bookmark->new()->content_type() returns 'text/x-moz-place-container' if a title is supplied, with no url +ok 668 - Firefox::Marionette::Bookmark->new() produces a new bookmark with an unknown type of 4 +ok 669 - If a bookmark does not have a known type, it does not have a content type +ok 670 - Bookmark with bad parameters can be turned into JSON:{"parentGuid":"menu________","type":4} +ok 671 - Exception correctly thrown when trying to import a truncated bookmarks file of /build/reproducible-path/libfirefox-marionette-perl-1.68/t/data/bookmarks_truncated.html:Unrecognised format for bookmark import at t/01-marionette.t line 2446 +ok 672 - There is no defined type if a bookmark is created with no parameters +ok 673 - There is no defined content_type if a bookmark is created with no parameters +ok 674 - Firefox::Marionette::Bookmark::BOOKMARK() == BOOKMARK() after Firefox::Marionette::Bookmark->import(:all) +ok 675 - Firefox::Marionette::Bookmark::FOLDER() == FOLDER() after Firefox::Marionette::Bookmark->import(:all) +ok 676 - Firefox::Marionette::Bookmark::SEPARATOR() == SEPARATOR() after Firefox::Marionette::Bookmark->import(:all) +ok 677 - Firefox::Marionette::Bookmark::MENU() eq MENU() after Firefox::Marionette::Bookmark->import(:all) +ok 678 - Firefox::Marionette::Bookmark::ROOT() eq ROOT() after Firefox::Marionette::Bookmark->import(:all) +ok 679 - Firefox::Marionette::Bookmark::TOOLBAR() eq TOOLBAR() after Firefox::Marionette::Bookmark->import(:all) +ok 680 - Firefox::Marionette::Bookmark::TAGS() eq TAGS() after Firefox::Marionette::Bookmark->import(:all) +ok 681 - Firefox::Marionette::Bookmark::UNFILED() eq UNFILED() after Firefox::Marionette::Bookmark->import(:all) +ok 682 - Retrieved browser.history.maxStateObjectSize as a number '16777216' +ok 683 - $firefox->set_pref correctly returns itself for chaining and set 'browser.history.maxStateObjectSize' to '4321' +ok 684 - Retrieved browser.history.maxStateObjectSize which was equal to the previous setting of '4321' +ok 685 - $firefox->set_pref correctly returns itself for chaining and set 'browser.history.maxStateObjectSize' to the original '16777216' +ok 686 - Retrieved browser.history.maxStateObjectSize as a number '16777216' which was equal to the original setting of '16777216' +ok 687 - Retrieved browser.display.use_system_colors as a boolean '0', and set it as true +ok 688 - $firefox->set_pref correctly returns itself for chaining and set 'browser.display.use_system_colors' to 'true' +ok 689 - Retrieved browser.display.use_system_colors as true '1' +ok 690 - $firefox->set_pref correctly returns itself for chaining and set 'browser.display.use_system_colors' to 'false' +ok 691 - Retrieved browser.display.use_system_colors as false '0' +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:1945606' +ok 696 - Returned browser.no_such_key as a string 'Can't be real:1945606' +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' +ok 700 - Retrieved browser.active_color as a string '\#FFFFFF' which was equal to the new setting of '\#FFFFFF' +ok 701 - $firefox->clear_pref correctly returns itself for chaining and cleared 'browser.active_color' +ok 702 - Retrieved browser.active_color as a string '\#EE0000' which was equal to the original string of '\#EE0000' +ok 703 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object +ok 704 # skip Skipping network tests +ok 705 # skip Skipping network tests +[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_vpHbOEFvPSk +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 --kh4pmSX9Ui 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 +ok 714 - Retrieved the correct bookmark +ok 715 - Total number of bookmarks found when searching by (url => URI->new('https://metacpan.org/')) is 1:1 +ok 716 - Retrieved the correct bookmark +ok 717 - Total number of bookmarks found when searching by title is 1:1 +ok 718 - Retrieved the correct bookmark +ok 719 - Total number of bookmarks found when searching by (title => 'This is MetaCPAN!') is 1:1 +ok 720 - $firefox->logins() has no entries:0 +ok 721 - $firefox->capabilities() returns a Firefox::Marionette::Capabilities object +ok 722 - $capabilities->accept_insecure_certs() is false +[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_Cesp8r3A4nL +ok 724 # skip +ok 725 # skip +ok 726 # skip +ok 727 # skip +ok 728 # skip +ok 729 # skip +ok 730 # skip +ok 731 # skip +ok 732 # skip +ok 733 # skip +ok 734 # skip +ok 735 # skip +ok 736 # skip +ok 737 # skip +ok 738 # skip +ok 739 # skip +ok 740 # skip +ok 741 # skip +ok 742 # skip +ok 743 # skip +ok 744 # skip +ok 745 # skip +ok 746 # skip +ok 747 # skip +ok 748 # skip +ok 749 # skip +ok 750 # skip +ok 751 # skip +ok 752 # skip +ok 753 # skip +ok 754 # skip +ok 755 # skip +ok 756 # skip +ok 757 # skip +ok 758 # skip +ok 759 # skip +ok 760 # skip +ok 761 # skip +ok 762 # skip +ok 763 # skip +ok 764 # skip +ok 765 # skip +ok 766 # skip +ok 767 # skip +ok 768 # skip +ok 769 # skip +ok 770 # skip +ok 771 # skip +ok 772 # skip +ok 773 # skip +ok 774 # skip +ok 775 # skip +ok 776 # skip +ok 777 # skip +ok 778 # skip +ok 779 # skip +ok 780 # skip +ok 781 # skip +ok 782 # skip +ok 783 # skip +ok 784 # skip +ok 785 # skip +ok 786 # skip +ok 787 # skip +ok 788 # skip +ok 789 # skip +ok 790 # skip +ok 791 # skip +ok 792 # skip +ok 793 # skip +ok 794 # skip +ok 795 # skip +ok 796 # skip +ok 797 # skip +ok 798 # skip +ok 799 # skip +ok 800 # skip +ok 801 # skip +ok 802 # skip +ok 803 # skip +ok 804 # skip +ok 805 # skip +ok 806 # skip +ok 807 # skip +ok 808 # skip +ok 809 # skip +ok 810 # skip +ok 811 # skip +ok 812 # skip +ok 813 # skip +ok 814 # skip +ok 815 # skip +ok 816 # skip +ok 817 # skip +ok 818 # skip +ok 819 # skip +ok 820 # skip +ok 821 # skip +ok 822 # skip +ok 823 # skip +ok 824 # skip +ok 825 # skip +ok 826 # skip +ok 827 # skip +ok 828 # skip +ok 829 # skip +ok 830 # skip +ok 831 # skip +ok 832 # skip +ok 833 # skip +ok 834 # skip +ok 835 # skip +ok 836 # skip +ok 837 # skip +ok 838 # skip +ok 839 # skip +ok 840 # skip +ok 841 # skip +ok 842 # skip +ok 843 # skip +ok 844 # skip +ok 845 # skip +ok 846 # skip +ok 847 # skip +ok 848 # skip +ok 849 # skip +ok 850 # skip +ok 851 # skip +ok 852 # skip +ok 853 # skip +ok 854 # skip +ok 855 # skip +ok 856 # skip +ok 857 # skip +ok 858 # skip +ok 859 # skip +ok 860 # skip +ok 861 # skip +ok 862 # skip +ok 863 # skip +ok 864 # skip +ok 865 # skip +ok 866 # skip +ok 867 # skip +ok 868 # skip +ok 869 # skip +ok 870 # skip +ok 871 # skip +ok 872 # skip +ok 873 # skip +ok 874 # skip +ok 875 # skip +ok 876 # skip +ok 877 # skip +ok 878 # skip +ok 879 # skip +ok 880 # skip +ok 881 # skip +ok 882 # skip +ok 883 # skip +ok 884 # skip +ok 885 # skip +ok 886 # skip +ok 887 # skip +ok 888 # skip +ok 889 # skip +ok 890 # skip +ok 891 # skip +ok 892 # skip +ok 893 # skip +ok 894 # skip +ok 895 # skip +ok 896 # skip +ok 897 # skip +ok 898 # skip +ok 899 # skip +ok 900 # skip +ok 901 # skip +ok 902 # skip +ok 903 # skip +ok 904 # skip +ok 905 # skip +ok 906 # skip +ok 907 # skip +ok 908 # skip +ok 909 # skip +ok 910 # skip +ok 911 # skip +ok 912 # skip +ok 913 # skip +ok 914 # skip +ok 915 # skip +ok 916 # skip +ok 917 # skip +ok 918 # skip +ok 919 # skip +ok 920 # skip +ok 921 # skip +ok 922 # skip +ok 923 # skip +ok 924 # skip +ok 925 # skip +ok 926 # skip +ok 927 # skip +ok 928 # skip +ok 929 # skip +ok 930 # skip +ok 931 # skip +ok 932 # skip +ok 933 # skip +ok 934 # skip +ok 935 # skip +ok 936 # skip +ok 937 # skip +ok 938 # skip +ok 939 # skip +ok 940 # skip +ok 941 # skip +ok 942 # skip +ok 943 # skip +ok 944 # skip +ok 945 # skip +ok 946 # skip +ok 947 # skip +ok 948 # skip +ok 949 # skip +ok 950 # skip +ok 951 # skip +ok 952 # skip +ok 953 # skip +ok 954 # skip +ok 955 # skip +ok 956 # skip +ok 957 # skip +ok 958 # skip +ok 959 # skip +ok 960 # skip +ok 961 # skip +ok 962 # skip +ok 963 # skip +ok 964 # skip +ok 965 # skip +ok 966 # skip +ok 967 # skip +ok 968 # skip +ok 969 # skip +ok 970 # skip +[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_15hPhMXaHs6 +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:078c69413610815a7e5cce8452a4c1c0da0af4f7@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 +ok 980 - $geo5->longitude() has changed after a call to $firefox->geo(latitude => -37.123, longitude => 144.456):144.456 +ok 981 - Correctly retrieved JSON document +ok 982 - Correctly parsed JSON document +ok 983 - Correctly parsed UTF-8 JSON field +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 1953304 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 +ok 991 - $firefox->send_alert_text() sends alert text: +ok 992 - $firefox->accept_dialog() accepts the dialog box: +ok 993 - Firefox has closed with an exit status of 0:0 +ok 994 # skip Skipping b/c proxy seems to cause hangs +ok 995 # skip Skipping b/c proxy seems to cause hangs +ok 996 # skip Skipping b/c proxy seems to cause hangs +ok 997 # skip Skipping b/c proxy seems to cause hangs +ok 998 # skip Skipping b/c proxy seems to cause hangs +ok 999 # skip Skipping b/c proxy seems to cause hangs +ok 1000 # skip Skipping b/c proxy seems to cause hangs +ok 1001 # skip Skipping b/c proxy seems to cause hangs +ok 1002 # skip Skipping b/c proxy seems to cause hangs +ok 1003 # skip Skipping b/c proxy seems to cause hangs +ok 1004 # skip Skipping b/c proxy seems to cause hangs +ok 1005 # skip Skipping b/c proxy seems to cause hangs +ok 1006 # skip Skipping b/c proxy seems to cause hangs +ok 1007 # skip Skipping b/c proxy seems to cause hangs +ok 1008 # skip Skipping b/c proxy seems to cause hangs +ok 1009 # skip Skipping b/c proxy seems to cause hangs +ok 1010 # skip Skipping b/c proxy seems to cause hangs +ok 1011 # skip Skipping b/c proxy seems to cause hangs +ok 1012 # skip Skipping b/c proxy seems to cause hangs +ok 1013 # skip Skipping b/c proxy seems to cause hangs +ok 1014 # skip Skipping b/c proxy seems to cause hangs +ok 1015 # skip Skipping b/c proxy seems to cause hangs +ok 1016 # skip Skipping b/c proxy seems to cause hangs +ok 1017 # skip Skipping b/c proxy seems to cause hangs +ok 1018 # skip Skipping b/c proxy seems to cause hangs +ok 1019 # skip Skipping b/c proxy seems to cause hangs +ok 1020 # skip Skipping b/c proxy seems to cause hangs +ok 1021 # skip Skipping b/c proxy seems to cause hangs +ok 1022 # skip Skipping b/c proxy seems to cause hangs +ok 1023 # skip Skipping b/c proxy seems to cause hangs +ok 1024 # skip Skipping b/c proxy seems to cause hangs +ok 1025 # skip Skipping b/c proxy seems to cause hangs +ok 1026 # skip Skipping b/c proxy seems to cause hangs +ok 1027 # skip Skipping b/c proxy seems to cause hangs +ok 1028 # skip Skipping b/c proxy seems to cause hangs +ok 1029 # skip Skipping b/c proxy seems to cause hangs +ok 1030 # skip Skipping b/c proxy seems to cause hangs +ok 1031 # skip Skipping b/c proxy seems to cause hangs +ok 1032 # skip Skipping b/c proxy seems to cause hangs +ok 1033 # skip Skipping b/c proxy seems to cause hangs +ok 1034 # skip Skipping b/c proxy seems to cause hangs +ok 1035 # skip Skipping b/c proxy seems to cause hangs +ok 1036 # skip Skipping b/c proxy seems to cause hangs +ok 1037 # skip Skipping b/c proxy seems to cause hangs +ok 1038 # skip Skipping b/c proxy seems to cause hangs +ok 1039 # skip Skipping b/c proxy seems to cause hangs +ok 1040 # skip Skipping b/c proxy seems to cause hangs +ok 1041 # skip Skipping b/c proxy seems to cause hangs +ok 1042 # skip Skipping b/c proxy seems to cause hangs +ok 1043 # skip Skipping b/c proxy seems to cause hangs +ok 1044 # skip Skipping b/c proxy seems to cause hangs +ok 1045 # skip Skipping b/c proxy seems to cause hangs +ok 1046 # skip Skipping b/c proxy seems to cause hangs +ok 1047 # skip Skipping b/c proxy seems to cause hangs +ok 1048 # skip Skipping b/c proxy seems to cause hangs +ok 1049 # skip Skipping b/c proxy seems to cause hangs +ok 1050 # skip Skipping b/c proxy seems to cause hangs +ok 1051 # skip Skipping b/c proxy seems to cause hangs +[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_FNTj2D0OR5T +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 +ok 1056 - Firefox::Marionette doesn't alter the exit code of the parent process if it isn't closed cleanly +ok 1057 - Firefox::Marionette doesn't alter the exit code of the parent process if it is 'undefed' +ok 1058 - Specified profile names work +ok 1059 - At least one firefox start worked +ok 1060 - File::Temp::newdir is redefined to fail: +ok 1061 - When File::Temp::newdir is forced to fail, a Firefox::Marionette::Exception is thrown:Failed to create temporary directory:Permission denied at t/01-marionette.t line 5472 +1..1061 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_giA2riz4OQJ/profile --no-remote --new-instance -[289678] Sandbox: CanCreateUserNamespace() clone() failure: EPERM +** firefox -marionette -remote-allow-system-access -safe-mode -headless -profile /tmp/firefox_marionette_local_rFvsAw5Brz4/profile --no-remote --new-instance +[1955154] Sandbox: CanCreateUserNamespace() clone() failure: EPERM *** You are running in headless mode. << 50:{"applicationType":"gecko","marionetteProtocol":3} >> 73:[0,1,"WebDriver:NewSession",{"capabilities":{"requiredCapabilities":{}}}] -<< 766:[1,1,null,{"sessionId":"8a031af5-2150-4abc-bbd7-20da57f7a5ff","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":289678,"moz:profile":"/tmp/firefox_marionette_local_giA2riz4OQJ/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":{}}}] +<< 767:[1,1,null,{"sessionId":"3c1a2c8e-8985-42a3-be56-d8917b1a21cc","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":1955154,"moz:profile":"/tmp/firefox_marionette_local_rFvsAw5Brz4/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":"MDgZiWqZeF_47YyFjDxGePjeIG6YQOMfAKNu6ra9UVU"}] +<< 66:[1,2,null,{"value":"AP6MwcXelcNvffaXSiZHNl9kdsdSWBM-xCv3T-vj_40"}] >> 50:[0,3,"Marionette:Quit",{"flags":["eAttemptQuit"]}] << 60:[1,3,null,{"cause":"shutdown","forced":false,"in_app":true}] t/02-taint.t .......... @@ -2522,9 +9545,9 @@ Test Summary Report ------------------- -t/01-marionette.t (Wstat: 0 Tests: 470 Failed: 0) +t/01-marionette.t (Wstat: 0 Tests: 1061 Failed: 0) TODO passed: 55 -Files=22, Tests=473, 225 wallclock secs ( 0.11 usr 0.05 sys + 26.78 cusr 18.30 csys = 45.24 CPU) +Files=22, Tests=1064, 74 wallclock secs ( 0.39 usr 0.20 sys + 82.87 cusr 22.67 csys = 106.13 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' @@ -2541,42 +9564,42 @@ Installing /build/reproducible-path/libfirefox-marionette-perl-1.68/debian/libfirefox-marionette-perl/usr/share/perl5/Waterfox/Marionette.pm 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/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/WebFrame.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/Image.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/Timeouts.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/Element.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/Capabilities.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/Bookmark.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/Keys.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/LocalObject.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/Certificate.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/Buttons.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/Link.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/ShadowRoot.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/Profile.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/Response.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/Image.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/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/Element.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/Display.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/WebAuthn/Authenticator.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/Window/Rect.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/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/Extension/Stealth.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/StaleElement.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/Exception/NotFound.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/Response.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/NoSuchAlert.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 @@ -2621,17 +9644,17 @@ 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/firefox-passwords -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/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/ssh-auth-cmd-marionette 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/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/ca-bundle-for-firefox' -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 '/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/firefox-passwords' 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' @@ -2662,12 +9685,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/1938949/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/1938949/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/254159 and its subdirectories -I: Current time: Thu Oct 9 23:35:57 -12 2025 -I: pbuilder-time-stamp: 1760096157 +I: removing directory /srv/workspace/pbuilder/1938949 and its subdirectories +I: Current time: Fri Nov 13 08:01:12 +14 2026 +I: pbuilder-time-stamp: 1794506472