tbb-commits
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 19464 discussions
[Git][tpo/applications/torbrowser-launcher][main] Allow the Wayland Proxy to run
by boklm (@boklm) 07 Nov '24
by boklm (@boklm) 07 Nov '24
07 Nov '24
boklm pushed to branch main at The Tor Project / Applications / torbrowser-launcher
Commits:
63962618 by anonym at 2024-11-07T10:07:22+01:00
Allow the Wayland Proxy to run
Details: https://mastransky.wordpress.com/2023/12/22/wayland-proxy-load-balancer/
- - - - -
1 changed file:
- apparmor/torbrowser.Browser.firefox
Changes:
=====================================
apparmor/torbrowser.Browser.firefox
=====================================
@@ -137,6 +137,11 @@ profile torbrowser_firefox @{torbrowser_firefox_executable} {
# Required for Wayland display protocol support
owner /dev/shm/wayland.mozilla.ipc.[0-9]* rw,
+ # The Wayland Proxy prevents certain types of Wayland issues from
+ # crashing the client application. Details:
+ # https://mastransky.wordpress.com/2023/12/22/wayland-proxy-load-balancer/
+ owner @{run}/user/[0-9]*/wayland-proxy-@{pid} rw,
+
# Silence denial logs about permissions we don't need
deny @{HOME}/.cache/fontconfig/ rw,
deny @{HOME}/.cache/fontconfig/** rw,
View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/commit…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser-update-responses][main] alpha: new version, 14.0a10
by morgan (@morgan) 01 Nov '24
by morgan (@morgan) 01 Nov '24
01 Nov '24
morgan pushed to branch main at The Tor Project / Applications / mullvad-browser-update-responses
Commits:
00b72352 by Morgan at 2024-11-01T16:55:50+00:00
alpha: new version, 14.0a10
- - - - -
29 changed files:
- update_1/alpha/.htaccess
- + update_1/alpha/14.0a10-linux-x86_64-ALL.xml
- + update_1/alpha/14.0a10-macos-ALL.xml
- + update_1/alpha/14.0a10-windows-x86_64-ALL.xml
- − update_1/alpha/14.0a6-14.0a9-linux-x86_64-ALL.xml
- − update_1/alpha/14.0a6-14.0a9-macos-ALL.xml
- − update_1/alpha/14.0a6-14.0a9-windows-x86_64-ALL.xml
- + update_1/alpha/14.0a7-14.0a10-linux-x86_64-ALL.xml
- + update_1/alpha/14.0a7-14.0a10-macos-ALL.xml
- + update_1/alpha/14.0a7-14.0a10-windows-x86_64-ALL.xml
- − update_1/alpha/14.0a7-14.0a9-linux-x86_64-ALL.xml
- − update_1/alpha/14.0a7-14.0a9-macos-ALL.xml
- − update_1/alpha/14.0a7-14.0a9-windows-x86_64-ALL.xml
- + update_1/alpha/14.0a8-14.0a10-linux-x86_64-ALL.xml
- + update_1/alpha/14.0a8-14.0a10-macos-ALL.xml
- + update_1/alpha/14.0a8-14.0a10-windows-x86_64-ALL.xml
- − update_1/alpha/14.0a8-14.0a9-linux-x86_64-ALL.xml
- − update_1/alpha/14.0a8-14.0a9-macos-ALL.xml
- − update_1/alpha/14.0a8-14.0a9-windows-x86_64-ALL.xml
- + update_1/alpha/14.0a9-14.0a10-linux-x86_64-ALL.xml
- + update_1/alpha/14.0a9-14.0a10-macos-ALL.xml
- + update_1/alpha/14.0a9-14.0a10-windows-x86_64-ALL.xml
- − update_1/alpha/14.0a9-linux-x86_64-ALL.xml
- − update_1/alpha/14.0a9-macos-ALL.xml
- − update_1/alpha/14.0a9-windows-x86_64-ALL.xml
- update_1/alpha/download-linux-x86_64.json
- update_1/alpha/download-macos.json
- update_1/alpha/download-windows-x86_64.json
- update_1/alpha/downloads.json
Changes:
=====================================
update_1/alpha/.htaccess
=====================================
@@ -1,22 +1,22 @@
RewriteEngine On
-RewriteRule ^[^/]+/14.0a9/ no-update.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/14.0a6/ALL 14.0a6-14.0a9-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/14.0a7/ALL 14.0a7-14.0a9-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/14.0a8/ALL 14.0a8-14.0a9-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 14.0a9-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/ 14.0a9-linux-x86_64-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/14.0a6/ALL 14.0a6-14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/14.0a7/ALL 14.0a7-14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/14.0a8/ALL 14.0a8-14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/ 14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/14.0a6/ALL 14.0a6-14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/14.0a7/ALL 14.0a7-14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/14.0a8/ALL 14.0a8-14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 14.0a9-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/ 14.0a9-macos-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/14.0a6/ALL 14.0a6-14.0a9-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/14.0a7/ALL 14.0a7-14.0a9-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/14.0a8/ALL 14.0a8-14.0a9-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 14.0a9-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/ 14.0a9-windows-x86_64-ALL.xml [last]
+RewriteRule ^[^/]+/14.0a10/ no-update.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/14.0a7/ALL 14.0a7-14.0a10-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/14.0a8/ALL 14.0a8-14.0a10-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/14.0a9/ALL 14.0a9-14.0a10-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 14.0a10-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/ 14.0a10-linux-x86_64-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/14.0a7/ALL 14.0a7-14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/14.0a8/ALL 14.0a8-14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/14.0a9/ALL 14.0a9-14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/ 14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/14.0a7/ALL 14.0a7-14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/14.0a8/ALL 14.0a8-14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/14.0a9/ALL 14.0a9-14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 14.0a10-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/ 14.0a10-macos-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/14.0a7/ALL 14.0a7-14.0a10-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/14.0a8/ALL 14.0a8-14.0a10-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/14.0a9/ALL 14.0a9-14.0a10-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 14.0a10-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/ 14.0a10-windows-x86_64-ALL.xml [last]
=====================================
update_1/alpha/14.0a10-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…" size="114129405" type="complete"></patch></update></updates>
=====================================
update_1/alpha/14.0a10-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10_ALL.m…" size="129200778" type="complete"></patch></update></updates>
=====================================
update_1/alpha/14.0a10-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…" size="97553244" type="complete"></patch></update></updates>
=====================================
update_1/alpha/14.0a6-14.0a9-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9_…" size="114019445" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64--14.0a6…" size="9429081" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a6-14.0a9-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9_ALL.mar" size="129063226" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos--14.0a6-14.0a9…" size="14397074" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a6-14.0a9-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…" size="95007704" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64--14.0…" size="9768332" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a7-14.0a10-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…" size="114129405" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64--14.0a…" size="10956214" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a7-14.0a10-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10_ALL.m…" size="129200778" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos--14.0a7-14.0a…" size="16734321" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a7-14.0a10-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…" size="97553244" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64--14.…" size="15099219" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a7-14.0a9-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9_…" size="114019445" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64--14.0a7…" size="6282441" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a7-14.0a9-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9_ALL.mar" size="129063226" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos--14.0a7-14.0a9…" size="9540109" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a7-14.0a9-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…" size="95007704" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64--14.0…" size="5978110" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a8-14.0a10-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…" size="114129405" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64--14.0a…" size="8395504" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a8-14.0a10-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10_ALL.m…" size="129200778" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos--14.0a8-14.0a…" size="14072348" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a8-14.0a10-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…" size="97553244" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64--14.…" size="12468369" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a8-14.0a9-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9_…" size="114019445" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64--14.0a8…" size="3392543" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a8-14.0a9-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9_ALL.mar" size="129063226" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos--14.0a8-14.0a9…" size="6508272" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a8-14.0a9-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…" size="95007704" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64--14.0…" size="3304804" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a9-14.0a10-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…" size="114129405" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64--14.0a…" size="8388128" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a9-14.0a10-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10_ALL.m…" size="129200778" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos--14.0a9-14.0a…" size="14067444" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a9-14.0a10-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="14.0a10" appVersion="14.0a10" platformVersion="128.4.0" buildID="20241031194338" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a10" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…" size="97553244" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64--14.…" size="12458073" type="partial"></patch></update></updates>
=====================================
update_1/alpha/14.0a9-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9_…" size="114019445" type="complete"></patch></update></updates>
=====================================
update_1/alpha/14.0a9-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="19.0.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9_ALL.mar" size="129063226" type="complete"></patch></update></updates>
=====================================
update_1/alpha/14.0a9-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="14.0a9" appVersion="14.0a9" platformVersion="128.3.0" buildID="20241008203309" detailsURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/14.0a9" minSupportedOSVersion="10.0"><patch URL="https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…" size="95007704" type="complete"></patch></update></updates>
=====================================
update_1/alpha/download-linux-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9.…","git_tag":"mb-14.0a9-build1","sig":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9.…","version":"14.0a9"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…","git_tag":"mb-14.0a10-build1","sig":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…","version":"14.0a10"}
\ No newline at end of file
=====================================
update_1/alpha/download-macos.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9.dmg","git_tag":"mb-14.0a9-build1","sig":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9.dmg.asc","version":"14.0a9"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10.dmg","git_tag":"mb-14.0a10-build1","sig":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10.dmg.a…","version":"14.0a10"}
\ No newline at end of file
=====================================
update_1/alpha/download-windows-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…","git_tag":"mb-14.0a9-build1","sig":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…","version":"14.0a9"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…","git_tag":"mb-14.0a10-build1","sig":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…","version":"14.0a10"}
\ No newline at end of file
=====================================
update_1/alpha/downloads.json
=====================================
@@ -1 +1 @@
-{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9.…","sig":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-linux-x86_64-14.0a9.…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9.dmg","sig":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-macos-14.0a9.dmg.asc"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…","sig":"https://cdn.mullvad.net/browser/14.0a9/mullvad-browser-windows-x86_64-14.0a…"}}},"tag":"mb-14.0a9-build1","version":"14.0a9"}
\ No newline at end of file
+{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…","sig":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-linux-x86_64-14.0a1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10.dmg","sig":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-macos-14.0a10.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…","sig":"https://cdn.mullvad.net/browser/14.0a10/mullvad-browser-windows-x86_64-14.0…"}}},"tag":"mb-14.0a10-build1","version":"14.0a10"}
\ No newline at end of file
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-128.4.0esr-14.5-1] 4 commits: dropme! Bug 32308: Use direct browser sizing for letterboxing.
by Pier Angelo Vendrame (@pierov) 01 Nov '24
by Pier Angelo Vendrame (@pierov) 01 Nov '24
01 Nov '24
Pier Angelo Vendrame pushed to branch tor-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
385447ad by Pier Angelo Vendrame at 2024-10-31T19:10:50+01:00
dropme! Bug 32308: Use direct browser sizing for letterboxing.
Revert a couple of lines to make the backport easier.
- - - - -
4a33efb7 by hackademix at 2024-10-31T19:10:51+01:00
Bug 1556002 - Update initial window size and letterboxing stepping. r=tjr
Differential Revision: https://phabricator.services.mozilla.com/D226598
- - - - -
036aaa05 by Pier Angelo Vendrame at 2024-10-31T19:13:04+01:00
fixup! Bug 32308: Use direct browser sizing for letterboxing.
Restore our changes after backporting MozBug 1556002.
- - - - -
8a4eb9d3 by Pier Angelo Vendrame at 2024-10-31T19:13:50+01:00
fixup! Firefox preference overrides.
Remove our custom letterboxing size, since they are going to be also
Firefox's default one after MozBug 1556002.
- - - - -
6 changed files:
- browser/app/profile/001-base-profile.js
- browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
- browser/components/resistfingerprinting/test/browser/browser_roundedWindow_open_max_inner.js
- browser/components/resistfingerprinting/test/browser/head.js
- modules/libpref/init/StaticPrefList.yaml
- toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
Changes:
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -445,9 +445,6 @@ pref("privacy.resistFingerprinting.letterboxing.gradient", true);
pref("privacy.resistFingerprinting.letterboxing.rememberSize", false);
// tor-browser#41695: how many warnings we show if user closes them without restoring the window size
pref("privacy.resistFingerprinting.resizeWarnings", 3);
-// tor-browser#33282: new windows start at 1400x900 when there's enough screen space, otherwise down by 200x100 blocks
-pref("privacy.window.maxInnerWidth", 1400);
-pref("privacy.window.maxInnerHeight", 900);
// Enforce Network Information API as disabled
pref("dom.netinfo.enabled", false);
pref("network.http.referer.defaultPolicy", 2); // Bug 32948: Make referer behavior consistent regardless of private browing mode status
=====================================
browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
=====================================
@@ -53,8 +53,8 @@ function checkForDefaultSetting(
aRealHeight
) {
// We can get the rounded size by subtracting twice the margin.
- let targetWidth = aRealWidth - 2 * RFPHelper.steppedRange(aRealWidth);
- let targetHeight = aRealHeight - 2 * RFPHelper.steppedRange(aRealHeight);
+ let targetWidth = aRealWidth - 2 * RFPHelper.steppedSize(aRealWidth, true);
+ let targetHeight = aRealHeight - 2 * RFPHelper.steppedSize(aRealHeight);
// This platform-specific code is explained in the large comment below.
if (getPlatform() != "linux") {
=====================================
browser/components/resistfingerprinting/test/browser/browser_roundedWindow_open_max_inner.js
=====================================
@@ -4,23 +4,26 @@
* maximum values.
*/
+let targetWidth = Services.prefs.getIntPref("privacy.window.maxInnerWidth");
+let targetHeight = Services.prefs.getIntPref("privacy.window.maxInnerHeight");
+
OpenTest.run([
{
- settingWidth: 1025,
- settingHeight: 1050,
- targetWidth: 1000,
- targetHeight: 1000,
+ settingWidth: targetWidth + 25,
+ settingHeight: targetHeight + 50,
+ targetWidth,
+ targetHeight,
},
{
settingWidth: 9999,
settingHeight: 9999,
- targetWidth: 1000,
- targetHeight: 1000,
+ targetWidth,
+ targetHeight,
},
{
- settingWidth: 999,
- settingHeight: 999,
- targetWidth: 1000,
- targetHeight: 1000,
+ settingWidth: targetWidth - 1,
+ settingHeight: targetHeight - 1,
+ targetWidth,
+ targetHeight,
},
]);
=====================================
browser/components/resistfingerprinting/test/browser/head.js
=====================================
@@ -306,19 +306,28 @@ async function calcMaximumAvailSize(aChromeWidth, aChromeHeight) {
let availWidth = window.screen.availWidth;
let availHeight = window.screen.availHeight;
- // Ideally, we would round the window size as 1000x1000. But the available
- // screen space might not suffice. So, we decide the size according to the
- // available screen size.
- let availContentWidth = Math.min(1000, availWidth - chromeUIWidth);
+ // Ideally, we would round the window size as
+ // privacy.window.maxInnerWidth x privacy.window.maxInnerHeight. But the
+ // available screen space might not suffice. So, we decide the size according
+ // to the available screen size.
+ let maxInnerWidth = Services.prefs.getIntPref("privacy.window.maxInnerWidth");
+ let maxInnerHeight = Services.prefs.getIntPref(
+ "privacy.window.maxInnerHeight"
+ );
+
+ let availContentWidth = Math.min(maxInnerWidth, availWidth - chromeUIWidth);
let availContentHeight;
// If it is GTK window, we would consider the system decorations when we
// calculating avail content height since the system decorations won't be
// reported when we get available screen dimensions.
if (AppConstants.MOZ_WIDGET_GTK) {
- availContentHeight = Math.min(1000, -40 + availHeight - chromeUIHeight);
+ availContentHeight = Math.min(
+ maxInnerHeight,
+ -40 + availHeight - chromeUIHeight
+ );
} else {
- availContentHeight = Math.min(1000, availHeight - chromeUIHeight);
+ availContentHeight = Math.min(maxInnerHeight, availHeight - chromeUIHeight);
}
// Rounded the desire size to the nearest 200x100.
=====================================
modules/libpref/init/StaticPrefList.yaml
=====================================
@@ -14352,12 +14352,12 @@
- name: privacy.window.maxInnerWidth
type: int32_t
- value: 1000
+ value: 1400
mirror: always
- name: privacy.window.maxInnerHeight
type: int32_t
- value: 1000
+ value: 900
mirror: always
- name: privacy.sanitize.useOldClearHistoryDialog
=====================================
toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
=====================================
@@ -522,14 +522,14 @@ class _RFPHelper {
/**
* Given a width or height, rounds it with the proper stepping.
*/
- steppedSize(aDimension, isWidth = false) {
+ steppedSize(aDimension, aIsWidth = false) {
let stepping;
if (aDimension <= 50) {
return 0;
} else if (aDimension <= 500) {
stepping = 50;
} else if (aDimension <= 1600) {
- stepping = isWidth ? 200 : 100;
+ stepping = aIsWidth ? 200 : 100;
} else {
stepping = 200;
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/3f690c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/3f690c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build] Pushed new tag mb-14.0a10-build1
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed new tag mb-14.0a10-build1 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/mb-…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-14.0] 3 commits: Bug 41291 - Bump and patch mingw-w64-clang
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch maint-14.0 at The Tor Project / Applications / tor-browser-build
Commits:
94f1da7f by june wilde at 2024-10-31T19:18:40+00:00
Bug 41291 - Bump and patch mingw-w64-clang
- - - - -
60286499 by Morgan at 2024-10-31T19:34:02+00:00
Bug 41291: Only enable WebRTC mingw changes for alpha build in the maint-14.0 branch
- Revert this patch once Mullvad Browser 14.0 reaches stable
- - - - -
f9e2c4dd by Morgan at 2024-10-31T20:02:16+00:00
Bug 41263: Prepare Mullvad Browser Alpha 14.0a10
- - - - -
8 changed files:
- projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
- projects/browser/config
- projects/firefox/config
- projects/mingw-w64-clang/build
- projects/mingw-w64-clang/config
- + projects/mingw-w64-clang/mingw-webrtc.patch
- projects/translation/config
- rbm.conf
Changes:
=====================================
projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
=====================================
@@ -1,3 +1,40 @@
+Mullvad Browser 14.0a10 - November 01 2024
+ * All Platforms
+ * Updated Firefox to 128.4.0esr
+ * Updated NoScript to 11.5.0
+ * Bug 42356: Review 000-tor-browser.js and 001-base-profile.js for 128 [tor-browser]
+ * Bug 43134: Backport Bugzilla 1436226 Hardcode VP8/VP9 [tor-browser]
+ * Bug 43174: Issue with custom home page on local filesystem [tor-browser]
+ * Bug 43184: Backport Bugzilla 1922294: RFP: fixup square spoofed orientation [tor-browser]
+ * Bug 43209: UI freezes when clipboard is empty after screen lock [tor-browser]
+ * Bug 43217: Fullscreen videos have rounded letterboxing corners [tor-browser]
+ * Bug 43240: Backport security fixes from Firefox 132 [tor-browser]
+ * Windows
+ * Bug 373: Re-enable WebRTC for Windows builds [mullvad-browser]
+ * Linux
+ * Bug 43101: Security features warning links to Firefox installation support page with incomplete info [tor-browser]
+ * Bug 43196: Remove the vendor name from the "is playing media" notification on Linux [tor-browser]
+ * Build System
+ * All Platforms
+ * Bug 41273: relprep.py: bump Firefox and GV to a (yet) non-existing tag when the last one does not match HEAD [tor-browser-build]
+ * Bug 41274: Improve fetch_changelogs.py for major releases [tor-browser-build]
+ * Bug 41279: Add @pierov and @ma1 as new signers [tor-browser-build]
+ * Bug 41289: Fix single-browser in relprep.py [tor-browser-build]
+ * Windows
+ * Bug 41296: Implement missing Windows headers required for building cross-compiling WebRTC with mingw [tor-browser-build]
+ * Linux
+ * Bug 41243: Add own apparmor profile to deb package [tor-browser-build]
+ * Bug 41282: Add SSL to our custom Python for MozBug 1924022 [tor-browser-build]
+
+Mullvad Browser 13.5.9 - October 28 2024
+ * All Platforms
+ * Updated Firefox to 115.17.0esr
+ * Updated NoScript to 11.4.42
+ * Bug 43174: Issue with custom home page on local filesystem [tor-browser]
+ * Bug 43207: Backport Mozbug 1886222 [tor-browser]
+ * Bug 43240: Backport security fixes from Firefox 132 [tor-browser]
+ * Bug 41273: relprep.py: bump Firefox and GV to a (yet) non-existing tag when the last one does not match HEAD [tor-browser-build]
+
Mullvad Browser 14.0a9 - October 08 2024
* All Platforms
* Bug 43197: Disable automatic exception for HTTPS-First [tor-browser]
=====================================
projects/browser/config
=====================================
@@ -108,9 +108,9 @@ input_files:
enable: '[% ! c("var/android") %]'
- filename: Bundle-Data
enable: '[% ! c("var/android") %]'
- - URL: https://addons.mozilla.org/firefox/downloads/file/4363712/noscript-11.4.42.…
+ - URL: https://addons.mozilla.org/firefox/downloads/file/4377088/noscript-11.5.0.x…
name: noscript
- sha256sum: fd2d420afd93829bb6fe30ec6f8ba926d3d54d7583b8bbd822053b8cd13c0472
+ sha256sum: 999244c7be75e58fe16cb2880711013ca079822da1dab65e7eb375c1faf5baad
- URL: https://addons.mozilla.org/firefox/downloads/file/4359936/ublock_origin-1.6…
name: ublock-origin
sha256sum: e2cda9b2a1b0a7f6e5ef0da9f87f28df52f8560587ba2e51a3003121cfb81600
=====================================
projects/firefox/config
=====================================
@@ -107,7 +107,6 @@ targets:
gitlab_project: https://gitlab.torproject.org/tpo/applications/mullvad-browser
updater_url: 'https://cdn.mullvad.net/browser/update_responses/update_1/'
nightly_updates_publish_dir_prefix: mullvadbrowser-
- browser_build: 1
linux-x86_64:
var:
=====================================
projects/mingw-w64-clang/build
=====================================
@@ -89,6 +89,9 @@ EOF
patch -p1 < "$rootdir/mingw-dispatchqueue.patch"
patch -p1 < "$rootdir/mingw-ts_sd.patch"
patch -p1 < "$rootdir/mingw-composition.patch"
+ [% IF !c("var/release") %]
+ patch -p1 < "$rootdir/mingw-webrtc.patch"
+ [% END %]
cd $builddir/mingw-w64-clang/mingw-w64-headers
mkdir build && cd build
=====================================
projects/mingw-w64-clang/config
=====================================
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% pc("llvm-project", "version") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
git_url: https://git.code.sf.net/p/mingw-w64/mingw-w64
-git_hash: cd4cf9b279f8fb0815f8b9665d3cea60a30290bc
+git_hash: '[% IF c("var/release") %]cd4cf9b279f8fb0815f8b9665d3cea60a30290bc[% ELSE %]4ef04b0a7f7a20735de2f58b5c0496fcb4c7d191[% END -%]'
version: '[% c("abbrev") %]'
container:
use_container: 1
@@ -35,3 +35,5 @@ input_files:
- filename: mingw-dispatchqueue.patch
- filename: mingw-ts_sd.patch
- filename: mingw-composition.patch
+ - filename: mingw-webrtc.patch
+ enable: '[% !c("var/release") %]'
\ No newline at end of file
=====================================
projects/mingw-w64-clang/mingw-webrtc.patch
=====================================
@@ -0,0 +1,1727 @@
+diff --git a/mingw-w64-headers/include/weakreference.h b/mingw-w64-headers/include/weakreference.h
+new file mode 100644
+index 000000000..9776dd194
+--- /dev/null
++++ b/mingw-w64-headers/include/weakreference.h
+@@ -0,0 +1,218 @@
++/*** Autogenerated by WIDL 8.0 from include/weakreference.idl - Do not edit ***/
++
++#ifdef _WIN32
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 475
++#endif
++#include <rpc.h>
++#include <rpcndr.h>
++#endif
++
++#ifndef COM_NO_WINDOWS_H
++#include <windows.h>
++#include <ole2.h>
++#endif
++
++#ifndef __weakreference_h__
++#define __weakreference_h__
++
++#ifndef __WIDL_INLINE
++#if defined(__cplusplus) || defined(_MSC_VER)
++#define __WIDL_INLINE inline
++#elif defined(__GNUC__)
++#define __WIDL_INLINE __inline__
++#endif
++#endif
++
++/* Forward declarations */
++
++#ifndef __IWeakReference_FWD_DEFINED__
++#define __IWeakReference_FWD_DEFINED__
++typedef interface IWeakReference IWeakReference;
++#ifdef __cplusplus
++interface IWeakReference;
++#endif /* __cplusplus */
++#endif
++
++#ifndef __IWeakReferenceSource_FWD_DEFINED__
++#define __IWeakReferenceSource_FWD_DEFINED__
++typedef interface IWeakReferenceSource IWeakReferenceSource;
++#ifdef __cplusplus
++interface IWeakReferenceSource;
++#endif /* __cplusplus */
++#endif
++
++/* Headers for imported files */
++
++#include <inspectable.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*****************************************************************************
++ * IWeakReference interface
++ */
++#ifndef __IWeakReference_INTERFACE_DEFINED__
++#define __IWeakReference_INTERFACE_DEFINED__
++
++DEFINE_GUID(IID_IWeakReference, 0x00000037, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
++#if defined(__cplusplus) && !defined(CINTERFACE)
++MIDL_INTERFACE("00000037-0000-0000-c000-000000000046")
++IWeakReference : public IUnknown
++{
++ virtual HRESULT STDMETHODCALLTYPE Resolve(
++ REFIID riid,
++ IInspectable **objectReference) = 0;
++
++};
++#ifdef __CRT_UUID_DECL
++__CRT_UUID_DECL(IWeakReference, 0x00000037, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
++#endif
++#else
++typedef struct IWeakReferenceVtbl {
++ BEGIN_INTERFACE
++
++ /*** IUnknown methods ***/
++ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
++ IWeakReference *This,
++ REFIID riid,
++ void **ppvObject);
++
++ ULONG (STDMETHODCALLTYPE *AddRef)(
++ IWeakReference *This);
++
++ ULONG (STDMETHODCALLTYPE *Release)(
++ IWeakReference *This);
++
++ /*** IWeakReference methods ***/
++ HRESULT (STDMETHODCALLTYPE *Resolve)(
++ IWeakReference *This,
++ REFIID riid,
++ IInspectable **objectReference);
++
++ END_INTERFACE
++} IWeakReferenceVtbl;
++
++interface IWeakReference {
++ CONST_VTBL IWeakReferenceVtbl* lpVtbl;
++};
++
++#ifdef COBJMACROS
++#ifndef WIDL_C_INLINE_WRAPPERS
++/*** IUnknown methods ***/
++#define IWeakReference_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWeakReference_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWeakReference_Release(This) (This)->lpVtbl->Release(This)
++/*** IWeakReference methods ***/
++#define IWeakReference_Resolve(This,riid,objectReference) (This)->lpVtbl->Resolve(This,riid,objectReference)
++#else
++/*** IUnknown methods ***/
++static __WIDL_INLINE HRESULT IWeakReference_QueryInterface(IWeakReference* This,REFIID riid,void **ppvObject) {
++ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
++}
++static __WIDL_INLINE ULONG IWeakReference_AddRef(IWeakReference* This) {
++ return This->lpVtbl->AddRef(This);
++}
++static __WIDL_INLINE ULONG IWeakReference_Release(IWeakReference* This) {
++ return This->lpVtbl->Release(This);
++}
++/*** IWeakReference methods ***/
++static __WIDL_INLINE HRESULT IWeakReference_Resolve(IWeakReference* This,REFIID riid,IInspectable **objectReference) {
++ return This->lpVtbl->Resolve(This,riid,objectReference);
++}
++#endif
++#endif
++
++#endif
++
++
++#endif /* __IWeakReference_INTERFACE_DEFINED__ */
++
++/*****************************************************************************
++ * IWeakReferenceSource interface
++ */
++#ifndef __IWeakReferenceSource_INTERFACE_DEFINED__
++#define __IWeakReferenceSource_INTERFACE_DEFINED__
++
++DEFINE_GUID(IID_IWeakReferenceSource, 0x00000038, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
++#if defined(__cplusplus) && !defined(CINTERFACE)
++MIDL_INTERFACE("00000038-0000-0000-c000-000000000046")
++IWeakReferenceSource : public IUnknown
++{
++ virtual HRESULT STDMETHODCALLTYPE GetWeakReference(
++ IWeakReference **weakReference) = 0;
++
++};
++#ifdef __CRT_UUID_DECL
++__CRT_UUID_DECL(IWeakReferenceSource, 0x00000038, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
++#endif
++#else
++typedef struct IWeakReferenceSourceVtbl {
++ BEGIN_INTERFACE
++
++ /*** IUnknown methods ***/
++ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
++ IWeakReferenceSource *This,
++ REFIID riid,
++ void **ppvObject);
++
++ ULONG (STDMETHODCALLTYPE *AddRef)(
++ IWeakReferenceSource *This);
++
++ ULONG (STDMETHODCALLTYPE *Release)(
++ IWeakReferenceSource *This);
++
++ /*** IWeakReferenceSource methods ***/
++ HRESULT (STDMETHODCALLTYPE *GetWeakReference)(
++ IWeakReferenceSource *This,
++ IWeakReference **weakReference);
++
++ END_INTERFACE
++} IWeakReferenceSourceVtbl;
++
++interface IWeakReferenceSource {
++ CONST_VTBL IWeakReferenceSourceVtbl* lpVtbl;
++};
++
++#ifdef COBJMACROS
++#ifndef WIDL_C_INLINE_WRAPPERS
++/*** IUnknown methods ***/
++#define IWeakReferenceSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWeakReferenceSource_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWeakReferenceSource_Release(This) (This)->lpVtbl->Release(This)
++/*** IWeakReferenceSource methods ***/
++#define IWeakReferenceSource_GetWeakReference(This,weakReference) (This)->lpVtbl->GetWeakReference(This,weakReference)
++#else
++/*** IUnknown methods ***/
++static __WIDL_INLINE HRESULT IWeakReferenceSource_QueryInterface(IWeakReferenceSource* This,REFIID riid,void **ppvObject) {
++ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
++}
++static __WIDL_INLINE ULONG IWeakReferenceSource_AddRef(IWeakReferenceSource* This) {
++ return This->lpVtbl->AddRef(This);
++}
++static __WIDL_INLINE ULONG IWeakReferenceSource_Release(IWeakReferenceSource* This) {
++ return This->lpVtbl->Release(This);
++}
++/*** IWeakReferenceSource methods ***/
++static __WIDL_INLINE HRESULT IWeakReferenceSource_GetWeakReference(IWeakReferenceSource* This,IWeakReference **weakReference) {
++ return This->lpVtbl->GetWeakReference(This,weakReference);
++}
++#endif
++#endif
++
++#endif
++
++
++#endif /* __IWeakReferenceSource_INTERFACE_DEFINED__ */
++
++/* Begin additional prototypes for all interfaces */
++
++
++/* End additional prototypes */
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __weakreference_h__ */
+diff --git a/mingw-w64-headers/include/weakreference.idl b/mingw-w64-headers/include/weakreference.idl
+new file mode 100644
+index 000000000..037fce859
+--- /dev/null
++++ b/mingw-w64-headers/include/weakreference.idl
+@@ -0,0 +1,28 @@
++import "inspectable.idl";
++
++[object, uuid(00000037-0000-0000-C000-000000000046), pointer_default (unique)]
++interface IWeakReference: IUnknown
++{
++// cpp_quote("#if (_MSC_VER >= 1600) && defined(__cplusplus) && !defined(CINTERFACE)")
++// cpp_quote(" EXTERN_C const IID IID_IWeakReference;")
++// cpp_quote(" extern \"C++\"")
++// cpp_quote(" {")
++// cpp_quote(" MIDL_INTERFACE(\"00000037-0000-0000-C000-000000000046\")")
++// cpp_quote(" IWeakReference : public IUnknown {")
++// cpp_quote(" public:")
++// cpp_quote(" virtual HRESULT STDMETHODCALLTYPE Resolve(REFIID riid, IInspectable **objectReference) = 0;")
++// cpp_quote("")
++// cpp_quote(" template <typename T>")
++// cpp_quote(" HRESULT Resolve(T** objectReference) {")
++// cpp_quote(" return 0;")
++// cpp_quote(" }")
++// cpp_quote(" };")
++// cpp_quote(" } // extern C++")
++// cpp_quote("#else")
++ HRESULT Resolve([in] REFIID riid, [out, retval, iid_is(riid)] IInspectable **objectReference);
++}
++
++[object, uuid(00000038-0000-0000-C000-000000000046), pointer_default (unique)]
++interface IWeakReferenceSource : IUnknown {
++ HRESULT GetWeakReference([out, retval] IWeakReference **weakReference);
++}
+diff --git a/mingw-w64-headers/include/windows.graphics.capture.h b/mingw-w64-headers/include/windows.graphics.capture.h
+index 203b0f034..4a0c0b546 100644
+--- a/mingw-w64-headers/include/windows.graphics.capture.h
++++ b/mingw-w64-headers/include/windows.graphics.capture.h
+@@ -902,7 +902,7 @@ namespace ABI {
+ {
+ virtual HRESULT STDMETHODCALLTYPE Recreate(
+ ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice *device,
+- enum DirectXPixelFormat pixel_format,
++ enum DirectX::DirectXPixelFormat pixel_format,
+ INT32 number_of_buffers,
+ struct SizeInt32 size) = 0;
+
+@@ -1100,7 +1100,7 @@ namespace ABI {
+ {
+ virtual HRESULT STDMETHODCALLTYPE Create(
+ ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice *device,
+- enum DirectXPixelFormat pixel_format,
++ enum DirectX::DirectXPixelFormat pixel_format,
+ INT32 number_of_buffers,
+ struct SizeInt32 size,
+ ABI::Windows::Graphics::Capture::IDirect3D11CaptureFramePool **result) = 0;
+@@ -1236,7 +1236,7 @@ namespace ABI {
+ {
+ virtual HRESULT STDMETHODCALLTYPE CreateFreeThreaded(
+ ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice *device,
+- enum DirectXPixelFormat pixel_format,
++ enum DirectX::DirectXPixelFormat pixel_format,
+ INT32 number_of_buffers,
+ struct SizeInt32 size,
+ ABI::Windows::Graphics::Capture::IDirect3D11CaptureFramePool **result) = 0;
+diff --git a/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.h b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.h
+new file mode 100644
+index 000000000..7b66f7d16
+--- /dev/null
++++ b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.h
+@@ -0,0 +1,164 @@
++/*** Autogenerated by WIDL 8.0 from include/windows.graphics.directx.direct3d11.interop.idl - Do not edit ***/
++
++#ifdef _WIN32
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 475
++#endif
++#include <rpc.h>
++#include <rpcndr.h>
++#endif
++
++#ifndef COM_NO_WINDOWS_H
++#include <windows.h>
++#include <ole2.h>
++#endif
++
++#ifndef __windows_graphics_directx_direct3d11_interop_h__
++#define __windows_graphics_directx_direct3d11_interop_h__
++
++#ifndef __WIDL_INLINE
++#if defined(__cplusplus) || defined(_MSC_VER)
++#define __WIDL_INLINE inline
++#elif defined(__GNUC__)
++#define __WIDL_INLINE __inline__
++#endif
++#endif
++
++/* Forward declarations */
++
++#ifndef ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_FWD_DEFINED__
++#define ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_FWD_DEFINED__
++typedef interface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess;
++#ifdef __cplusplus
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess
++namespace ABI {
++ namespace Windows {
++ namespace Graphics {
++ namespace DirectX {
++ namespace Direct3D11 {
++ interface IDirect3DDxgiInterfaceAccess;
++ }
++ }
++ }
++ }
++}
++#endif /* __cplusplus */
++#endif
++
++/* Headers for imported files */
++
++#include <windows.graphics.directx.direct3d11.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*****************************************************************************
++ * IDirect3DDxgiInterfaceAccess interface
++ */
++#ifndef ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_INTERFACE_DEFINED__
++#define ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_INTERFACE_DEFINED__
++
++DEFINE_GUID(IID___x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess, 0xa9b3d012, 0x3df2, 0x4ee3, 0xb8,0xd1, 0x86,0x95,0xf4,0x57,0xd3,0xc1);
++#if defined(__cplusplus) && !defined(CINTERFACE)
++} /* extern "C" */
++namespace ABI {
++ namespace Windows {
++ namespace Graphics {
++ namespace DirectX {
++ namespace Direct3D11 {
++ MIDL_INTERFACE("a9b3d012-3df2-4ee3-b8d1-8695f457d3c1")
++ IDirect3DDxgiInterfaceAccess : public IUnknown
++ {
++ virtual HRESULT STDMETHODCALLTYPE GetInterface(
++ REFIID iid,
++ void **object) = 0;
++
++ };
++ }
++ }
++ }
++ }
++}
++extern "C" {
++#ifdef __CRT_UUID_DECL
++__CRT_UUID_DECL(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess, 0xa9b3d012, 0x3df2, 0x4ee3, 0xb8,0xd1, 0x86,0x95,0xf4,0x57,0xd3,0xc1)
++#endif
++#else
++typedef struct __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl {
++ BEGIN_INTERFACE
++
++ /*** IUnknown methods ***/
++ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This,
++ REFIID riid,
++ void **ppvObject);
++
++ ULONG (STDMETHODCALLTYPE *AddRef)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This);
++
++ ULONG (STDMETHODCALLTYPE *Release)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This);
++
++ /*** IDirect3DDxgiInterfaceAccess methods ***/
++ HRESULT (STDMETHODCALLTYPE *GetInterface)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This,
++ REFIID iid,
++ void **object);
++
++ END_INTERFACE
++} __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl;
++
++interface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess {
++ CONST_VTBL __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl* lpVtbl;
++};
++
++#ifdef COBJMACROS
++#ifndef WIDL_C_INLINE_WRAPPERS
++/*** IUnknown methods ***/
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_Release(This) (This)->lpVtbl->Release(This)
++/*** IDirect3DDxgiInterfaceAccess methods ***/
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_GetInterface(This,iid,object) (This)->lpVtbl->GetInterface(This,iid,object)
++#else
++/*** IUnknown methods ***/
++static __WIDL_INLINE HRESULT __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_QueryInterface(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This,REFIID riid,void **ppvObject) {
++ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
++}
++static __WIDL_INLINE ULONG __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_AddRef(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This) {
++ return This->lpVtbl->AddRef(This);
++}
++static __WIDL_INLINE ULONG __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_Release(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This) {
++ return This->lpVtbl->Release(This);
++}
++/*** IDirect3DDxgiInterfaceAccess methods ***/
++static __WIDL_INLINE HRESULT __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_GetInterface(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This,REFIID iid,void **object) {
++ return This->lpVtbl->GetInterface(This,iid,object);
++}
++#endif
++#ifdef WIDL_using_Windows_Graphics_DirectX_Direct3D11
++#define IID_IDirect3DDxgiInterfaceAccess IID___x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess
++#define IDirect3DDxgiInterfaceAccessVtbl __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl
++#define IDirect3DDxgiInterfaceAccess __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess
++#define IDirect3DDxgiInterfaceAccess_QueryInterface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_QueryInterface
++#define IDirect3DDxgiInterfaceAccess_AddRef __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_AddRef
++#define IDirect3DDxgiInterfaceAccess_Release __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_Release
++#define IDirect3DDxgiInterfaceAccess_GetInterface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_GetInterface
++#endif /* WIDL_using_Windows_Graphics_DirectX_Direct3D11 */
++#endif
++
++#endif
++
++#endif /* ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_INTERFACE_DEFINED__ */
++
++/* Begin additional prototypes for all interfaces */
++
++
++/* End additional prototypes */
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __windows_graphics_directx_direct3d11_interop_h__ */
+diff --git a/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.idl b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.idl
+new file mode 100644
+index 000000000..51e2845ea
+--- /dev/null
++++ b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.idl
+@@ -0,0 +1,14 @@
++#ifdef __WIDL__
++#pragma winrt ns_prefix
++#endif
++
++import "windows.graphics.directx.direct3d11.idl";
++
++namespace Windows.Graphics.DirectX.Direct3D11 {
++ [
++ uuid(A9B3D012-3DF2-4EE3-B8D1-8695F457D3C1)
++ ]
++ interface IDirect3DDxgiInterfaceAccess : IUnknown {
++ HRESULT GetInterface([in] REFIID iid, [out, iid_is(iid)] void **object);
++ };
++}
+diff --git a/mingw-w64-headers/include/windows.ui.core.h b/mingw-w64-headers/include/windows.ui.core.h
+index 5eb820b33..8a2e93ce4 100644
+--- a/mingw-w64-headers/include/windows.ui.core.h
++++ b/mingw-w64-headers/include/windows.ui.core.h
+@@ -1602,7 +1602,7 @@ namespace ABI {
+ namespace Core {
+ struct CoreProximityEvaluation {
+ INT32 Score;
+- struct Point AdjustedPoint;
++ struct Foundation::Point AdjustedPoint;
+ };
+ }
+ }
+@@ -2759,11 +2759,11 @@ namespace ABI {
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAsyncKeyState(
+- enum VirtualKey key,
++ enum System::VirtualKey key,
+ enum CoreVirtualKeyStates *state) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetKeyState(
+- enum VirtualKey key,
++ enum System::VirtualKey key,
+ enum CoreVirtualKeyStates *state) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleasePointerCapture(
+@@ -3491,7 +3491,7 @@ namespace ABI {
+ ICoreWindow2 : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE put_PointerPosition(
+- struct Point value) = 0;
++ struct Foundation::Point value) = 0;
+
+ };
+ }
+@@ -4605,7 +4605,7 @@ namespace ABI {
+ IKeyEventArgs : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE get_VirtualKey(
+- enum VirtualKey *value) = 0;
++ enum System::VirtualKey *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_KeyStatus(
+ struct CorePhysicalKeyStatus *value) = 0;
+@@ -4876,7 +4876,7 @@ namespace ABI {
+ ABI::Windows::UI::Input::IPointerPoint **value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_KeyModifiers(
+- enum VirtualKeyModifiers *value) = 0;
++ enum System::VirtualKeyModifiers *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIntermediatePoints(
+ ABI::Windows::Foundation::Collections::IVector<ABI::Windows::UI::Input::PointerPoint* > **value) = 0;
+diff --git a/mingw-w64-headers/include/wrl/client.h b/mingw-w64-headers/include/wrl/client.h
+index aeb886ea8..4fcadc7fc 100644
+--- a/mingw-w64-headers/include/wrl/client.h
++++ b/mingw-w64-headers/include/wrl/client.h
+@@ -9,12 +9,15 @@
+
+ #include <stddef.h>
+ #include <unknwn.h>
+-/* #include <weakreference.h> */
++#include <weakreference.h>
+ #include <roapi.h>
+
+ /* #include <wrl/def.h> */
+ #include <wrl/internal.h>
+
++#define WrlFinal final
++#define WrlSealed sealed
++
+ namespace Microsoft {
+ namespace WRL {
+ namespace Details {
+diff --git a/mingw-w64-headers/include/wrl/event.h b/mingw-w64-headers/include/wrl/event.h
+new file mode 100644
+index 000000000..2e883e241
+--- /dev/null
++++ b/mingw-w64-headers/include/wrl/event.h
+@@ -0,0 +1,368 @@
++#ifndef _WRL_EVENT_H_
++#define _WRL_EVENT_H_
++
++// #include <wrl/def.h>
++#include <wrl/internal.h>
++#include <wrl/client.h>
++#include <wrl/implements.h>
++#include <wrl/wrappers/corewrappers.h>
++#include <eventtoken.h>
++// #include <roerrorapi.h>
++
++#include <pshpack8.h>
++
++namespace Microsoft {
++ namespace WRL {
++ enum DelegateCheckMode {
++ NoCheck = 1
++ };
++
++ template<DelegateCheckMode delegateCheckMode> struct DelegateTraits;
++
++ template<> struct DelegateTraits<NoCheck> {
++ static HRESULT CheckReturn(HRESULT hr) {
++ return 0;
++ }
++ };
++
++ extern __declspec(selectany) const DelegateCheckMode DefaultDelegateCheckMode = NoCheck;
++
++ enum InvokeMode {
++ StopOnFirstError = 1,
++ FireAll = 2,
++ };
++
++ template<InvokeMode invokeModeValue> struct InvokeModeOptions {
++ static const InvokeMode invokeMode = invokeModeValue;
++ };
++
++ template<InvokeMode invokeMode> struct InvokeTraits;
++
++ template<typename TDelegateInterface, typename EventSourceOptions>
++ class EventSource;
++
++ namespace Details {
++ template<typename TDelegateInterface>
++ void* GetDelegateBucketAssist(TDelegateInterface *pDelegate) {
++ return nullptr;
++ }
++
++ template<typename TMemberFunction> struct ArgTraits {
++ static const int args = -1;
++ };
++
++ template<typename TDelegateInterface>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(void)> {
++ static const int args = 0;
++ };
++
++ template<typename TDelegateInterface, typename TArg1>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1)> {
++ static const int args = 1;
++ typedef TArg1 Arg1Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2)>
++ {
++ static const int args = 2;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3)>
++ {
++ static const int args = 3;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4)>
++ {
++ static const int args = 4;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5)>
++ {
++ static const int args = 5;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6)>
++ {
++ static const int args = 6;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6, typename TArg7>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7)>
++ {
++ static const int args = 7;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ typedef TArg7 Arg7Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6, typename TArg7, typename TArg8>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8)>
++ {
++ static const int args = 8;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ typedef TArg7 Arg7Type;
++ typedef TArg8 Arg8Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6, typename TArg7, typename TArg8, typename TArg9>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9)>
++ {
++ static const int args = 9;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ typedef TArg7 Arg7Type;
++ typedef TArg8 Arg8Type;
++ typedef TArg9 Arg9Type;
++ };
++
++ template<typename TDelegateInterface, bool isImplements = __is_base_of(ImplementsBase, TDelegateInterface)>
++ struct ArgTraitsHelper;
++
++ template<typename TDelegateInterface>
++ struct ArgTraitsHelper<TDelegateInterface, false>
++ {
++ typedef decltype(&TDelegateInterface::Invoke) methodType;
++ typedef ArgTraits<methodType> Traits;
++ static const int args = Traits::args;
++ typedef TDelegateInterface Interface;
++ };
++
++ template<typename TDelegateInterface>
++ struct ArgTraitsHelper<TDelegateInterface, true> {};
++
++ template<typename TDelegateInterface> class DelegateArgTraits {};
++
++ template<typename TDelegateInterface, typename ...TArgs>
++ class DelegateArgTraits<HRESULT (STDMETHODCALLTYPE TDelegateInterface::*)(TArgs...)>
++ {
++ template<typename TCallback, DelegateCheckMode checkMode>
++ struct DelegateInvokeHelper WrlSealed : public ::Microsoft::WRL::RuntimeClass<RuntimeClassFlags<Delegate>, TDelegateInterface>, RemoveReference<TCallback>::Type {
++ DelegateInvokeHelper(TCallback&& callback) noexcept {}
++
++ HRESULT STDMETHODCALLTYPE Invoke(TArgs... args) noexcept override {
++ return 0;
++ }
++ };
++
++ public:
++ template<typename TImplements, DelegateCheckMode checkMode = DefaultDelegateCheckMode, typename TLambda>
++ static ComPtr<TImplements> Callback(TLambda&& callback) noexcept {
++ ComPtr<TImplements> empty;
++ return empty;
++ }
++ };
++
++ template<typename TDelegateInterface, bool isImplements = __is_base_of(ImplementsBase, TDelegateInterface)>
++ struct DelegateArgTraitsHelper;
++
++ template<typename TDelegateInterface>
++ struct DelegateArgTraitsHelper<TDelegateInterface, false> {
++ typedef TDelegateInterface Interface;
++ typedef DelegateArgTraits<decltype(&TDelegateInterface::Invoke)> Traits;
++ };
++
++ template<typename TDelegateInterface>
++ struct DelegateArgTraitsHelper<TDelegateInterface, true> {};
++
++ template<typename TDelegateInterface>
++ HRESULT CreateAgileHelper(TDelegateInterface* delegateInterface, TDelegateInterface** wrapper) {
++ return 0;
++ }
++ }
++
++ template<typename TDelegateInterface, typename TLambda>
++ ComPtr<typename Details::DelegateArgTraitsHelper<TDelegateInterface>::Interface> Callback(TLambda&& callback) noexcept {
++ return 0;
++ }
++
++ template<typename TDelegateInterface, typename TFunc>
++ ComPtr<typename Details::DelegateArgTraitsHelper<TDelegateInterface>::Interface> Callback(TFunc* callback) noexcept {
++ return 0;
++ };
++
++ template<typename TDelegateInterface, typename TCallbackObject, typename... TArgs>
++ ComPtr<typename Details::DelegateArgTraitsHelper<TDelegateInterface>::Interface> Callback(TCallbackObject *object, HRESULT(TCallbackObject::* method)(TArgs...)) noexcept {
++ return 0;
++ }
++
++ template<typename TDelegateInterface>
++ HRESULT WeakReferenceCallback(IWeakReferenceSource* innerCallback, TDelegateInterface** callback) {
++ return 0;
++ }
++
++ template<typename TDelegateInterface>
++ HRESULT WeakReferenceCallback(TDelegateInterface* innerCallback, TDelegateInterface** callback) {
++ return 0;
++ }
++
++ template<typename T, typename TDelegateInterface, typename ...TArgs>
++ HRESULT WeakReferenceCallback(T* targetObject, HRESULT (T::*targetMethod)(TArgs... args), TDelegateInterface** callback) {
++ return 0;
++ }
++
++ template<typename T, typename TDelegateInterface, typename ...TArgs>
++ HRESULT WeakReferenceCallback(T* targetObject, HRESULT(T::*targetMethod)(TArgs... args), ::Microsoft::WRL::Details::ComPtrRef< ::Microsoft::WRL::ComPtr<TDelegateInterface>> callback) {
++ return 0;
++ }
++
++ namespace Details {
++
++ class EventTargetArray WrlSealed : public ::Microsoft::WRL::RuntimeClass< ::Microsoft::WRL::RuntimeClassFlags<ClassicCom>, IUnknown > {
++ public:
++ EventTargetArray() noexcept {}
++
++ HRESULT RuntimeClassInitialize(size_t items) noexcept {
++ return 0;
++ }
++
++ ~EventTargetArray() noexcept
++ {
++ delete[] begin_;
++ delete[] bucketAssists_;
++ }
++
++ ComPtr<IUnknown>* Begin() noexcept {
++ return nullptr;
++ }
++
++ ComPtr<IUnknown>* End() noexcept {
++ return nullptr;
++ }
++
++ void AddTail(IUnknown* element) noexcept {
++ }
++
++ void AddTail(IUnknown* element, void *bucketAssist) noexcept {
++ }
++
++ size_t Length() noexcept {
++ return 0;
++ }
++
++ void **Begin_BucketAssists() {
++ return nullptr;
++ }
++
++ void **End_BucketAssists() {
++ return nullptr;
++ }
++
++ private:
++ ComPtr<IUnknown>* begin_;
++
++ ComPtr<IUnknown>* end_;
++
++ void **bucketAssists_;
++ };
++ }
++
++ template<>
++ struct InvokeTraits<FireAll>
++ {
++ template<typename TInvokeMethod, typename TDelegateInterface>
++ static HRESULT InvokeDelegates(TInvokeMethod invokeOne, Details::EventTargetArray *targetArray, EventSource<TDelegateInterface, InvokeModeOptions<FireAll>>* pEvent) {
++ return 0;
++ }
++ };
++
++ template<>
++ struct InvokeTraits<StopOnFirstError>
++ {
++ template<typename TInvokeMethod, typename TDelegateInterface>
++ static HRESULT InvokeDelegates(TInvokeMethod invokeOne, Details::EventTargetArray *targetArray, EventSource<TDelegateInterface, InvokeModeOptions<StopOnFirstError>>* pEvent) {
++ return 0;
++ }
++ };
++
++ template<typename TDelegateInterface, typename TEventSourceOptions>
++ class EventSource {
++ public:
++ EventSource() noexcept {}
++
++ HRESULT Add(TDelegateInterface* delegateInterface, EventRegistrationToken* token) noexcept {
++ return 0;
++ }
++
++ HRESULT Remove(EventRegistrationToken token) noexcept {
++ return 0;
++ }
++
++ protected:
++
++ HRESULT Add(TDelegateInterface* delegateInterface, void *bucketAssist, EventRegistrationToken* token) noexcept {
++ return 0;
++ }
++
++ private:
++
++ HRESULT AddInternal(TDelegateInterface* delegateInterface, void *bucketAssist, EventRegistrationToken* token) noexcept {
++ return 0;
++ }
++
++ template <typename TInvokeMethod>
++ HRESULT DoInvoke(TInvokeMethod invokeOne) noexcept {
++ return 0;
++ }
++
++ public:
++ template<typename ...TArgs>
++ HRESULT InvokeAll(TArgs... args) noexcept {
++ return 0;
++ }
++
++ size_t GetSize() const noexcept {
++ return 0;
++ }
++
++ protected:
++ ComPtr<Details::EventTargetArray> targets_;
++
++ mutable Wrappers::SRWLock targetsPointerLock_;
++
++ Wrappers::SRWLock addRemoveLock_;
++ };
++ }
++}
++
++#include <poppack.h>
++
++#endif
+diff --git a/mingw-w64-headers/include/wrl/implements.h b/mingw-w64-headers/include/wrl/implements.h
+new file mode 100644
+index 000000000..9d5fe962f
+--- /dev/null
++++ b/mingw-w64-headers/include/wrl/implements.h
+@@ -0,0 +1,619 @@
++#ifndef _WRL_IMPLEMENTS_H_
++#define _WRL_IMPLEMENTS_H_
++
++#include <weakreference.h>
++
++#include <wrl\client.h>
++
++#include <pshpack8.h>
++
++
++namespace Microsoft {
++ namespace WRL {
++ template<typename T>
++ struct CloakedIid : T {};
++
++ enum RuntimeClassType {
++ WinRt = 0x0001,
++ ClassicCom = 0x0002,
++ WinRtClassicComMix = WinRt | ClassicCom,
++ InhibitWeakReference = 0x0004,
++ Delegate = ClassicCom,
++ InhibitFtmBase = 0x0008,
++ InhibitRoOriginateError = 0x0010
++ };
++
++ template <unsigned int flags>
++ struct RuntimeClassFlags {
++ static const unsigned int value = flags;
++ };
++
++ namespace Details {
++ struct ImplementsBase {};
++ }
++
++ template<typename Derived, typename MixInType, bool hasImplements>
++ struct MixIn {};
++
++ template <typename FactoryInterface>
++ class ComposableBase {};
++
++ typedef RuntimeClassFlags<WinRt | InhibitWeakReference> InhibitWeakReferencePolicy;
++
++ namespace Details {
++
++ class Nil {};
++
++ class DontUseNewUseMake {
++ private:
++ void* operator new(size_t) throw() {
++ return nullptr;
++ }
++
++ public:
++ void* operator new(size_t, void* placement) throw() {
++ return nullptr;
++ }
++ };
++
++ class RuntimeClassBase {};
++
++ template <unsigned int RuntimeClassTypeT>
++ class RuntimeClassBaseT : private RuntimeClassBase {
++ protected:
++ template<typename T>
++ static HRESULT AsIID(T* implements, REFIID riid, void **ppvObject) throw() {
++ return 0;
++ }
++
++ template<typename T>
++ static HRESULT GetImplementedIIDS(T* implements, ULONG *iidCount, IID **iids) throw() {
++ return 0;
++ }
++
++ public:
++ HRESULT RuntimeClassInitialize() throw() {
++ return 0;
++ }
++ };
++
++ class FtmBaseMarker {};
++
++ template <typename I, typename Base>
++ struct VerifyInheritanceHelper {
++ static void Verify() throw() {}
++ };
++
++ template <typename I>
++ struct VerifyInheritanceHelper<I, Nil> {
++ static void Verify() throw() {}
++ };
++ }
++
++ template <typename I0, typename I1, typename I2 = Details::Nil, typename I3 = Details::Nil,
++ typename I4 = Details::Nil, typename I5 = Details::Nil, typename I6 = Details::Nil,
++ typename I7 = Details::Nil, typename I8 = Details::Nil, typename I9 = Details::Nil>
++ struct ChainInterfaces : I0
++ {
++ protected:
++ template<unsigned int ClassType>
++ static void Verify() throw() {}
++
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ static const unsigned long IidCount;
++
++ static void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename DerivedType, typename BaseType, bool hasImplements, typename I1, typename I2, typename I3,
++ typename I4, typename I5, typename I6,
++ typename I7, typename I8, typename I9>
++ struct ChainInterfaces<MixIn<DerivedType, BaseType, hasImplements>, I1, I2, I3, I4, I5, I6, I7, I8, I9>
++ {
++ protected:
++ template<unsigned int ClassType>
++ static void Verify() throw() {}
++
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ static const unsigned long IidCount;
++
++ static void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ namespace Details {
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper;
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, I0, TInterfaces...> : I0, ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ template <bool IsDelegateToClass>
++ HRESULT CanCastToHelper(REFIID riid, void **ppv, bool *pRefDelegated) throw();
++
++ template <>
++ HRESULT inline CanCastToHelper<true>(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ template <>
++ HRESULT inline CanCastToHelper<false>(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ template <bool IsDelegateToClass> IUnknown* CastToUnknownHelper() throw();
++
++ template <> inline IUnknown* CastToUnknownHelper<true>() throw() {
++ return nullptr;
++ }
++
++ template <> inline IUnknown* CastToUnknownHelper<false>() throw() {
++ return nullptr;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ template <bool IsDelegateToClass> long GetIidCountHelper() throw();
++
++ template <> inline long GetIidCountHelper<true>() throw() {
++ return 0;
++ }
++
++ template <> inline long GetIidCountHelper<false>() throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ template <bool IsDelegateToClass> void FillArrayWithIidHelper(unsigned long *index, IID* iids) throw();
++
++ template <> inline void FillArrayWithIidHelper<true>(unsigned long *index, IID* iids) throw() {}
++
++ template <> inline void FillArrayWithIidHelper<false>(unsigned long *index, IID* iids) throw() {}
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, Details::Nil, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool * pRefDelegated) throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck>
++ {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID, void **, bool*) throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long*, IID*) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, CloakedIid<I0>, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, I0>, ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename C0, typename C1, typename C2, typename C3, typename C4, typename C5, typename C6, typename C7, typename C8, typename C9, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, TInterfaces...> : ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, typename DerivedType, typename BaseType, bool hasImplements, typename ...TInterfaces, bool doStrictCheck>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, MixIn<DerivedType, BaseType, hasImplements>, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename I0, typename ...>
++ struct AreAllNil {
++ static const bool value = false;
++ };
++
++ template <typename ...TInterfaces>
++ struct AreAllNil<Microsoft::WRL::Details::Nil, TInterfaces...> {
++ static const bool value = AreAllNil<TInterfaces...>::value;
++ };
++
++ template <>
++ struct AreAllNil<Microsoft::WRL::Details::Nil> {
++ static const bool value = true;
++ };
++
++ template <typename RuntimeClassFlagsT, typename FactoryInterface, bool doStrictCheck, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, ComposableBase<FactoryInterface>, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, true, ComposableBase<FactoryInterface>> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ typedef ImplementsHelper<RuntimeClassFlagsT, true, ComposableBase<FactoryInterface>> Base;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, typename FactoryInterface, bool doStrictCheck>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, ComposableBase<FactoryInterface>> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++
++ ImplementsHelper() throw() {}
++
++ ~ImplementsHelper() throw() {}
++
++ public:
++ HRESULT SetComposableBasePointers(IInspectable* base, FactoryInterface* baseFactory) throw() {
++ return 0;
++ }
++
++ ComPtr<IInspectable> GetComposableBase() throw() {
++ return composableBase_;
++ }
++
++ ComPtr<FactoryInterface> GetComposableBaseFactory() throw() {
++ return composableBaseFactory_;
++ }
++
++ private:
++ ComPtr<IInspectable> composableBase_;
++
++ ComPtr<FactoryInterface> composableBaseFactory_;
++
++ IID *iidsCached_;
++
++ unsigned long iidCount_;
++ };
++
++ }
++
++ template <typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) Implements : Details::ImplementsHelper<RuntimeClassFlags<WinRt>, true, I0, TInterfaces...>, Details::ImplementsBase {
++ public:
++ typedef RuntimeClassFlags<WinRt> ClassFlags;
++
++ typedef I0 FirstInterface;
++
++ protected:
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <int flags, typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) Implements<RuntimeClassFlags<flags>, I0, TInterfaces...> : Details::ImplementsHelper<RuntimeClassFlags<flags>, true, I0, TInterfaces...>, Details::ImplementsBase {
++ public:
++ typedef RuntimeClassFlags<flags> ClassFlags;
++
++ typedef I0 FirstInterface;
++
++ protected:
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ class FtmBase : public Implements< ::Microsoft::WRL::RuntimeClassFlags<WinRtClassicComMix>, ::Microsoft::WRL::CloakedIid< ::IMarshal> >, private ::Microsoft::WRL::Details::FtmBaseMarker {
++ protected:
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename ...TInterfaces> friend struct Details::ImplementsHelper;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ public:
++ FtmBase() throw() {}
++
++ STDMETHOD(GetUnmarshalClass)(REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid) override {
++ return 0;
++ }
++
++ STDMETHOD(GetMarshalSizeMax)(REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize) override {
++ return 0;
++ }
++
++ STDMETHOD(MarshalInterface)(IStream *pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags) override {
++ return 0;
++ }
++
++ STDMETHOD(UnmarshalInterface)(IStream *pStm, REFIID riid, void **ppv) override {
++ return 0;
++ }
++
++ STDMETHOD(ReleaseMarshalData)(IStream *pStm) override {
++ return 0;
++ }
++
++ STDMETHOD(DisconnectObject)(DWORD dwReserved) override {
++ return 0;
++ }
++
++ static HRESULT CreateGlobalInterfaceTable(IGlobalInterfaceTable **git) throw() {
++ return 0;
++ }
++
++ ::Microsoft::WRL::ComPtr<IMarshal> marshaller_;
++ };
++
++ namespace Details {
++ #define DETAILS_RTCLASS_FLAGS_ARGUMENTS(RuntimeClassFlagsT) \
++ RuntimeClassFlagsT, \
++ (RuntimeClassFlagsT::value & InhibitWeakReference) == 0, \
++ (RuntimeClassFlagsT::value & WinRt) == WinRt, \
++ __WRL_IMPLEMENTS_FTM_BASE__(RuntimeClassFlagsT::value) \
++
++ template <class RuntimeClassFlagsT, bool implementsWeakReferenceSource, bool implementsInspectable, bool implementsFtmBase, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl;
++
++ template <class RuntimeClassFlagsT, bool implementsWeakReferenceSource, bool implementsFtmBase, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, implementsWeakReferenceSource, false, implementsFtmBase, TInterfaces...> : public Details::ImplementsHelper<RuntimeClassFlagsT, false, TInterfaces...>, public RuntimeClassBaseT<RuntimeClassFlagsT::value>, protected RuntimeClassFlags<InhibitWeakReference>, public DontUseNewUseMake {
++ public:
++ typedef RuntimeClassFlagsT ClassFlags;
++
++ STDMETHOD(QueryInterface)(REFIID riid, void **ppvObject) {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, AddRef)() {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, Release)() {
++ return 0;
++ }
++
++ protected:
++ RuntimeClassImpl() throw() {}
++
++ virtual ~RuntimeClassImpl() throw() {}
++
++ unsigned long InternalAddRef() throw() {
++ return 0;
++ }
++
++ unsigned long InternalRelease() throw() {
++ return 0;
++ }
++
++ unsigned long GetRefCount() const throw() {
++ return 0;
++ }
++
++ friend class WeakReferenceImpl;
++
++ private:
++ volatile long refcount_;
++ };
++
++ template<typename I, bool isImplementsBased = __is_base_of(ImplementsBase, I)>
++ struct HasIInspectable;
++
++ template<typename I>
++ struct HasIInspectable<I, false> {
++ static const bool isIInspectable;
++ };
++
++ template<typename I>
++ struct HasIInspectable<I, true> {
++ static const bool isIInspectable;
++ };
++
++ template<typename I0, bool isIInspectable = true>
++ struct IInspectableInjector;
++
++ template<typename I0>
++ struct IInspectableInjector<I0, true> {
++ typedef Details::Nil InspectableIfNeeded;
++ };
++
++ template<typename I0>
++ struct IInspectableInjector<I0, false> {
++ typedef IInspectable InspectableIfNeeded;
++ };
++
++ template <class RuntimeClassFlagsT, typename I0, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, false, true, false, I0, TInterfaces...> : public Details::ImplementsHelper<RuntimeClassFlagsT, false, typename IInspectableInjector<I0>::InspectableIfNeeded, I0, TInterfaces...>, public RuntimeClassBaseT<RuntimeClassFlagsT::value>, protected RuntimeClassFlags<InhibitWeakReference>, public DontUseNewUseMake {
++ public:
++ typedef RuntimeClassFlagsT ClassFlags;
++
++ STDMETHOD(QueryInterface)(REFIID riid, void **ppvObject) {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, AddRef)() {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, Release)() {
++ return 0;
++ }
++
++ STDMETHOD(GetIids)(ULONG *iidCount, IID **iids) {
++ return 0;
++ }
++
++ protected:
++ RuntimeClassImpl() throw() {}
++
++ virtual ~RuntimeClassImpl() throw() {}
++
++ unsigned long InternalAddRef() throw() {
++ return 0;
++ }
++
++ unsigned long InternalRelease() throw() {
++ return 0;
++ }
++
++ unsigned long GetRefCount() const throw() {
++ return 0;
++ }
++
++ private:
++ volatile long refcount_;
++ };
++
++ template <class RuntimeClassFlagsT, typename I0, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, false, true, true, I0, TInterfaces...> : public RuntimeClassImpl<RuntimeClassFlagsT, false, true, false, I0, TInterfaces...> {};
++
++ template <class RuntimeClassFlagsT, typename I0, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, true, true, true, I0, TInterfaces...> : public RuntimeClassImpl<RuntimeClassFlagsT, true, true, false, I0, FtmBase, TInterfaces...> {};
++ }
++
++ template <typename ...TInterfaces>
++ class RuntimeClass : public Details::RuntimeClassImpl<DETAILS_RTCLASS_FLAGS_ARGUMENTS(RuntimeClassFlags<WinRt>), TInterfaces...> {
++ RuntimeClass(const RuntimeClass&);
++
++ RuntimeClass& operator=(const RuntimeClass&);
++
++ public:
++ RuntimeClass() throw() {}
++
++ typedef RuntimeClass RuntimeClassT;
++ };
++
++ template <unsigned int classFlags, typename ...TInterfaces>
++ class RuntimeClass<RuntimeClassFlags<classFlags>, TInterfaces...> : public Details::RuntimeClassImpl<DETAILS_RTCLASS_FLAGS_ARGUMENTS(RuntimeClassFlags<classFlags>), TInterfaces...> {
++ RuntimeClass(const RuntimeClass&);
++
++ RuntimeClass& operator=(const RuntimeClass&);
++
++ public:
++ RuntimeClass() throw() {}
++
++ typedef RuntimeClass RuntimeClassT;
++ };
++ }
++}
++
++#include <poppack.h>
++
++#endif
+diff --git a/mingw-w64-headers/include/wrl/internal.h b/mingw-w64-headers/include/wrl/internal.h
+index 715ef74e3..dffa7153d 100644
+--- a/mingw-w64-headers/include/wrl/internal.h
++++ b/mingw-w64-headers/include/wrl/internal.h
+@@ -7,6 +7,8 @@
+ #ifndef _WRL_INTERNAL_H_
+ #define _WRL_INTERNAL_H_
+
++#define __WRL_IMPLEMENTS_FTM_BASE__(flags) (false)
++
+ #include <windows.h>
+
+ namespace Microsoft {
+@@ -29,6 +31,26 @@ namespace Microsoft {
+ struct EnableIf<true, T> {
+ typedef T type;
+ };
++
++ template<class T>
++ struct RemoveReference {
++ typedef T Type;
++ };
++
++ template<class T>
++ struct RemoveReference<T&> {
++ typedef T Type;
++ };
++
++ template<class T>
++ struct RemoveReference<T&&> {
++ typedef T Type;
++ };
++
++ template<class T>
++ inline typename RemoveReference<T>::Type&& Move(T&& arg) throw() {
++ return nullptr;
++ }
+ }
+ }
+ }
+diff --git a/mingw-w64-headers/include/wrl/wrappers/corewrappers.h b/mingw-w64-headers/include/wrl/wrappers/corewrappers.h
+index 221d9cc8f..4b15f43ec 100644
+--- a/mingw-w64-headers/include/wrl/wrappers/corewrappers.h
++++ b/mingw-w64-headers/include/wrl/wrappers/corewrappers.h
+@@ -22,6 +22,129 @@ namespace Microsoft {
+ }
+
+ namespace Wrappers {
++ namespace HandleTraits {
++ struct SRWLockSharedTraits {
++ typedef SRWLOCK* Type;
++
++ inline static Type GetInvalidValue() throw() {
++ return nullptr;
++ }
++
++ inline static void Unlock(Type srwlock) throw() {}
++ };
++
++ struct SRWLockExclusiveTraits {
++ typedef SRWLOCK* Type;
++
++ inline static Type GetInvalidValue() throw() {
++ return nullptr;
++ }
++
++ inline static void Unlock(Type srwlock) throw() {}
++ };
++ }
++
++ class SRWLock;
++
++ namespace Details {
++ class SyncLockExclusive {
++ public:
++ SyncLockExclusive(SyncLockExclusive&& other) throw() {}
++
++ SyncLockExclusive(const SyncLockExclusive&);
++ SyncLockExclusive& operator=(const SyncLockExclusive&);
++
++ ~SyncLockExclusive() throw() {}
++
++ void Unlock() throw() {}
++
++ bool IsLocked() const throw() {
++ return 0;
++ }
++
++ friend class Wrappers::SRWLock;
++
++ protected:
++ explicit SyncLockExclusive(SRWLOCK* sync) throw() {}
++
++ SRWLOCK* sync_;
++
++ private:
++ void InternalUnlock() throw() {}
++ };
++
++ class SyncLockShared {
++ public:
++ SyncLockShared(SyncLockShared&& other) throw() {}
++
++ SyncLockShared(const SyncLockShared&);
++ SyncLockShared& operator=(const SyncLockShared&);
++
++ ~SyncLockShared() throw() {}
++
++ void Unlock() throw() {}
++
++ bool IsLocked() const throw() {
++ return 0;
++ }
++
++ friend class Wrappers::SRWLock;
++
++ protected:
++ explicit SyncLockShared(SRWLOCK* sync) throw() {}
++
++ SRWLOCK* sync_;
++
++ private:
++ void InternalUnlock() throw() {}
++ };
++ }
++
++ class SRWLock {
++ public:
++ SRWLock() throw() {}
++
++ SRWLock(const SRWLock&) = delete;
++ SRWLock& operator=(const SRWLock&) = delete;
++
++ ~SRWLock() throw() {}
++
++ Details::SyncLockExclusive LockExclusive() throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ static Details::SyncLockExclusive LockExclusive(SRWLOCK* lock) throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ Details::SyncLockExclusive TryLockExclusive() throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ static Details::SyncLockExclusive TryLockExclusive(SRWLOCK* lock) throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ Details::SyncLockShared LockShared() throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ static Details::SyncLockShared LockShared(SRWLOCK* lock) throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ Details::SyncLockShared TryLockShared() throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ static Details::SyncLockShared TryLockShared(SRWLOCK* lock) throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ protected:
++ SRWLOCK SRWLock_;
++ };
++
+ class HStringReference {
+ private:
+ void Init(const wchar_t* str, unsigned int len) {
=====================================
projects/translation/config
=====================================
@@ -12,7 +12,7 @@ compress_tar: 'gz'
steps:
base-browser:
base-browser: '[% INCLUDE build %]'
- git_hash: 3b1be2065b54939ed019d94174f137847bcf3c66
+ git_hash: f7c77f129447921ec1490f5f401ee27e474b932a
targets:
nightly:
git_hash: 'base-browser'
=====================================
rbm.conf
=====================================
@@ -73,17 +73,20 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '14.0.1'
- torbrowser_build: 'build2'
+ torbrowser_version: '[% IF c("var/tor-browser") %]14.0.1[% ELSE %]14.0a10[% END %]'
+ torbrowser_build: 'build1'
# This should be the date of when the build is started. For the build
# to be reproducible, browser_release_date should always be in the past.
- browser_release_date: '2024/10/28 09:00:00'
+ browser_release_date: '2024/10/31 19:43:38'
browser_release_date_timestamp: '[% USE date; date.format(c("var/browser_release_date"), "%s") %]'
updater_enabled: 1
build_mar: 1
torbrowser_incremental_from:
+ - '[% IF c("var/mullvad-browser") %]14.0a9[% END %]'
+ - '[% IF c("var/mullvad-browser") %]14.0a8[% END %]'
+ - '[% IF c("var/mullvad-browser") %]14.0a7[% END %]'
- '[% IF c("var/tor-browser") %]14.0[% END %]'
- - '13.5.7'
+ - '[% IF c("var/tor-browser") %]13.5.7[% END %]'
mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]'
torbrowser_legacy_version: 13.5.9
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-128.4.0esr-14.0-1-build2
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed new tag mullvad-browser-128.4.0esr-14.0-1-build2 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][base-browser-128.4.0esr-14.5-1] Bug 373 - reenable webrtc builds
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch base-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
173c563f by june wilde at 2024-10-31T20:56:39+00:00
Bug 373 - reenable webrtc builds
- - - - -
3 changed files:
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.h
Changes:
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
=====================================
@@ -10,9 +10,9 @@
#include "modules/desktop_capture/win/wgc_capture_session.h"
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <windows.graphics.capture.interop.h>
-#include <windows.graphics.directX.direct3d11.interop.h>
+#include <windows.graphics.directx.direct3d11.interop.h>
#include <windows.graphics.h>
#include <wrl/client.h>
#include <wrl/event.h>
@@ -181,9 +181,7 @@ HRESULT WgcCaptureSession::StartCapture(const DesktopCaptureOptions& options) {
if (!options.prefer_cursor_embedded()) {
ComPtr<ABI::Windows::Graphics::Capture::IGraphicsCaptureSession2> session2;
- if (SUCCEEDED(session_->QueryInterface(
- ABI::Windows::Graphics::Capture::IID_IGraphicsCaptureSession2,
- &session2))) {
+ if (SUCCEEDED(session_->QueryInterface(IID_PPV_ARGS(&session2)))) {
session2->put_IsCursorCaptureEnabled(false);
}
}
@@ -367,7 +365,7 @@ HRESULT WgcCaptureSession::ProcessFrame() {
return hr;
}
- ComPtr<Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
+ ComPtr<ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
direct3DDxgiInterfaceAccess;
hr = d3d_surface->QueryInterface(IID_PPV_ARGS(&direct3DDxgiInterfaceAccess));
if (FAILED(hr)) {
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.cc
=====================================
@@ -10,7 +10,7 @@
#include "modules/desktop_capture/win/wgc_capturer_win.h"
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <windows.foundation.metadata.h>
#include <windows.graphics.capture.h>
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.h
=====================================
@@ -11,7 +11,7 @@
#ifndef MODULES_DESKTOP_CAPTURE_WIN_WGC_CAPTURER_WIN_H_
#define MODULES_DESKTOP_CAPTURE_WIN_WGC_CAPTURER_WIN_H_
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <d3d11.h>
#include <wrl/client.h>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/173c563…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/173c563…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][base-browser-128.4.0esr-14.0-1] Bug 373 - reenable webrtc builds
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch base-browser-128.4.0esr-14.0-1 at The Tor Project / Applications / Tor Browser
Commits:
efcadd2e by june wilde at 2024-10-31T20:55:14+00:00
Bug 373 - reenable webrtc builds
- - - - -
3 changed files:
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.h
Changes:
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
=====================================
@@ -10,9 +10,9 @@
#include "modules/desktop_capture/win/wgc_capture_session.h"
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <windows.graphics.capture.interop.h>
-#include <windows.graphics.directX.direct3d11.interop.h>
+#include <windows.graphics.directx.direct3d11.interop.h>
#include <windows.graphics.h>
#include <wrl/client.h>
#include <wrl/event.h>
@@ -181,9 +181,7 @@ HRESULT WgcCaptureSession::StartCapture(const DesktopCaptureOptions& options) {
if (!options.prefer_cursor_embedded()) {
ComPtr<ABI::Windows::Graphics::Capture::IGraphicsCaptureSession2> session2;
- if (SUCCEEDED(session_->QueryInterface(
- ABI::Windows::Graphics::Capture::IID_IGraphicsCaptureSession2,
- &session2))) {
+ if (SUCCEEDED(session_->QueryInterface(IID_PPV_ARGS(&session2)))) {
session2->put_IsCursorCaptureEnabled(false);
}
}
@@ -367,7 +365,7 @@ HRESULT WgcCaptureSession::ProcessFrame() {
return hr;
}
- ComPtr<Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
+ ComPtr<ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
direct3DDxgiInterfaceAccess;
hr = d3d_surface->QueryInterface(IID_PPV_ARGS(&direct3DDxgiInterfaceAccess));
if (FAILED(hr)) {
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.cc
=====================================
@@ -10,7 +10,7 @@
#include "modules/desktop_capture/win/wgc_capturer_win.h"
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <windows.foundation.metadata.h>
#include <windows.graphics.capture.h>
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.h
=====================================
@@ -11,7 +11,7 @@
#ifndef MODULES_DESKTOP_CAPTURE_WIN_WGC_CAPTURER_WIN_H_
#define MODULES_DESKTOP_CAPTURE_WIN_WGC_CAPTURER_WIN_H_
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <d3d11.h>
#include <wrl/client.h>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/efcadd2…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/efcadd2…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.4.0esr-14.5-1] 2 commits: Bug 373 - reenable webrtc builds
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch mullvad-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
4dc1a0a0 by june wilde at 2024-10-31T18:35:39+00:00
Bug 373 - reenable webrtc builds
- - - - -
7e34aa7e by june wilde at 2024-10-31T18:35:39+00:00
fixup! MB 320: Temporarily disable WebRTC and WDBA on Windows.
- - - - -
4 changed files:
- mozconfig-windows-x86_64
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.cc
- third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.h
Changes:
=====================================
mozconfig-windows-x86_64
=====================================
@@ -23,5 +23,4 @@ ac_add_options --disable-notification-server
ac_add_options --disable-eme
# tor-browser#320: Temporarily disable until we resolve the mingw problems.
-ac_add_options --disable-webrtc
ac_add_options --disable-default-browser-agent
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capture_session.cc
=====================================
@@ -10,9 +10,9 @@
#include "modules/desktop_capture/win/wgc_capture_session.h"
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <windows.graphics.capture.interop.h>
-#include <windows.graphics.directX.direct3d11.interop.h>
+#include <windows.graphics.directx.direct3d11.interop.h>
#include <windows.graphics.h>
#include <wrl/client.h>
#include <wrl/event.h>
@@ -181,9 +181,7 @@ HRESULT WgcCaptureSession::StartCapture(const DesktopCaptureOptions& options) {
if (!options.prefer_cursor_embedded()) {
ComPtr<ABI::Windows::Graphics::Capture::IGraphicsCaptureSession2> session2;
- if (SUCCEEDED(session_->QueryInterface(
- ABI::Windows::Graphics::Capture::IID_IGraphicsCaptureSession2,
- &session2))) {
+ if (SUCCEEDED(session_->QueryInterface(IID_PPV_ARGS(&session2)))) {
session2->put_IsCursorCaptureEnabled(false);
}
}
@@ -367,7 +365,7 @@ HRESULT WgcCaptureSession::ProcessFrame() {
return hr;
}
- ComPtr<Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
+ ComPtr<ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>
direct3DDxgiInterfaceAccess;
hr = d3d_surface->QueryInterface(IID_PPV_ARGS(&direct3DDxgiInterfaceAccess));
if (FAILED(hr)) {
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.cc
=====================================
@@ -10,7 +10,7 @@
#include "modules/desktop_capture/win/wgc_capturer_win.h"
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <windows.foundation.metadata.h>
#include <windows.graphics.capture.h>
=====================================
third_party/libwebrtc/modules/desktop_capture/win/wgc_capturer_win.h
=====================================
@@ -11,7 +11,7 @@
#ifndef MODULES_DESKTOP_CAPTURE_WIN_WGC_CAPTURER_WIN_H_
#define MODULES_DESKTOP_CAPTURE_WIN_WGC_CAPTURER_WIN_H_
-#include <DispatcherQueue.h>
+#include <dispatcherqueue.h>
#include <d3d11.h>
#include <wrl/client.h>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/60…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/60…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 41291 - Bump and patch mingw-w64-clang
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
0748806d by june wilde at 2024-10-31T18:22:38+00:00
Bug 41291 - Bump and patch mingw-w64-clang
- - - - -
3 changed files:
- projects/mingw-w64-clang/build
- projects/mingw-w64-clang/config
- + projects/mingw-w64-clang/mingw-webrtc.patch
Changes:
=====================================
projects/mingw-w64-clang/build
=====================================
@@ -89,6 +89,7 @@ EOF
patch -p1 < "$rootdir/mingw-dispatchqueue.patch"
patch -p1 < "$rootdir/mingw-ts_sd.patch"
patch -p1 < "$rootdir/mingw-composition.patch"
+ patch -p1 < "$rootdir/mingw-webrtc.patch"
cd $builddir/mingw-w64-clang/mingw-w64-headers
mkdir build && cd build
=====================================
projects/mingw-w64-clang/config
=====================================
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% pc("llvm-project", "version") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
git_url: https://git.code.sf.net/p/mingw-w64/mingw-w64
-git_hash: cd4cf9b279f8fb0815f8b9665d3cea60a30290bc
+git_hash: 4ef04b0a7f7a20735de2f58b5c0496fcb4c7d191
version: '[% c("abbrev") %]'
container:
use_container: 1
@@ -35,3 +35,4 @@ input_files:
- filename: mingw-dispatchqueue.patch
- filename: mingw-ts_sd.patch
- filename: mingw-composition.patch
+ - filename: mingw-webrtc.patch
=====================================
projects/mingw-w64-clang/mingw-webrtc.patch
=====================================
@@ -0,0 +1,1727 @@
+diff --git a/mingw-w64-headers/include/weakreference.h b/mingw-w64-headers/include/weakreference.h
+new file mode 100644
+index 000000000..9776dd194
+--- /dev/null
++++ b/mingw-w64-headers/include/weakreference.h
+@@ -0,0 +1,218 @@
++/*** Autogenerated by WIDL 8.0 from include/weakreference.idl - Do not edit ***/
++
++#ifdef _WIN32
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 475
++#endif
++#include <rpc.h>
++#include <rpcndr.h>
++#endif
++
++#ifndef COM_NO_WINDOWS_H
++#include <windows.h>
++#include <ole2.h>
++#endif
++
++#ifndef __weakreference_h__
++#define __weakreference_h__
++
++#ifndef __WIDL_INLINE
++#if defined(__cplusplus) || defined(_MSC_VER)
++#define __WIDL_INLINE inline
++#elif defined(__GNUC__)
++#define __WIDL_INLINE __inline__
++#endif
++#endif
++
++/* Forward declarations */
++
++#ifndef __IWeakReference_FWD_DEFINED__
++#define __IWeakReference_FWD_DEFINED__
++typedef interface IWeakReference IWeakReference;
++#ifdef __cplusplus
++interface IWeakReference;
++#endif /* __cplusplus */
++#endif
++
++#ifndef __IWeakReferenceSource_FWD_DEFINED__
++#define __IWeakReferenceSource_FWD_DEFINED__
++typedef interface IWeakReferenceSource IWeakReferenceSource;
++#ifdef __cplusplus
++interface IWeakReferenceSource;
++#endif /* __cplusplus */
++#endif
++
++/* Headers for imported files */
++
++#include <inspectable.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*****************************************************************************
++ * IWeakReference interface
++ */
++#ifndef __IWeakReference_INTERFACE_DEFINED__
++#define __IWeakReference_INTERFACE_DEFINED__
++
++DEFINE_GUID(IID_IWeakReference, 0x00000037, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
++#if defined(__cplusplus) && !defined(CINTERFACE)
++MIDL_INTERFACE("00000037-0000-0000-c000-000000000046")
++IWeakReference : public IUnknown
++{
++ virtual HRESULT STDMETHODCALLTYPE Resolve(
++ REFIID riid,
++ IInspectable **objectReference) = 0;
++
++};
++#ifdef __CRT_UUID_DECL
++__CRT_UUID_DECL(IWeakReference, 0x00000037, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
++#endif
++#else
++typedef struct IWeakReferenceVtbl {
++ BEGIN_INTERFACE
++
++ /*** IUnknown methods ***/
++ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
++ IWeakReference *This,
++ REFIID riid,
++ void **ppvObject);
++
++ ULONG (STDMETHODCALLTYPE *AddRef)(
++ IWeakReference *This);
++
++ ULONG (STDMETHODCALLTYPE *Release)(
++ IWeakReference *This);
++
++ /*** IWeakReference methods ***/
++ HRESULT (STDMETHODCALLTYPE *Resolve)(
++ IWeakReference *This,
++ REFIID riid,
++ IInspectable **objectReference);
++
++ END_INTERFACE
++} IWeakReferenceVtbl;
++
++interface IWeakReference {
++ CONST_VTBL IWeakReferenceVtbl* lpVtbl;
++};
++
++#ifdef COBJMACROS
++#ifndef WIDL_C_INLINE_WRAPPERS
++/*** IUnknown methods ***/
++#define IWeakReference_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWeakReference_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWeakReference_Release(This) (This)->lpVtbl->Release(This)
++/*** IWeakReference methods ***/
++#define IWeakReference_Resolve(This,riid,objectReference) (This)->lpVtbl->Resolve(This,riid,objectReference)
++#else
++/*** IUnknown methods ***/
++static __WIDL_INLINE HRESULT IWeakReference_QueryInterface(IWeakReference* This,REFIID riid,void **ppvObject) {
++ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
++}
++static __WIDL_INLINE ULONG IWeakReference_AddRef(IWeakReference* This) {
++ return This->lpVtbl->AddRef(This);
++}
++static __WIDL_INLINE ULONG IWeakReference_Release(IWeakReference* This) {
++ return This->lpVtbl->Release(This);
++}
++/*** IWeakReference methods ***/
++static __WIDL_INLINE HRESULT IWeakReference_Resolve(IWeakReference* This,REFIID riid,IInspectable **objectReference) {
++ return This->lpVtbl->Resolve(This,riid,objectReference);
++}
++#endif
++#endif
++
++#endif
++
++
++#endif /* __IWeakReference_INTERFACE_DEFINED__ */
++
++/*****************************************************************************
++ * IWeakReferenceSource interface
++ */
++#ifndef __IWeakReferenceSource_INTERFACE_DEFINED__
++#define __IWeakReferenceSource_INTERFACE_DEFINED__
++
++DEFINE_GUID(IID_IWeakReferenceSource, 0x00000038, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
++#if defined(__cplusplus) && !defined(CINTERFACE)
++MIDL_INTERFACE("00000038-0000-0000-c000-000000000046")
++IWeakReferenceSource : public IUnknown
++{
++ virtual HRESULT STDMETHODCALLTYPE GetWeakReference(
++ IWeakReference **weakReference) = 0;
++
++};
++#ifdef __CRT_UUID_DECL
++__CRT_UUID_DECL(IWeakReferenceSource, 0x00000038, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
++#endif
++#else
++typedef struct IWeakReferenceSourceVtbl {
++ BEGIN_INTERFACE
++
++ /*** IUnknown methods ***/
++ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
++ IWeakReferenceSource *This,
++ REFIID riid,
++ void **ppvObject);
++
++ ULONG (STDMETHODCALLTYPE *AddRef)(
++ IWeakReferenceSource *This);
++
++ ULONG (STDMETHODCALLTYPE *Release)(
++ IWeakReferenceSource *This);
++
++ /*** IWeakReferenceSource methods ***/
++ HRESULT (STDMETHODCALLTYPE *GetWeakReference)(
++ IWeakReferenceSource *This,
++ IWeakReference **weakReference);
++
++ END_INTERFACE
++} IWeakReferenceSourceVtbl;
++
++interface IWeakReferenceSource {
++ CONST_VTBL IWeakReferenceSourceVtbl* lpVtbl;
++};
++
++#ifdef COBJMACROS
++#ifndef WIDL_C_INLINE_WRAPPERS
++/*** IUnknown methods ***/
++#define IWeakReferenceSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define IWeakReferenceSource_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define IWeakReferenceSource_Release(This) (This)->lpVtbl->Release(This)
++/*** IWeakReferenceSource methods ***/
++#define IWeakReferenceSource_GetWeakReference(This,weakReference) (This)->lpVtbl->GetWeakReference(This,weakReference)
++#else
++/*** IUnknown methods ***/
++static __WIDL_INLINE HRESULT IWeakReferenceSource_QueryInterface(IWeakReferenceSource* This,REFIID riid,void **ppvObject) {
++ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
++}
++static __WIDL_INLINE ULONG IWeakReferenceSource_AddRef(IWeakReferenceSource* This) {
++ return This->lpVtbl->AddRef(This);
++}
++static __WIDL_INLINE ULONG IWeakReferenceSource_Release(IWeakReferenceSource* This) {
++ return This->lpVtbl->Release(This);
++}
++/*** IWeakReferenceSource methods ***/
++static __WIDL_INLINE HRESULT IWeakReferenceSource_GetWeakReference(IWeakReferenceSource* This,IWeakReference **weakReference) {
++ return This->lpVtbl->GetWeakReference(This,weakReference);
++}
++#endif
++#endif
++
++#endif
++
++
++#endif /* __IWeakReferenceSource_INTERFACE_DEFINED__ */
++
++/* Begin additional prototypes for all interfaces */
++
++
++/* End additional prototypes */
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __weakreference_h__ */
+diff --git a/mingw-w64-headers/include/weakreference.idl b/mingw-w64-headers/include/weakreference.idl
+new file mode 100644
+index 000000000..037fce859
+--- /dev/null
++++ b/mingw-w64-headers/include/weakreference.idl
+@@ -0,0 +1,28 @@
++import "inspectable.idl";
++
++[object, uuid(00000037-0000-0000-C000-000000000046), pointer_default (unique)]
++interface IWeakReference: IUnknown
++{
++// cpp_quote("#if (_MSC_VER >= 1600) && defined(__cplusplus) && !defined(CINTERFACE)")
++// cpp_quote(" EXTERN_C const IID IID_IWeakReference;")
++// cpp_quote(" extern \"C++\"")
++// cpp_quote(" {")
++// cpp_quote(" MIDL_INTERFACE(\"00000037-0000-0000-C000-000000000046\")")
++// cpp_quote(" IWeakReference : public IUnknown {")
++// cpp_quote(" public:")
++// cpp_quote(" virtual HRESULT STDMETHODCALLTYPE Resolve(REFIID riid, IInspectable **objectReference) = 0;")
++// cpp_quote("")
++// cpp_quote(" template <typename T>")
++// cpp_quote(" HRESULT Resolve(T** objectReference) {")
++// cpp_quote(" return 0;")
++// cpp_quote(" }")
++// cpp_quote(" };")
++// cpp_quote(" } // extern C++")
++// cpp_quote("#else")
++ HRESULT Resolve([in] REFIID riid, [out, retval, iid_is(riid)] IInspectable **objectReference);
++}
++
++[object, uuid(00000038-0000-0000-C000-000000000046), pointer_default (unique)]
++interface IWeakReferenceSource : IUnknown {
++ HRESULT GetWeakReference([out, retval] IWeakReference **weakReference);
++}
+diff --git a/mingw-w64-headers/include/windows.graphics.capture.h b/mingw-w64-headers/include/windows.graphics.capture.h
+index 203b0f034..4a0c0b546 100644
+--- a/mingw-w64-headers/include/windows.graphics.capture.h
++++ b/mingw-w64-headers/include/windows.graphics.capture.h
+@@ -902,7 +902,7 @@ namespace ABI {
+ {
+ virtual HRESULT STDMETHODCALLTYPE Recreate(
+ ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice *device,
+- enum DirectXPixelFormat pixel_format,
++ enum DirectX::DirectXPixelFormat pixel_format,
+ INT32 number_of_buffers,
+ struct SizeInt32 size) = 0;
+
+@@ -1100,7 +1100,7 @@ namespace ABI {
+ {
+ virtual HRESULT STDMETHODCALLTYPE Create(
+ ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice *device,
+- enum DirectXPixelFormat pixel_format,
++ enum DirectX::DirectXPixelFormat pixel_format,
+ INT32 number_of_buffers,
+ struct SizeInt32 size,
+ ABI::Windows::Graphics::Capture::IDirect3D11CaptureFramePool **result) = 0;
+@@ -1236,7 +1236,7 @@ namespace ABI {
+ {
+ virtual HRESULT STDMETHODCALLTYPE CreateFreeThreaded(
+ ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice *device,
+- enum DirectXPixelFormat pixel_format,
++ enum DirectX::DirectXPixelFormat pixel_format,
+ INT32 number_of_buffers,
+ struct SizeInt32 size,
+ ABI::Windows::Graphics::Capture::IDirect3D11CaptureFramePool **result) = 0;
+diff --git a/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.h b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.h
+new file mode 100644
+index 000000000..7b66f7d16
+--- /dev/null
++++ b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.h
+@@ -0,0 +1,164 @@
++/*** Autogenerated by WIDL 8.0 from include/windows.graphics.directx.direct3d11.interop.idl - Do not edit ***/
++
++#ifdef _WIN32
++#ifndef __REQUIRED_RPCNDR_H_VERSION__
++#define __REQUIRED_RPCNDR_H_VERSION__ 475
++#endif
++#include <rpc.h>
++#include <rpcndr.h>
++#endif
++
++#ifndef COM_NO_WINDOWS_H
++#include <windows.h>
++#include <ole2.h>
++#endif
++
++#ifndef __windows_graphics_directx_direct3d11_interop_h__
++#define __windows_graphics_directx_direct3d11_interop_h__
++
++#ifndef __WIDL_INLINE
++#if defined(__cplusplus) || defined(_MSC_VER)
++#define __WIDL_INLINE inline
++#elif defined(__GNUC__)
++#define __WIDL_INLINE __inline__
++#endif
++#endif
++
++/* Forward declarations */
++
++#ifndef ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_FWD_DEFINED__
++#define ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_FWD_DEFINED__
++typedef interface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess;
++#ifdef __cplusplus
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess
++namespace ABI {
++ namespace Windows {
++ namespace Graphics {
++ namespace DirectX {
++ namespace Direct3D11 {
++ interface IDirect3DDxgiInterfaceAccess;
++ }
++ }
++ }
++ }
++}
++#endif /* __cplusplus */
++#endif
++
++/* Headers for imported files */
++
++#include <windows.graphics.directx.direct3d11.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*****************************************************************************
++ * IDirect3DDxgiInterfaceAccess interface
++ */
++#ifndef ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_INTERFACE_DEFINED__
++#define ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_INTERFACE_DEFINED__
++
++DEFINE_GUID(IID___x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess, 0xa9b3d012, 0x3df2, 0x4ee3, 0xb8,0xd1, 0x86,0x95,0xf4,0x57,0xd3,0xc1);
++#if defined(__cplusplus) && !defined(CINTERFACE)
++} /* extern "C" */
++namespace ABI {
++ namespace Windows {
++ namespace Graphics {
++ namespace DirectX {
++ namespace Direct3D11 {
++ MIDL_INTERFACE("a9b3d012-3df2-4ee3-b8d1-8695f457d3c1")
++ IDirect3DDxgiInterfaceAccess : public IUnknown
++ {
++ virtual HRESULT STDMETHODCALLTYPE GetInterface(
++ REFIID iid,
++ void **object) = 0;
++
++ };
++ }
++ }
++ }
++ }
++}
++extern "C" {
++#ifdef __CRT_UUID_DECL
++__CRT_UUID_DECL(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess, 0xa9b3d012, 0x3df2, 0x4ee3, 0xb8,0xd1, 0x86,0x95,0xf4,0x57,0xd3,0xc1)
++#endif
++#else
++typedef struct __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl {
++ BEGIN_INTERFACE
++
++ /*** IUnknown methods ***/
++ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This,
++ REFIID riid,
++ void **ppvObject);
++
++ ULONG (STDMETHODCALLTYPE *AddRef)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This);
++
++ ULONG (STDMETHODCALLTYPE *Release)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This);
++
++ /*** IDirect3DDxgiInterfaceAccess methods ***/
++ HRESULT (STDMETHODCALLTYPE *GetInterface)(
++ __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess *This,
++ REFIID iid,
++ void **object);
++
++ END_INTERFACE
++} __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl;
++
++interface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess {
++ CONST_VTBL __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl* lpVtbl;
++};
++
++#ifdef COBJMACROS
++#ifndef WIDL_C_INLINE_WRAPPERS
++/*** IUnknown methods ***/
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_Release(This) (This)->lpVtbl->Release(This)
++/*** IDirect3DDxgiInterfaceAccess methods ***/
++#define __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_GetInterface(This,iid,object) (This)->lpVtbl->GetInterface(This,iid,object)
++#else
++/*** IUnknown methods ***/
++static __WIDL_INLINE HRESULT __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_QueryInterface(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This,REFIID riid,void **ppvObject) {
++ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
++}
++static __WIDL_INLINE ULONG __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_AddRef(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This) {
++ return This->lpVtbl->AddRef(This);
++}
++static __WIDL_INLINE ULONG __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_Release(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This) {
++ return This->lpVtbl->Release(This);
++}
++/*** IDirect3DDxgiInterfaceAccess methods ***/
++static __WIDL_INLINE HRESULT __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_GetInterface(__x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess* This,REFIID iid,void **object) {
++ return This->lpVtbl->GetInterface(This,iid,object);
++}
++#endif
++#ifdef WIDL_using_Windows_Graphics_DirectX_Direct3D11
++#define IID_IDirect3DDxgiInterfaceAccess IID___x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess
++#define IDirect3DDxgiInterfaceAccessVtbl __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccessVtbl
++#define IDirect3DDxgiInterfaceAccess __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess
++#define IDirect3DDxgiInterfaceAccess_QueryInterface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_QueryInterface
++#define IDirect3DDxgiInterfaceAccess_AddRef __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_AddRef
++#define IDirect3DDxgiInterfaceAccess_Release __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_Release
++#define IDirect3DDxgiInterfaceAccess_GetInterface __x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_GetInterface
++#endif /* WIDL_using_Windows_Graphics_DirectX_Direct3D11 */
++#endif
++
++#endif
++
++#endif /* ____x_ABI_CWindows_CGraphics_CDirectX_CDirect3D11_CIDirect3DDxgiInterfaceAccess_INTERFACE_DEFINED__ */
++
++/* Begin additional prototypes for all interfaces */
++
++
++/* End additional prototypes */
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __windows_graphics_directx_direct3d11_interop_h__ */
+diff --git a/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.idl b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.idl
+new file mode 100644
+index 000000000..51e2845ea
+--- /dev/null
++++ b/mingw-w64-headers/include/windows.graphics.directx.direct3d11.interop.idl
+@@ -0,0 +1,14 @@
++#ifdef __WIDL__
++#pragma winrt ns_prefix
++#endif
++
++import "windows.graphics.directx.direct3d11.idl";
++
++namespace Windows.Graphics.DirectX.Direct3D11 {
++ [
++ uuid(A9B3D012-3DF2-4EE3-B8D1-8695F457D3C1)
++ ]
++ interface IDirect3DDxgiInterfaceAccess : IUnknown {
++ HRESULT GetInterface([in] REFIID iid, [out, iid_is(iid)] void **object);
++ };
++}
+diff --git a/mingw-w64-headers/include/windows.ui.core.h b/mingw-w64-headers/include/windows.ui.core.h
+index 5eb820b33..8a2e93ce4 100644
+--- a/mingw-w64-headers/include/windows.ui.core.h
++++ b/mingw-w64-headers/include/windows.ui.core.h
+@@ -1602,7 +1602,7 @@ namespace ABI {
+ namespace Core {
+ struct CoreProximityEvaluation {
+ INT32 Score;
+- struct Point AdjustedPoint;
++ struct Foundation::Point AdjustedPoint;
+ };
+ }
+ }
+@@ -2759,11 +2759,11 @@ namespace ABI {
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAsyncKeyState(
+- enum VirtualKey key,
++ enum System::VirtualKey key,
+ enum CoreVirtualKeyStates *state) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetKeyState(
+- enum VirtualKey key,
++ enum System::VirtualKey key,
+ enum CoreVirtualKeyStates *state) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleasePointerCapture(
+@@ -3491,7 +3491,7 @@ namespace ABI {
+ ICoreWindow2 : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE put_PointerPosition(
+- struct Point value) = 0;
++ struct Foundation::Point value) = 0;
+
+ };
+ }
+@@ -4605,7 +4605,7 @@ namespace ABI {
+ IKeyEventArgs : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE get_VirtualKey(
+- enum VirtualKey *value) = 0;
++ enum System::VirtualKey *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_KeyStatus(
+ struct CorePhysicalKeyStatus *value) = 0;
+@@ -4876,7 +4876,7 @@ namespace ABI {
+ ABI::Windows::UI::Input::IPointerPoint **value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_KeyModifiers(
+- enum VirtualKeyModifiers *value) = 0;
++ enum System::VirtualKeyModifiers *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIntermediatePoints(
+ ABI::Windows::Foundation::Collections::IVector<ABI::Windows::UI::Input::PointerPoint* > **value) = 0;
+diff --git a/mingw-w64-headers/include/wrl/client.h b/mingw-w64-headers/include/wrl/client.h
+index aeb886ea8..4fcadc7fc 100644
+--- a/mingw-w64-headers/include/wrl/client.h
++++ b/mingw-w64-headers/include/wrl/client.h
+@@ -9,12 +9,15 @@
+
+ #include <stddef.h>
+ #include <unknwn.h>
+-/* #include <weakreference.h> */
++#include <weakreference.h>
+ #include <roapi.h>
+
+ /* #include <wrl/def.h> */
+ #include <wrl/internal.h>
+
++#define WrlFinal final
++#define WrlSealed sealed
++
+ namespace Microsoft {
+ namespace WRL {
+ namespace Details {
+diff --git a/mingw-w64-headers/include/wrl/event.h b/mingw-w64-headers/include/wrl/event.h
+new file mode 100644
+index 000000000..2e883e241
+--- /dev/null
++++ b/mingw-w64-headers/include/wrl/event.h
+@@ -0,0 +1,368 @@
++#ifndef _WRL_EVENT_H_
++#define _WRL_EVENT_H_
++
++// #include <wrl/def.h>
++#include <wrl/internal.h>
++#include <wrl/client.h>
++#include <wrl/implements.h>
++#include <wrl/wrappers/corewrappers.h>
++#include <eventtoken.h>
++// #include <roerrorapi.h>
++
++#include <pshpack8.h>
++
++namespace Microsoft {
++ namespace WRL {
++ enum DelegateCheckMode {
++ NoCheck = 1
++ };
++
++ template<DelegateCheckMode delegateCheckMode> struct DelegateTraits;
++
++ template<> struct DelegateTraits<NoCheck> {
++ static HRESULT CheckReturn(HRESULT hr) {
++ return 0;
++ }
++ };
++
++ extern __declspec(selectany) const DelegateCheckMode DefaultDelegateCheckMode = NoCheck;
++
++ enum InvokeMode {
++ StopOnFirstError = 1,
++ FireAll = 2,
++ };
++
++ template<InvokeMode invokeModeValue> struct InvokeModeOptions {
++ static const InvokeMode invokeMode = invokeModeValue;
++ };
++
++ template<InvokeMode invokeMode> struct InvokeTraits;
++
++ template<typename TDelegateInterface, typename EventSourceOptions>
++ class EventSource;
++
++ namespace Details {
++ template<typename TDelegateInterface>
++ void* GetDelegateBucketAssist(TDelegateInterface *pDelegate) {
++ return nullptr;
++ }
++
++ template<typename TMemberFunction> struct ArgTraits {
++ static const int args = -1;
++ };
++
++ template<typename TDelegateInterface>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(void)> {
++ static const int args = 0;
++ };
++
++ template<typename TDelegateInterface, typename TArg1>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1)> {
++ static const int args = 1;
++ typedef TArg1 Arg1Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2)>
++ {
++ static const int args = 2;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3)>
++ {
++ static const int args = 3;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4)>
++ {
++ static const int args = 4;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5)>
++ {
++ static const int args = 5;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6)>
++ {
++ static const int args = 6;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6, typename TArg7>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7)>
++ {
++ static const int args = 7;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ typedef TArg7 Arg7Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6, typename TArg7, typename TArg8>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8)>
++ {
++ static const int args = 8;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ typedef TArg7 Arg7Type;
++ typedef TArg8 Arg8Type;
++ };
++
++ template<typename TDelegateInterface, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TArg5, typename TArg6, typename TArg7, typename TArg8, typename TArg9>
++ struct ArgTraits<HRESULT(STDMETHODCALLTYPE TDelegateInterface::*)(TArg1, TArg2, TArg3, TArg4, TArg5, TArg6, TArg7, TArg8, TArg9)>
++ {
++ static const int args = 9;
++ typedef TArg1 Arg1Type;
++ typedef TArg2 Arg2Type;
++ typedef TArg3 Arg3Type;
++ typedef TArg4 Arg4Type;
++ typedef TArg5 Arg5Type;
++ typedef TArg6 Arg6Type;
++ typedef TArg7 Arg7Type;
++ typedef TArg8 Arg8Type;
++ typedef TArg9 Arg9Type;
++ };
++
++ template<typename TDelegateInterface, bool isImplements = __is_base_of(ImplementsBase, TDelegateInterface)>
++ struct ArgTraitsHelper;
++
++ template<typename TDelegateInterface>
++ struct ArgTraitsHelper<TDelegateInterface, false>
++ {
++ typedef decltype(&TDelegateInterface::Invoke) methodType;
++ typedef ArgTraits<methodType> Traits;
++ static const int args = Traits::args;
++ typedef TDelegateInterface Interface;
++ };
++
++ template<typename TDelegateInterface>
++ struct ArgTraitsHelper<TDelegateInterface, true> {};
++
++ template<typename TDelegateInterface> class DelegateArgTraits {};
++
++ template<typename TDelegateInterface, typename ...TArgs>
++ class DelegateArgTraits<HRESULT (STDMETHODCALLTYPE TDelegateInterface::*)(TArgs...)>
++ {
++ template<typename TCallback, DelegateCheckMode checkMode>
++ struct DelegateInvokeHelper WrlSealed : public ::Microsoft::WRL::RuntimeClass<RuntimeClassFlags<Delegate>, TDelegateInterface>, RemoveReference<TCallback>::Type {
++ DelegateInvokeHelper(TCallback&& callback) noexcept {}
++
++ HRESULT STDMETHODCALLTYPE Invoke(TArgs... args) noexcept override {
++ return 0;
++ }
++ };
++
++ public:
++ template<typename TImplements, DelegateCheckMode checkMode = DefaultDelegateCheckMode, typename TLambda>
++ static ComPtr<TImplements> Callback(TLambda&& callback) noexcept {
++ ComPtr<TImplements> empty;
++ return empty;
++ }
++ };
++
++ template<typename TDelegateInterface, bool isImplements = __is_base_of(ImplementsBase, TDelegateInterface)>
++ struct DelegateArgTraitsHelper;
++
++ template<typename TDelegateInterface>
++ struct DelegateArgTraitsHelper<TDelegateInterface, false> {
++ typedef TDelegateInterface Interface;
++ typedef DelegateArgTraits<decltype(&TDelegateInterface::Invoke)> Traits;
++ };
++
++ template<typename TDelegateInterface>
++ struct DelegateArgTraitsHelper<TDelegateInterface, true> {};
++
++ template<typename TDelegateInterface>
++ HRESULT CreateAgileHelper(TDelegateInterface* delegateInterface, TDelegateInterface** wrapper) {
++ return 0;
++ }
++ }
++
++ template<typename TDelegateInterface, typename TLambda>
++ ComPtr<typename Details::DelegateArgTraitsHelper<TDelegateInterface>::Interface> Callback(TLambda&& callback) noexcept {
++ return 0;
++ }
++
++ template<typename TDelegateInterface, typename TFunc>
++ ComPtr<typename Details::DelegateArgTraitsHelper<TDelegateInterface>::Interface> Callback(TFunc* callback) noexcept {
++ return 0;
++ };
++
++ template<typename TDelegateInterface, typename TCallbackObject, typename... TArgs>
++ ComPtr<typename Details::DelegateArgTraitsHelper<TDelegateInterface>::Interface> Callback(TCallbackObject *object, HRESULT(TCallbackObject::* method)(TArgs...)) noexcept {
++ return 0;
++ }
++
++ template<typename TDelegateInterface>
++ HRESULT WeakReferenceCallback(IWeakReferenceSource* innerCallback, TDelegateInterface** callback) {
++ return 0;
++ }
++
++ template<typename TDelegateInterface>
++ HRESULT WeakReferenceCallback(TDelegateInterface* innerCallback, TDelegateInterface** callback) {
++ return 0;
++ }
++
++ template<typename T, typename TDelegateInterface, typename ...TArgs>
++ HRESULT WeakReferenceCallback(T* targetObject, HRESULT (T::*targetMethod)(TArgs... args), TDelegateInterface** callback) {
++ return 0;
++ }
++
++ template<typename T, typename TDelegateInterface, typename ...TArgs>
++ HRESULT WeakReferenceCallback(T* targetObject, HRESULT(T::*targetMethod)(TArgs... args), ::Microsoft::WRL::Details::ComPtrRef< ::Microsoft::WRL::ComPtr<TDelegateInterface>> callback) {
++ return 0;
++ }
++
++ namespace Details {
++
++ class EventTargetArray WrlSealed : public ::Microsoft::WRL::RuntimeClass< ::Microsoft::WRL::RuntimeClassFlags<ClassicCom>, IUnknown > {
++ public:
++ EventTargetArray() noexcept {}
++
++ HRESULT RuntimeClassInitialize(size_t items) noexcept {
++ return 0;
++ }
++
++ ~EventTargetArray() noexcept
++ {
++ delete[] begin_;
++ delete[] bucketAssists_;
++ }
++
++ ComPtr<IUnknown>* Begin() noexcept {
++ return nullptr;
++ }
++
++ ComPtr<IUnknown>* End() noexcept {
++ return nullptr;
++ }
++
++ void AddTail(IUnknown* element) noexcept {
++ }
++
++ void AddTail(IUnknown* element, void *bucketAssist) noexcept {
++ }
++
++ size_t Length() noexcept {
++ return 0;
++ }
++
++ void **Begin_BucketAssists() {
++ return nullptr;
++ }
++
++ void **End_BucketAssists() {
++ return nullptr;
++ }
++
++ private:
++ ComPtr<IUnknown>* begin_;
++
++ ComPtr<IUnknown>* end_;
++
++ void **bucketAssists_;
++ };
++ }
++
++ template<>
++ struct InvokeTraits<FireAll>
++ {
++ template<typename TInvokeMethod, typename TDelegateInterface>
++ static HRESULT InvokeDelegates(TInvokeMethod invokeOne, Details::EventTargetArray *targetArray, EventSource<TDelegateInterface, InvokeModeOptions<FireAll>>* pEvent) {
++ return 0;
++ }
++ };
++
++ template<>
++ struct InvokeTraits<StopOnFirstError>
++ {
++ template<typename TInvokeMethod, typename TDelegateInterface>
++ static HRESULT InvokeDelegates(TInvokeMethod invokeOne, Details::EventTargetArray *targetArray, EventSource<TDelegateInterface, InvokeModeOptions<StopOnFirstError>>* pEvent) {
++ return 0;
++ }
++ };
++
++ template<typename TDelegateInterface, typename TEventSourceOptions>
++ class EventSource {
++ public:
++ EventSource() noexcept {}
++
++ HRESULT Add(TDelegateInterface* delegateInterface, EventRegistrationToken* token) noexcept {
++ return 0;
++ }
++
++ HRESULT Remove(EventRegistrationToken token) noexcept {
++ return 0;
++ }
++
++ protected:
++
++ HRESULT Add(TDelegateInterface* delegateInterface, void *bucketAssist, EventRegistrationToken* token) noexcept {
++ return 0;
++ }
++
++ private:
++
++ HRESULT AddInternal(TDelegateInterface* delegateInterface, void *bucketAssist, EventRegistrationToken* token) noexcept {
++ return 0;
++ }
++
++ template <typename TInvokeMethod>
++ HRESULT DoInvoke(TInvokeMethod invokeOne) noexcept {
++ return 0;
++ }
++
++ public:
++ template<typename ...TArgs>
++ HRESULT InvokeAll(TArgs... args) noexcept {
++ return 0;
++ }
++
++ size_t GetSize() const noexcept {
++ return 0;
++ }
++
++ protected:
++ ComPtr<Details::EventTargetArray> targets_;
++
++ mutable Wrappers::SRWLock targetsPointerLock_;
++
++ Wrappers::SRWLock addRemoveLock_;
++ };
++ }
++}
++
++#include <poppack.h>
++
++#endif
+diff --git a/mingw-w64-headers/include/wrl/implements.h b/mingw-w64-headers/include/wrl/implements.h
+new file mode 100644
+index 000000000..9d5fe962f
+--- /dev/null
++++ b/mingw-w64-headers/include/wrl/implements.h
+@@ -0,0 +1,619 @@
++#ifndef _WRL_IMPLEMENTS_H_
++#define _WRL_IMPLEMENTS_H_
++
++#include <weakreference.h>
++
++#include <wrl\client.h>
++
++#include <pshpack8.h>
++
++
++namespace Microsoft {
++ namespace WRL {
++ template<typename T>
++ struct CloakedIid : T {};
++
++ enum RuntimeClassType {
++ WinRt = 0x0001,
++ ClassicCom = 0x0002,
++ WinRtClassicComMix = WinRt | ClassicCom,
++ InhibitWeakReference = 0x0004,
++ Delegate = ClassicCom,
++ InhibitFtmBase = 0x0008,
++ InhibitRoOriginateError = 0x0010
++ };
++
++ template <unsigned int flags>
++ struct RuntimeClassFlags {
++ static const unsigned int value = flags;
++ };
++
++ namespace Details {
++ struct ImplementsBase {};
++ }
++
++ template<typename Derived, typename MixInType, bool hasImplements>
++ struct MixIn {};
++
++ template <typename FactoryInterface>
++ class ComposableBase {};
++
++ typedef RuntimeClassFlags<WinRt | InhibitWeakReference> InhibitWeakReferencePolicy;
++
++ namespace Details {
++
++ class Nil {};
++
++ class DontUseNewUseMake {
++ private:
++ void* operator new(size_t) throw() {
++ return nullptr;
++ }
++
++ public:
++ void* operator new(size_t, void* placement) throw() {
++ return nullptr;
++ }
++ };
++
++ class RuntimeClassBase {};
++
++ template <unsigned int RuntimeClassTypeT>
++ class RuntimeClassBaseT : private RuntimeClassBase {
++ protected:
++ template<typename T>
++ static HRESULT AsIID(T* implements, REFIID riid, void **ppvObject) throw() {
++ return 0;
++ }
++
++ template<typename T>
++ static HRESULT GetImplementedIIDS(T* implements, ULONG *iidCount, IID **iids) throw() {
++ return 0;
++ }
++
++ public:
++ HRESULT RuntimeClassInitialize() throw() {
++ return 0;
++ }
++ };
++
++ class FtmBaseMarker {};
++
++ template <typename I, typename Base>
++ struct VerifyInheritanceHelper {
++ static void Verify() throw() {}
++ };
++
++ template <typename I>
++ struct VerifyInheritanceHelper<I, Nil> {
++ static void Verify() throw() {}
++ };
++ }
++
++ template <typename I0, typename I1, typename I2 = Details::Nil, typename I3 = Details::Nil,
++ typename I4 = Details::Nil, typename I5 = Details::Nil, typename I6 = Details::Nil,
++ typename I7 = Details::Nil, typename I8 = Details::Nil, typename I9 = Details::Nil>
++ struct ChainInterfaces : I0
++ {
++ protected:
++ template<unsigned int ClassType>
++ static void Verify() throw() {}
++
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ static const unsigned long IidCount;
++
++ static void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename DerivedType, typename BaseType, bool hasImplements, typename I1, typename I2, typename I3,
++ typename I4, typename I5, typename I6,
++ typename I7, typename I8, typename I9>
++ struct ChainInterfaces<MixIn<DerivedType, BaseType, hasImplements>, I1, I2, I3, I4, I5, I6, I7, I8, I9>
++ {
++ protected:
++ template<unsigned int ClassType>
++ static void Verify() throw() {}
++
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ static const unsigned long IidCount;
++
++ static void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ namespace Details {
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper;
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, I0, TInterfaces...> : I0, ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ template <bool IsDelegateToClass>
++ HRESULT CanCastToHelper(REFIID riid, void **ppv, bool *pRefDelegated) throw();
++
++ template <>
++ HRESULT inline CanCastToHelper<true>(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ template <>
++ HRESULT inline CanCastToHelper<false>(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ template <bool IsDelegateToClass> IUnknown* CastToUnknownHelper() throw();
++
++ template <> inline IUnknown* CastToUnknownHelper<true>() throw() {
++ return nullptr;
++ }
++
++ template <> inline IUnknown* CastToUnknownHelper<false>() throw() {
++ return nullptr;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ template <bool IsDelegateToClass> long GetIidCountHelper() throw();
++
++ template <> inline long GetIidCountHelper<true>() throw() {
++ return 0;
++ }
++
++ template <> inline long GetIidCountHelper<false>() throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ template <bool IsDelegateToClass> void FillArrayWithIidHelper(unsigned long *index, IID* iids) throw();
++
++ template <> inline void FillArrayWithIidHelper<true>(unsigned long *index, IID* iids) throw() {}
++
++ template <> inline void FillArrayWithIidHelper<false>(unsigned long *index, IID* iids) throw() {}
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, Details::Nil, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool * pRefDelegated) throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck>
++ {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID, void **, bool*) throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long*, IID*) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, CloakedIid<I0>, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, I0>, ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename C0, typename C1, typename C2, typename C3, typename C4, typename C5, typename C6, typename C7, typename C8, typename C9, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, TInterfaces...> : ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, typename DerivedType, typename BaseType, bool hasImplements, typename ...TInterfaces, bool doStrictCheck>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, MixIn<DerivedType, BaseType, hasImplements>, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, true, TInterfaces...> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename I0, typename ...>
++ struct AreAllNil {
++ static const bool value = false;
++ };
++
++ template <typename ...TInterfaces>
++ struct AreAllNil<Microsoft::WRL::Details::Nil, TInterfaces...> {
++ static const bool value = AreAllNil<TInterfaces...>::value;
++ };
++
++ template <>
++ struct AreAllNil<Microsoft::WRL::Details::Nil> {
++ static const bool value = true;
++ };
++
++ template <typename RuntimeClassFlagsT, typename FactoryInterface, bool doStrictCheck, typename ...TInterfaces>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, ComposableBase<FactoryInterface>, TInterfaces...> : ImplementsHelper<RuntimeClassFlagsT, true, ComposableBase<FactoryInterface>> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ typedef ImplementsHelper<RuntimeClassFlagsT, true, ComposableBase<FactoryInterface>> Base;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return 0;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <typename RuntimeClassFlagsT, typename FactoryInterface, bool doStrictCheck>
++ struct __declspec(novtable) ImplementsHelper<RuntimeClassFlagsT, doStrictCheck, ComposableBase<FactoryInterface>> {
++ protected:
++ template <unsigned int RuntimeClassTypeT> friend class Details::RuntimeClassBaseT;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv, bool *pRefDelegated) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++
++ ImplementsHelper() throw() {}
++
++ ~ImplementsHelper() throw() {}
++
++ public:
++ HRESULT SetComposableBasePointers(IInspectable* base, FactoryInterface* baseFactory) throw() {
++ return 0;
++ }
++
++ ComPtr<IInspectable> GetComposableBase() throw() {
++ return composableBase_;
++ }
++
++ ComPtr<FactoryInterface> GetComposableBaseFactory() throw() {
++ return composableBaseFactory_;
++ }
++
++ private:
++ ComPtr<IInspectable> composableBase_;
++
++ ComPtr<FactoryInterface> composableBaseFactory_;
++
++ IID *iidsCached_;
++
++ unsigned long iidCount_;
++ };
++
++ }
++
++ template <typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) Implements : Details::ImplementsHelper<RuntimeClassFlags<WinRt>, true, I0, TInterfaces...>, Details::ImplementsBase {
++ public:
++ typedef RuntimeClassFlags<WinRt> ClassFlags;
++
++ typedef I0 FirstInterface;
++
++ protected:
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ template <int flags, typename I0, typename ...TInterfaces>
++ struct __declspec(novtable) Implements<RuntimeClassFlags<flags>, I0, TInterfaces...> : Details::ImplementsHelper<RuntimeClassFlags<flags>, true, I0, TInterfaces...>, Details::ImplementsBase {
++ public:
++ typedef RuntimeClassFlags<flags> ClassFlags;
++
++ typedef I0 FirstInterface;
++
++ protected:
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ IUnknown* CastToUnknown() throw() {
++ return nullptr;
++ }
++
++ unsigned long GetIidCount() throw() {
++ return 0;
++ }
++
++ void FillArrayWithIid(unsigned long *index, IID* iids) throw() {}
++ };
++
++ class FtmBase : public Implements< ::Microsoft::WRL::RuntimeClassFlags<WinRtClassicComMix>, ::Microsoft::WRL::CloakedIid< ::IMarshal> >, private ::Microsoft::WRL::Details::FtmBaseMarker {
++ protected:
++ template <typename RuntimeClassFlagsT, bool doStrictCheck, typename ...TInterfaces> friend struct Details::ImplementsHelper;
++
++ HRESULT CanCastTo(REFIID riid, void **ppv) throw() {
++ return 0;
++ }
++
++ public:
++ FtmBase() throw() {}
++
++ STDMETHOD(GetUnmarshalClass)(REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid) override {
++ return 0;
++ }
++
++ STDMETHOD(GetMarshalSizeMax)(REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize) override {
++ return 0;
++ }
++
++ STDMETHOD(MarshalInterface)(IStream *pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags) override {
++ return 0;
++ }
++
++ STDMETHOD(UnmarshalInterface)(IStream *pStm, REFIID riid, void **ppv) override {
++ return 0;
++ }
++
++ STDMETHOD(ReleaseMarshalData)(IStream *pStm) override {
++ return 0;
++ }
++
++ STDMETHOD(DisconnectObject)(DWORD dwReserved) override {
++ return 0;
++ }
++
++ static HRESULT CreateGlobalInterfaceTable(IGlobalInterfaceTable **git) throw() {
++ return 0;
++ }
++
++ ::Microsoft::WRL::ComPtr<IMarshal> marshaller_;
++ };
++
++ namespace Details {
++ #define DETAILS_RTCLASS_FLAGS_ARGUMENTS(RuntimeClassFlagsT) \
++ RuntimeClassFlagsT, \
++ (RuntimeClassFlagsT::value & InhibitWeakReference) == 0, \
++ (RuntimeClassFlagsT::value & WinRt) == WinRt, \
++ __WRL_IMPLEMENTS_FTM_BASE__(RuntimeClassFlagsT::value) \
++
++ template <class RuntimeClassFlagsT, bool implementsWeakReferenceSource, bool implementsInspectable, bool implementsFtmBase, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl;
++
++ template <class RuntimeClassFlagsT, bool implementsWeakReferenceSource, bool implementsFtmBase, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, implementsWeakReferenceSource, false, implementsFtmBase, TInterfaces...> : public Details::ImplementsHelper<RuntimeClassFlagsT, false, TInterfaces...>, public RuntimeClassBaseT<RuntimeClassFlagsT::value>, protected RuntimeClassFlags<InhibitWeakReference>, public DontUseNewUseMake {
++ public:
++ typedef RuntimeClassFlagsT ClassFlags;
++
++ STDMETHOD(QueryInterface)(REFIID riid, void **ppvObject) {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, AddRef)() {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, Release)() {
++ return 0;
++ }
++
++ protected:
++ RuntimeClassImpl() throw() {}
++
++ virtual ~RuntimeClassImpl() throw() {}
++
++ unsigned long InternalAddRef() throw() {
++ return 0;
++ }
++
++ unsigned long InternalRelease() throw() {
++ return 0;
++ }
++
++ unsigned long GetRefCount() const throw() {
++ return 0;
++ }
++
++ friend class WeakReferenceImpl;
++
++ private:
++ volatile long refcount_;
++ };
++
++ template<typename I, bool isImplementsBased = __is_base_of(ImplementsBase, I)>
++ struct HasIInspectable;
++
++ template<typename I>
++ struct HasIInspectable<I, false> {
++ static const bool isIInspectable;
++ };
++
++ template<typename I>
++ struct HasIInspectable<I, true> {
++ static const bool isIInspectable;
++ };
++
++ template<typename I0, bool isIInspectable = true>
++ struct IInspectableInjector;
++
++ template<typename I0>
++ struct IInspectableInjector<I0, true> {
++ typedef Details::Nil InspectableIfNeeded;
++ };
++
++ template<typename I0>
++ struct IInspectableInjector<I0, false> {
++ typedef IInspectable InspectableIfNeeded;
++ };
++
++ template <class RuntimeClassFlagsT, typename I0, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, false, true, false, I0, TInterfaces...> : public Details::ImplementsHelper<RuntimeClassFlagsT, false, typename IInspectableInjector<I0>::InspectableIfNeeded, I0, TInterfaces...>, public RuntimeClassBaseT<RuntimeClassFlagsT::value>, protected RuntimeClassFlags<InhibitWeakReference>, public DontUseNewUseMake {
++ public:
++ typedef RuntimeClassFlagsT ClassFlags;
++
++ STDMETHOD(QueryInterface)(REFIID riid, void **ppvObject) {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, AddRef)() {
++ return 0;
++ }
++
++ STDMETHOD_(ULONG, Release)() {
++ return 0;
++ }
++
++ STDMETHOD(GetIids)(ULONG *iidCount, IID **iids) {
++ return 0;
++ }
++
++ protected:
++ RuntimeClassImpl() throw() {}
++
++ virtual ~RuntimeClassImpl() throw() {}
++
++ unsigned long InternalAddRef() throw() {
++ return 0;
++ }
++
++ unsigned long InternalRelease() throw() {
++ return 0;
++ }
++
++ unsigned long GetRefCount() const throw() {
++ return 0;
++ }
++
++ private:
++ volatile long refcount_;
++ };
++
++ template <class RuntimeClassFlagsT, typename I0, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, false, true, true, I0, TInterfaces...> : public RuntimeClassImpl<RuntimeClassFlagsT, false, true, false, I0, TInterfaces...> {};
++
++ template <class RuntimeClassFlagsT, typename I0, typename ...TInterfaces>
++ class __declspec(novtable) RuntimeClassImpl<RuntimeClassFlagsT, true, true, true, I0, TInterfaces...> : public RuntimeClassImpl<RuntimeClassFlagsT, true, true, false, I0, FtmBase, TInterfaces...> {};
++ }
++
++ template <typename ...TInterfaces>
++ class RuntimeClass : public Details::RuntimeClassImpl<DETAILS_RTCLASS_FLAGS_ARGUMENTS(RuntimeClassFlags<WinRt>), TInterfaces...> {
++ RuntimeClass(const RuntimeClass&);
++
++ RuntimeClass& operator=(const RuntimeClass&);
++
++ public:
++ RuntimeClass() throw() {}
++
++ typedef RuntimeClass RuntimeClassT;
++ };
++
++ template <unsigned int classFlags, typename ...TInterfaces>
++ class RuntimeClass<RuntimeClassFlags<classFlags>, TInterfaces...> : public Details::RuntimeClassImpl<DETAILS_RTCLASS_FLAGS_ARGUMENTS(RuntimeClassFlags<classFlags>), TInterfaces...> {
++ RuntimeClass(const RuntimeClass&);
++
++ RuntimeClass& operator=(const RuntimeClass&);
++
++ public:
++ RuntimeClass() throw() {}
++
++ typedef RuntimeClass RuntimeClassT;
++ };
++ }
++}
++
++#include <poppack.h>
++
++#endif
+diff --git a/mingw-w64-headers/include/wrl/internal.h b/mingw-w64-headers/include/wrl/internal.h
+index 715ef74e3..dffa7153d 100644
+--- a/mingw-w64-headers/include/wrl/internal.h
++++ b/mingw-w64-headers/include/wrl/internal.h
+@@ -7,6 +7,8 @@
+ #ifndef _WRL_INTERNAL_H_
+ #define _WRL_INTERNAL_H_
+
++#define __WRL_IMPLEMENTS_FTM_BASE__(flags) (false)
++
+ #include <windows.h>
+
+ namespace Microsoft {
+@@ -29,6 +31,26 @@ namespace Microsoft {
+ struct EnableIf<true, T> {
+ typedef T type;
+ };
++
++ template<class T>
++ struct RemoveReference {
++ typedef T Type;
++ };
++
++ template<class T>
++ struct RemoveReference<T&> {
++ typedef T Type;
++ };
++
++ template<class T>
++ struct RemoveReference<T&&> {
++ typedef T Type;
++ };
++
++ template<class T>
++ inline typename RemoveReference<T>::Type&& Move(T&& arg) throw() {
++ return nullptr;
++ }
+ }
+ }
+ }
+diff --git a/mingw-w64-headers/include/wrl/wrappers/corewrappers.h b/mingw-w64-headers/include/wrl/wrappers/corewrappers.h
+index 221d9cc8f..4b15f43ec 100644
+--- a/mingw-w64-headers/include/wrl/wrappers/corewrappers.h
++++ b/mingw-w64-headers/include/wrl/wrappers/corewrappers.h
+@@ -22,6 +22,129 @@ namespace Microsoft {
+ }
+
+ namespace Wrappers {
++ namespace HandleTraits {
++ struct SRWLockSharedTraits {
++ typedef SRWLOCK* Type;
++
++ inline static Type GetInvalidValue() throw() {
++ return nullptr;
++ }
++
++ inline static void Unlock(Type srwlock) throw() {}
++ };
++
++ struct SRWLockExclusiveTraits {
++ typedef SRWLOCK* Type;
++
++ inline static Type GetInvalidValue() throw() {
++ return nullptr;
++ }
++
++ inline static void Unlock(Type srwlock) throw() {}
++ };
++ }
++
++ class SRWLock;
++
++ namespace Details {
++ class SyncLockExclusive {
++ public:
++ SyncLockExclusive(SyncLockExclusive&& other) throw() {}
++
++ SyncLockExclusive(const SyncLockExclusive&);
++ SyncLockExclusive& operator=(const SyncLockExclusive&);
++
++ ~SyncLockExclusive() throw() {}
++
++ void Unlock() throw() {}
++
++ bool IsLocked() const throw() {
++ return 0;
++ }
++
++ friend class Wrappers::SRWLock;
++
++ protected:
++ explicit SyncLockExclusive(SRWLOCK* sync) throw() {}
++
++ SRWLOCK* sync_;
++
++ private:
++ void InternalUnlock() throw() {}
++ };
++
++ class SyncLockShared {
++ public:
++ SyncLockShared(SyncLockShared&& other) throw() {}
++
++ SyncLockShared(const SyncLockShared&);
++ SyncLockShared& operator=(const SyncLockShared&);
++
++ ~SyncLockShared() throw() {}
++
++ void Unlock() throw() {}
++
++ bool IsLocked() const throw() {
++ return 0;
++ }
++
++ friend class Wrappers::SRWLock;
++
++ protected:
++ explicit SyncLockShared(SRWLOCK* sync) throw() {}
++
++ SRWLOCK* sync_;
++
++ private:
++ void InternalUnlock() throw() {}
++ };
++ }
++
++ class SRWLock {
++ public:
++ SRWLock() throw() {}
++
++ SRWLock(const SRWLock&) = delete;
++ SRWLock& operator=(const SRWLock&) = delete;
++
++ ~SRWLock() throw() {}
++
++ Details::SyncLockExclusive LockExclusive() throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ static Details::SyncLockExclusive LockExclusive(SRWLOCK* lock) throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ Details::SyncLockExclusive TryLockExclusive() throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ static Details::SyncLockExclusive TryLockExclusive(SRWLOCK* lock) throw() {
++ return Details::SyncLockExclusive(nullptr);
++ }
++
++ Details::SyncLockShared LockShared() throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ static Details::SyncLockShared LockShared(SRWLOCK* lock) throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ Details::SyncLockShared TryLockShared() throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ static Details::SyncLockShared TryLockShared(SRWLOCK* lock) throw() {
++ return Details::SyncLockShared(nullptr);
++ }
++
++ protected:
++ SRWLOCK SRWLock_;
++ };
++
+ class HStringReference {
+ private:
+ void Init(const wchar_t* str, unsigned int len) {
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-14.0] Bug 43245: Use separate entitlements for signing tor
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch maint-14.0 at The Tor Project / Applications / tor-browser-build
Commits:
4a836c67 by Nicolas Vigier at 2024-10-31T18:20:36+00:00
Bug 43245: Use separate entitlements for signing tor
Use a separate entitlements file for signing the tor binary, with
`com.apple.security.cs.allow-unsigned-executable-memory` enabled.
- - - - -
2 changed files:
- + tools/signing/macos-entitlements/tor.xml
- tools/signing/wrappers/sign-rcodesign-128
Changes:
=====================================
tools/signing/macos-entitlements/tor.xml
=====================================
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!--
+ Entitlements to apply to the tor process executable.
+-->
+<plist version="1.0">
+ <dict>
+ <!-- tor needs this when connecting to PoW onion-services.
+ See tor-browser#43250 and tor#40988 -->
+ <key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
+
+ <!-- Allow loading third party libraries to support pkcs11 modules -->
+ <key>com.apple.security.cs.disable-library-validation</key><true/>
+
+ <key>com.apple.security.cs.allow-jit</key><true/>
+ </dict>
+</plist>
=====================================
tools/signing/wrappers/sign-rcodesign-128
=====================================
@@ -82,6 +82,7 @@ $rcodesign sign \
--code-signature-flags Contents/Frameworks/ChannelPrefs.framework:runtime \
--code-signature-flags Contents/MacOS/plugin-container.app:runtime \
--code-signature-flags Contents/MacOS/media-plugin-helper.app:runtime \
+ --entitlements-xml-path Contents/MacOS/Tor/tor:/signing/tor-browser-build/tools/signing/macos-entitlements/tor.xml \
--entitlements-xml-path Contents/MacOS/plugin-container.app:/signing/tor-browser-build/tools/signing/macos-entitlements/plugin-container.xml \
--entitlements-xml-path Contents/MacOS/media-plugin-helper.app:/signing/tor-browser-build/tools/signing/macos-entitlements/media-plugin-helper.xml \
--entitlements-xml-path /signing/tor-browser-build/tools/signing/macos-entitlements/firefox.browser.xml \
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 43245: Use separate entitlements for signing tor
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
c4fb2737 by Nicolas Vigier at 2024-10-31T18:19:37+00:00
Bug 43245: Use separate entitlements for signing tor
Use a separate entitlements file for signing the tor binary, with
`com.apple.security.cs.allow-unsigned-executable-memory` enabled.
- - - - -
2 changed files:
- + tools/signing/macos-entitlements/tor.xml
- tools/signing/wrappers/sign-rcodesign-128
Changes:
=====================================
tools/signing/macos-entitlements/tor.xml
=====================================
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!--
+ Entitlements to apply to the tor process executable.
+-->
+<plist version="1.0">
+ <dict>
+ <!-- tor needs this when connecting to PoW onion-services.
+ See tor-browser#43250 and tor#40988 -->
+ <key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
+
+ <!-- Allow loading third party libraries to support pkcs11 modules -->
+ <key>com.apple.security.cs.disable-library-validation</key><true/>
+
+ <key>com.apple.security.cs.allow-jit</key><true/>
+ </dict>
+</plist>
=====================================
tools/signing/wrappers/sign-rcodesign-128
=====================================
@@ -82,6 +82,7 @@ $rcodesign sign \
--code-signature-flags Contents/Frameworks/ChannelPrefs.framework:runtime \
--code-signature-flags Contents/MacOS/plugin-container.app:runtime \
--code-signature-flags Contents/MacOS/media-plugin-helper.app:runtime \
+ --entitlements-xml-path Contents/MacOS/Tor/tor:/signing/tor-browser-build/tools/signing/macos-entitlements/tor.xml \
--entitlements-xml-path Contents/MacOS/plugin-container.app:/signing/tor-browser-build/tools/signing/macos-entitlements/plugin-container.xml \
--entitlements-xml-path Contents/MacOS/media-plugin-helper.app:/signing/tor-browser-build/tools/signing/macos-entitlements/media-plugin-helper.xml \
--entitlements-xml-path /signing/tor-browser-build/tools/signing/macos-entitlements/firefox.browser.xml \
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 41243: Use separate entitlements for signing tor
by morgan (@morgan) 31 Oct '24
by morgan (@morgan) 31 Oct '24
31 Oct '24
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
429a5220 by Nicolas Vigier at 2024-10-31T17:35:09+01:00
Bug 41243: Use separate entitlements for signing tor
Use a separate entitlements file for signing the tor binary, with
`com.apple.security.cs.allow-unsigned-executable-memory` enabled.
- - - - -
2 changed files:
- + tools/signing/macos-entitlements/tor.xml
- tools/signing/wrappers/sign-rcodesign-128
Changes:
=====================================
tools/signing/macos-entitlements/tor.xml
=====================================
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<!--
+ Entitlements to apply to the tor process executable.
+-->
+<plist version="1.0">
+ <dict>
+ <!-- tor needs this when connecting to PoW onion-services.
+ See tor-browser#43250 and tor#40988 -->
+ <key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
+
+ <!-- Allow loading third party libraries to support pkcs11 modules -->
+ <key>com.apple.security.cs.disable-library-validation</key><true/>
+
+ <key>com.apple.security.cs.allow-jit</key><true/>
+ </dict>
+</plist>
=====================================
tools/signing/wrappers/sign-rcodesign-128
=====================================
@@ -82,6 +82,7 @@ $rcodesign sign \
--code-signature-flags Contents/Frameworks/ChannelPrefs.framework:runtime \
--code-signature-flags Contents/MacOS/plugin-container.app:runtime \
--code-signature-flags Contents/MacOS/media-plugin-helper.app:runtime \
+ --entitlements-xml-path Contents/MacOS/Tor/tor:/signing/tor-browser-build/tools/signing/macos-entitlements/tor.xml \
--entitlements-xml-path Contents/MacOS/plugin-container.app:/signing/tor-browser-build/tools/signing/macos-entitlements/plugin-container.xml \
--entitlements-xml-path Contents/MacOS/media-plugin-helper.app:/signing/tor-browser-build/tools/signing/macos-entitlements/media-plugin-helper.xml \
--entitlements-xml-path /signing/tor-browser-build/tools/signing/macos-entitlements/firefox.browser.xml \
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-128.4.0esr-14.5-1] 2 commits: fixup! Bug 42305: Add script to combine translation files across versions.
by Pier Angelo Vendrame (@pierov) 31 Oct '24
by Pier Angelo Vendrame (@pierov) 31 Oct '24
31 Oct '24
Pier Angelo Vendrame pushed to branch tor-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
7b61c406 by Henry Wilkes at 2024-10-31T10:32:12+00:00
fixup! Bug 42305: Add script to combine translation files across versions.
Bug 43272: Fix git fetch in translation CI script.
- - - - -
3f690c6b by Henry Wilkes at 2024-10-31T10:47:28+00:00
fixup! Add CI for Tor Browser
Bug 43272: Run translation CI whenever CI script changes.
- - - - -
2 changed files:
- .gitlab/ci/update-translations.yml
- tools/torbrowser/l10n/combine-translation-versions.py
Changes:
=====================================
.gitlab/ci/update-translations.yml
=====================================
@@ -7,6 +7,9 @@
- "**/*.properties"
- "**/*.dtd"
- "**/*strings.xml"
+ - "**/update-translations.yml"
+ - "**/l10n/combine/combine.py"
+ - "**/l10n/combine-translation-versions.py"
- if: $FORCE_UPDATE_TRANSLATIONS == "true"
variables:
TOR_BROWSER_COMBINED_FILES_JSON: "combined-translation-files.json"
=====================================
tools/torbrowser/l10n/combine-translation-versions.py
=====================================
@@ -145,7 +145,7 @@ class BrowserBranch:
# Minimal fetch of non-HEAD branch to get the file paths.
# Individual file blobs will be downloaded as needed.
git_run(
- ["fetch", "--depth=1", "--filter=blob:none", "origin", self._ref]
+ ["fetch", "--depth=1", "--filter=blob:none", "origin", self.name]
)
self._file_paths = git_lines(
["ls-tree", "-r", "--format=%(path)", self._ref]
@@ -178,7 +178,7 @@ def get_stable_branch(
# Moreover, we *assume* that the branch with the most recent ESR version
# with such a tag will be used in the *next* stable build in
# tor-browser-build.
- tag_glob = f"{compare_version.prefix}-*esr-*-*-build1"
+ tag_glob = f"{compare_version.prefix}-*-build1"
# To speed up, only fetch the tags without blobs.
git_run(
@@ -188,10 +188,15 @@ def get_stable_branch(
legacy_branches = []
stable_annotation_regex = re.compile(r"\bstable\b")
legacy_annotation_regex = re.compile(r"\blegacy\b")
+ tag_pattern = re.compile(
+ rf"^{re.escape(compare_version.prefix)}-[^-]+esr-[^-]+-[^-]+-build1$"
+ )
for build_tag, annotation in (
line.split(" ", 1) for line in git_lines(["tag", "-n1", "--list", tag_glob])
):
+ if not tag_pattern.match(build_tag):
+ continue
is_stable = bool(stable_annotation_regex.search(annotation))
is_legacy = bool(legacy_annotation_regex.search(annotation))
if not is_stable and not is_legacy:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/8dbd8d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/8dbd8d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/torbrowser-launcher][main] 2 commits: AppArmor: remove duplicate rule
by asciiwolf (@asciiwolf) 31 Oct '24
by asciiwolf (@asciiwolf) 31 Oct '24
31 Oct '24
asciiwolf pushed to branch main at The Tor Project / Applications / torbrowser-launcher
Commits:
9f55ecec by intrigeri at 2024-10-15T11:17:37+00:00
AppArmor: remove duplicate rule
We include the gnome abstraction, which itself includes the X abstraction, so
at least in theory including the X abstraction explicitly should be a no-op.
It looks like adding this line was done based on an incorrect assumption (that
Lubuntu does not include the gnome abstraction), and even if that assumption
were correct, adding this line would not fix the problem (because the parser
would fail to compile the profile regardless).
- https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/merge_…
- https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/merge_…
If there's ever evidence of a system where this line actually solves a problem,
we can reconsider, and I'll be very curious to understand why.
- - - - -
a82c1a02 by asciiwolf at 2024-10-31T10:16:38+00:00
Merge branch 'remove-duplicate-rule' into 'main'
AppArmor: remove duplicate rule
See merge request tpo/applications/torbrowser-launcher!18
- - - - -
1 changed file:
- apparmor/torbrowser.Browser.firefox
Changes:
=====================================
apparmor/torbrowser.Browser.firefox
=====================================
@@ -12,7 +12,6 @@ profile torbrowser_firefox @{torbrowser_firefox_executable} {
#include <abstractions/opencl>
#include if exists <abstractions/vulkan>
#include if exists <abstractions/dbus-session>
- #include if exists <abstractions/X>
deny capability sys_ptrace,
View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/compar…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/torbrowser-launcher/-/compar…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-128.4.0esr-14.5-1] 7 commits: fixup! Lox integration
by Pier Angelo Vendrame (@pierov) 31 Oct '24
by Pier Angelo Vendrame (@pierov) 31 Oct '24
31 Oct '24
Pier Angelo Vendrame pushed to branch tor-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
5ebc9fc7 by Henry Wilkes at 2024-10-30T16:13:30+00:00
fixup! Lox integration
Bug 42597: Fix `#updatePubkeys`.
- - - - -
704133b3 by Henry Wilkes at 2024-10-30T16:13:31+00:00
fixup! Lox integration
Bug 42597: Fix generateInvite.
We make sure to call handle_issue_invite to convert the response from
"issueinvite" into credentials.
We also stop stringifying the lox credentials, which are already a
string.
- - - - -
27ec12e5 by Henry Wilkes at 2024-10-30T16:13:32+00:00
fixup! Lox integration
Bug 42597: Made sure we're always using `JSON.parse(request).request`
where `request` is generated by lox_wasm.
- - - - -
8ca54076 by Henry Wilkes at 2024-10-30T16:24:48+00:00
fixup! Lox integration
Bug 42597: Move duplicate logic into `#makeRequest`.
Moreover, we pass in the common fetch arguments into buildPostRequest
and treat the return value as a string instead of a JSON object.
- - - - -
d7c52d55 by Henry Wilkes at 2024-10-30T16:26:16+00:00
fixup! Lox integration
Bug 42597: Refactor error handling.
A lot of the errors can be propagated to the caller.
- - - - -
f08fc6e4 by Henry Wilkes at 2024-10-30T16:26:17+00:00
fixup! Bug 40597: Implement TorSettings module
Bug 42597: Make buildPostRequest accept fetch arguments.
This allows the request to buildPostRequest in the Lox module use the
same arguments that would be passed to `fetch`.
Also, return the text stream, rather than JSON.
- - - - -
8dbd8dd6 by Henry Wilkes at 2024-10-30T16:26:18+00:00
fixup! Lox integration
Bug 42597: Add note for missing trusted invites.
- - - - -
3 changed files:
- toolkit/components/lox/Lox.sys.mjs
- toolkit/modules/DomainFrontedRequests.sys.mjs
- toolkit/modules/Moat.sys.mjs
Changes:
=====================================
toolkit/components/lox/Lox.sys.mjs
=====================================
@@ -37,6 +37,7 @@ XPCOMUtils.defineLazyModuleGetters(lazy, {
set_panic_hook: "resource://gre/modules/lox_wasm.jsm",
invitation_is_trusted: "resource://gre/modules/lox_wasm.jsm",
issue_invite: "resource://gre/modules/lox_wasm.jsm",
+ handle_issue_invite: "resource://gre/modules/lox_wasm.jsm",
prepare_invite: "resource://gre/modules/lox_wasm.jsm",
get_invites_remaining: "resource://gre/modules/lox_wasm.jsm",
get_trust_level: "resource://gre/modules/lox_wasm.jsm",
@@ -91,6 +92,7 @@ const LoxSettingsPrefs = Object.freeze({
export class LoxError extends Error {
static BadInvite = "BadInvite";
static LoxServerUnreachable = "LoxServerUnreachable";
+ static ErrorResponse = "ErrorResponse";
/**
* @param {string} message - The error message.
@@ -408,89 +410,47 @@ class LoxImpl {
}
/**
- * Update Lox credential after Lox key rotation
- * Do not call directly, use #getPubKeys() instead to start the update only
- * once
+ * Update Lox credential after Lox key rotation.
*
- * @param {string} prevkeys The public keys we are replacing
+ * Do not call directly, use #getPubKeys() instead to start the update only
+ * once.
*/
- async #updatePubkeys(prevkeys) {
- let pubKeys;
- try {
- pubKeys = await this.#makeRequest("pubkeys", []);
- } catch (error) {
- lazy.logger.debug("Failed to get pubkeys", error);
- // Make the next call try again.
- this.#pubKeyPromise = null;
- if (!this.#pubKeys) {
- throw error;
- }
- return;
- }
+ async #updatePubkeys() {
+ let pubKeys = await this.#makeRequest("pubkeys", null);
const prevKeys = this.#pubKeys;
if (prevKeys !== null) {
// check if the lox pubkeys have changed and update the lox
- // credentials if so
- let lox_cred_req;
- try {
- lox_cred_req = JSON.parse(
- lazy.check_lox_pubkeys_update(
- JSON.stringify(pubKeys),
- prevkeys,
- this.#getCredentials(this.#activeLoxId)
- )
- );
- } catch (error) {
- lazy.logger.debug("Check lox pubkey update failed", error);
- // Make the next call try again.
- this.#pubKeyPromise = null;
- return;
- }
- if (lox_cred_req.updated) {
+ // credentials if so.
+ //
+ // The UpdateCredOption rust struct serializes to "req" rather than
+ // "request".
+ const { updated, req: request } = JSON.parse(
+ lazy.check_lox_pubkeys_update(
+ pubKeys,
+ prevKeys,
+ this.#getCredentials(this.#activeLoxId)
+ )
+ );
+ if (updated) {
+ // Try update credentials.
+ // NOTE: This should be re-callable if any step fails.
+ // TODO: Verify this.
lazy.logger.debug(
`Lox pubkey updated, update Lox credential "${this.#activeLoxId}"`
);
- let response;
- try {
- // TODO: If this call doesn't succeed due to a networking error, the Lox
- // credential may be in an unusable state (spent but not updated)
- // until this request can be completed successfully (and until Lox
- // is refactored to send repeat responses:
- // https://gitlab.torproject.org/tpo/anti-censorship/lox/-/issues/74)
- response = await this.#makeRequest("updatecred", lox_cred_req.req);
- } catch (error) {
- lazy.logger.debug("Lox cred update failed.", error);
- // Make the next call try again.
- this.#pubKeyPromise = null;
- return;
- }
- if (response.hasOwnProperty("error")) {
- lazy.logger.error(response.error);
- this.#pubKeyPromise = null;
- lazy.logger.debug(
- `Error response to Lox pubkey update request: "${response.error}", reverting to old pubkeys`
- );
- return;
- }
- let cred;
- try {
- cred = lazy.handle_update_cred(
- lox_cred_req.req,
- JSON.stringify(response),
- pubKeys
- );
- } catch (error) {
- lazy.logger.debug("Unable to handle updated Lox cred", error);
- // Make the next call try again.
- this.#pubKeyPromise = null;
- return;
- }
+ // TODO: If this call doesn't succeed due to a networking error, the Lox
+ // credential may be in an unusable state (spent but not updated)
+ // until this request can be completed successfully (and until Lox
+ // is refactored to send repeat responses:
+ // https://gitlab.torproject.org/tpo/anti-censorship/lox/-/issues/74)
+ let response = await this.#makeRequest("updatecred", request);
+ let cred = lazy.handle_update_cred(request, response, pubKeys);
this.#changeCredentials(this.#activeLoxId, cred);
}
}
// If we arrive here we haven't had other errors before, we can actually
// store the new public key.
- this.#pubKeys = JSON.stringify(pubKeys);
+ this.#pubKeys = pubKeys;
this.#store();
}
@@ -498,16 +458,24 @@ class LoxImpl {
// FIXME: We are always refetching #pubKeys, #encTable and #constants once
// per session, but they may change more frequently. tor-browser#42502
if (this.#pubKeyPromise === null) {
- this.#pubKeyPromise = this.#updatePubkeys();
+ this.#pubKeyPromise = this.#updatePubkeys().catch(error => {
+ lazy.logger.debug("Failed to update pubKeys", error);
+ // Try again with the next call.
+ this.#pubKeyPromise = null;
+ if (!this.#pubKeys) {
+ // Re-throw if we have no pubKeys value for the caller.
+ throw error;
+ }
+ });
}
await this.#pubKeyPromise;
}
async #getEncTable() {
if (this.#encTablePromise === null) {
- this.#encTablePromise = this.#makeRequest("reachability", [])
+ this.#encTablePromise = this.#makeRequest("reachability", null)
.then(encTable => {
- this.#encTable = JSON.stringify(encTable);
+ this.#encTable = encTable;
this.#store();
})
.catch(error => {
@@ -526,10 +494,10 @@ class LoxImpl {
async #getConstants() {
if (this.#constantsPromise === null) {
// Try to update first, but if that doesn't work fall back to stored data
- this.#constantsPromise = this.#makeRequest("constants", [])
+ this.#constantsPromise = this.#makeRequest("constants", null)
.then(constants => {
const prevValue = this.#constants;
- this.#constants = JSON.stringify(constants);
+ this.#constants = constants;
this.#store();
if (prevValue !== this.#constants) {
Services.obs.notifyObservers(null, LoxTopics.UpdateNextUnlock);
@@ -579,7 +547,6 @@ class LoxImpl {
*/
async #backgroundTasks() {
this.#assertInitialized();
- let addedEvent = false;
// Only run background tasks for the active lox ID.
const loxId = this.#activeLoxId;
if (!loxId) {
@@ -591,37 +558,39 @@ class LoxImpl {
// this should catch key rotations (ideally some days) prior to the next
// credential update
await this.#getPubKeys();
+ let levelup = false;
try {
- const levelup = await this.#attemptUpgrade(loxId);
- if (levelup) {
- const level = this.#getLevel(loxId);
- const newEvent = {
- type: "levelup",
- newlevel: level,
- };
- this.#events.push(newEvent);
- this.#store();
- addedEvent = true;
- }
- } catch (err) {
- lazy.logger.error(err);
+ levelup = await this.#attemptUpgrade(loxId);
+ } catch (error) {
+ lazy.logger.error(error);
}
+ if (levelup) {
+ const level = this.#getLevel(loxId);
+ const newEvent = {
+ type: "levelup",
+ newlevel: level,
+ };
+ this.#events.push(newEvent);
+ this.#store();
+ }
+
+ let leveldown = false;
try {
- const leveldown = await this.#blockageMigration(loxId);
- if (leveldown) {
- let level = this.#getLevel(loxId);
- const newEvent = {
- type: "blockage",
- newlevel: level,
- };
- this.#events.push(newEvent);
- this.#store();
- addedEvent = true;
- }
- } catch (err) {
- lazy.logger.error(err);
+ leveldown = await this.#blockageMigration(loxId);
+ } catch (error) {
+ lazy.logger.error(error);
+ }
+ if (leveldown) {
+ let level = this.#getLevel(loxId);
+ const newEvent = {
+ type: "blockage",
+ newlevel: level,
+ };
+ this.#events.push(newEvent);
+ this.#store();
}
- if (addedEvent) {
+
+ if (levelup || leveldown) {
Services.obs.notifyObservers(null, LoxTopics.UpdateEvents);
}
}
@@ -708,7 +677,7 @@ class LoxImpl {
// to issue open invitations for Lox bridges.
async requestOpenInvite() {
this.#assertInitialized();
- let invite = await this.#makeRequest("invite", []);
+ let invite = JSON.parse(await this.#makeRequest("invite", null));
lazy.logger.debug(invite);
return invite;
}
@@ -725,23 +694,20 @@ class LoxImpl {
// It's fine to get pubkey here without a delay since the user will not have a Lox
// credential yet
await this.#getPubKeys();
+ // NOTE: We currently only handle "open invites".
+ // "trusted invites" are not yet supported. tor-browser#42974.
let request = await lazy.open_invite(JSON.parse(invite).invite);
- let response = await this.#makeRequest(
- "openreq",
- JSON.parse(request).request
- );
- lazy.logger.debug("openreq response: ", response);
- if (response.hasOwnProperty("error")) {
- throw new LoxError(
- `Error response to "openreq": ${response.error}`,
- LoxError.BadInvite
- );
+ let response;
+ try {
+ response = await this.#makeRequest("openreq", request);
+ } catch (error) {
+ if (error instanceof LoxError && error.code === LoxError.ErrorResponse) {
+ throw new LoxError("Error response to openreq", LoxError.BadInvite);
+ } else {
+ throw error;
+ }
}
- let cred = lazy.handle_new_lox_credential(
- request,
- JSON.stringify(response),
- this.#pubKeys
- );
+ let cred = lazy.handle_new_lox_credential(request, response, this.#pubKeys);
// Generate an id that is not already in the #credentials map.
let loxId;
do {
@@ -795,31 +761,32 @@ class LoxImpl {
throw new LoxError(`Cannot generate invites at level ${level}`);
}
let request = lazy.issue_invite(
- JSON.stringify(this.#getCredentials(loxId)),
+ this.#getCredentials(loxId),
this.#encTable,
this.#pubKeys
);
- let response = await this.#makeRequest(
- "issueinvite",
- JSON.parse(request).request
- );
- if (response.hasOwnProperty("error")) {
- lazy.logger.error(response.error);
- throw new LoxError(`Error response to "issueinvite": ${response.error}`);
- } else {
- const invite = lazy.prepare_invite(response);
- this.#invites.push(invite);
- // cap length of stored invites
- if (this.#invites.len > 50) {
- this.#invites.shift();
- }
- this.#store();
- this.#changeCredentials(loxId, response);
- Services.obs.notifyObservers(null, LoxTopics.NewInvite);
- // Return a copy.
- // Right now invite is just a string, but that might change in the future.
- return structuredClone(invite);
+ let response = await this.#makeRequest("issueinvite", request);
+ // TODO: Do we ever expect handle_issue_invite to fail (beyond
+ // implementation bugs)?
+ // TODO: What happens if #pubkeys for `issue_invite` differs from the value
+ // when calling `handle_issue_invite`? Should we cache the value at the
+ // start of this method?
+ let cred = lazy.handle_issue_invite(request, response, this.#pubKeys);
+
+ // Store the new credentials as a priority.
+ this.#changeCredentials(loxId, cred);
+
+ const invite = lazy.prepare_invite(cred);
+ this.#invites.push(invite);
+ // cap length of stored invites
+ if (this.#invites.len > 50) {
+ this.#invites.shift();
}
+ this.#store();
+ Services.obs.notifyObservers(null, LoxTopics.NewInvite);
+ // Return a copy.
+ // Right now invite is just a string, but that might change in the future.
+ return structuredClone(invite);
}
/**
@@ -845,15 +812,13 @@ class LoxImpl {
return false;
}
let response = await this.#makeRequest("checkblockage", request);
- if (response.hasOwnProperty("error")) {
- lazy.logger.error(response.error);
- throw new LoxError(
- `Error response to "checkblockage": ${response.error}`
- );
- }
+ // NOTE: If a later method fails, we should be ok to re-call "checkblockage"
+ // from the Lox authority. So there shouldn't be any adverse side effects to
+ // loosing migrationCred.
+ // TODO: Confirm this is safe to lose.
const migrationCred = lazy.handle_check_blockage(
this.#getCredentials(loxId),
- JSON.stringify(response)
+ response
);
request = lazy.blockage_migration(
this.#getCredentials(loxId),
@@ -861,26 +826,21 @@ class LoxImpl {
this.#pubKeys
);
response = await this.#makeRequest("blockagemigration", request);
- if (response.hasOwnProperty("error")) {
- lazy.logger.error(response.error);
- throw new LoxError(
- `Error response to "blockagemigration": ${response.error}`
- );
- }
const cred = lazy.handle_blockage_migration(
this.#getCredentials(loxId),
- JSON.stringify(response),
+ response,
this.#pubKeys
);
this.#changeCredentials(loxId, cred);
return true;
}
- /** Attempts to upgrade the currently saved Lox credential.
- * If an upgrade is available, save an event in the event list.
+ /**
+ * Attempts to upgrade the currently saved Lox credential.
+ * If an upgrade is available, save an event in the event list.
*
- * @param {string} loxId Lox ID
- * @returns {boolean} Whether a levelup event occurred.
+ * @param {string} loxId Lox ID
+ * @returns {boolean} Whether the credential was successfully migrated.
*/
async #attemptUpgrade(loxId) {
await this.#getEncTable();
@@ -895,16 +855,18 @@ class LoxImpl {
this.#encTable,
this.#pubKeys
);
- const response = await this.#makeRequest("levelup", request);
- if (response.hasOwnProperty("error")) {
- lazy.logger.error(response.error);
- throw new LoxError(`Error response to "levelup": ${response.error}`);
+ let response;
+ try {
+ response = await this.#makeRequest("levelup", request);
+ } catch (error) {
+ if (error instanceof LoxError && error.code === LoxError.ErrorResponse) {
+ // Not an error.
+ lazy.logger.debug("Not ready for level up", error);
+ return false;
+ }
+ throw error;
}
- const cred = lazy.handle_level_up(
- request,
- JSON.stringify(response),
- this.#pubKeys
- );
+ const cred = lazy.handle_level_up(request, response, this.#pubKeys);
this.#changeCredentials(loxId, cred);
return true;
}
@@ -922,76 +884,40 @@ class LoxImpl {
this.#getPubKeys();
return false;
}
- let request, response;
+ let request;
try {
request = lazy.trust_promotion(
this.#getCredentials(loxId),
this.#pubKeys
);
} catch (err) {
+ // This function is called routinely during the background tasks without
+ // previous checks on whether an upgrade is possible, so it is expected to
+ // fail with a certain frequency. Therefore, do not relay the error to the
+ // caller and just log the message for debugging.
lazy.logger.debug("Not ready to upgrade", err);
return false;
}
- try {
- response = await this.#makeRequest(
- "trustpromo",
- JSON.parse(request).request
- );
- } catch (err) {
- lazy.logger.error("Failed trust promotion", err);
- return false;
- }
- if (response.hasOwnProperty("error")) {
- lazy.logger.error("Error response from trustpromo", response.error);
- return false;
- }
- lazy.logger.debug("Got promotion cred", response, request);
- let promoCred;
- try {
- promoCred = lazy.handle_trust_promotion(
- request,
- JSON.stringify(response)
- );
- lazy.logger.debug("Formatted promotion cred");
- } catch (err) {
- lazy.logger.error(
- "Unable to handle trustpromo response properly",
- response.error
- );
- return false;
- }
- try {
- request = lazy.trust_migration(
- this.#getCredentials(loxId),
- promoCred,
- this.#pubKeys
- );
- lazy.logger.debug("Formatted migration request");
- } catch (err) {
- lazy.logger.error("Failed to generate trust migration request", err);
- return false;
- }
- try {
- response = await this.#makeRequest(
- "trustmig",
- JSON.parse(request).request
- );
- } catch (err) {
- lazy.logger.error("Failed trust migration", err);
- return false;
- }
- if (response.hasOwnProperty("error")) {
- lazy.logger.error("Error response from trustmig", response.error);
- return false;
- }
- lazy.logger.debug("Got new credential");
- let cred;
- try {
- cred = lazy.handle_trust_migration(request, response);
- } catch (err) {
- lazy.logger.error("Failed to handle response from trustmig", err);
- return false;
- }
+
+ let response = await this.#makeRequest("trustpromo", request);
+ // FIXME: Store response to "trustpromo" in case handle_trust_promotion
+ // or "trustmig" fails. The Lox authority will not accept a re-request
+ // to "trustpromo" with the same credentials.
+ let promoCred = lazy.handle_trust_promotion(request, response);
+ lazy.logger.debug("Formatted promotion cred: ", promoCred);
+
+ request = lazy.trust_migration(
+ this.#getCredentials(loxId),
+ promoCred,
+ this.#pubKeys
+ );
+ response = await this.#makeRequest("trustmig", request);
+ lazy.logger.debug("Got new credential: ", response);
+
+ // FIXME: Store response to "trustmig" in case handle_trust_migration
+ // fails. The Lox authority will not accept a re-request to "trustmig" with
+ // the same credentials.
+ let cred = lazy.handle_trust_migration(request, response);
this.#changeCredentials(loxId, cred);
return true;
}
@@ -1079,38 +1005,47 @@ class LoxImpl {
};
}
- async #makeRequest(procedure, args) {
+ /**
+ * Fetch from the Lox authority.
+ *
+ * @param {string} procedure - The request endpoint.
+ * @param {string} body - The arguments to send in the body, if any.
+ *
+ * @returns {string} - The response body.
+ */
+ async #fetch(procedure, body) {
// TODO: Customize to for Lox
- const serviceUrl = "https://lox.torproject.org";
- const url = `${serviceUrl}/${procedure}`;
+ const url = `https://lox.torproject.org/${procedure}`;
+ const method = "POST";
+ const contentType = "application/vnd.api+json";
if (lazy.TorConnect.state === lazy.TorConnectState.Bootstrapped) {
let request;
try {
request = await fetch(url, {
- method: "POST",
- headers: {
- "Content-Type": "application/vnd.api+json",
- },
- body: JSON.stringify(args),
+ method,
+ headers: { "Content-Type": contentType },
+ body,
});
} catch (error) {
- lazy.logger.debug("fetch fail", url, args, error);
+ lazy.logger.debug("fetch fail", url, body, error);
throw new LoxError(
`fetch "${procedure}" from Lox authority failed: ${error?.message}`,
LoxError.LoxServerUnreachable
);
}
if (!request.ok) {
- lazy.logger.debug("fetch response", url, args, request);
+ lazy.logger.debug("fetch response", url, body, request);
// Do not treat as a LoxServerUnreachable type.
throw new LoxError(
`Lox authority responded to "${procedure}" with ${request.status}: ${request.statusText}`
);
}
- return request.json();
+ return request.text();
}
+ // TODO: Only make domain fronted requests with user permission.
+ // tor-browser#42606.
if (this.#domainFrontedRequests === null) {
this.#domainFrontedRequests = new Promise((resolve, reject) => {
// TODO: Customize to the values for Lox
@@ -1129,9 +1064,9 @@ class LoxImpl {
}
const builder = await this.#domainFrontedRequests;
try {
- return await builder.buildPostRequest(url, args);
+ return await builder.buildRequest(url, { method, contentType, body });
} catch (error) {
- lazy.logger.debug("Domain front request fail", url, args, error);
+ lazy.logger.debug("Domain front request fail", url, body, error);
if (error instanceof lazy.DomainFrontRequestNetworkError) {
throw new LoxError(
`Domain front fetch "${procedure}" from Lox authority failed: ${error?.message}`,
@@ -1149,6 +1084,37 @@ class LoxImpl {
);
}
}
+
+ /**
+ * Make a request to the lox authority, check for an error response, and
+ * convert it to a string.
+ *
+ * @param {string} procedure - The request endpoint.
+ * @param {?string} request - The request data, as a JSON string containing a
+ * "request" field. Or `null` to send no data.
+ *
+ * @returns {string} - The stringified JSON response.
+ */
+ async #makeRequest(procedure, request) {
+ // Verify that the response is valid json, by parsing.
+ const jsonResponse = JSON.parse(
+ await this.#fetch(
+ procedure,
+ request ? JSON.stringify(JSON.parse(request).request) : ""
+ )
+ );
+ lazy.logger.debug(`${procedure} response:`, jsonResponse);
+ if (Object.hasOwn(jsonResponse, "error")) {
+ // TODO: Figure out if any of the "error" responses should be treated as
+ // an error. I.e. which of the procedures have soft failures and hard
+ // failures.
+ throw LoxError(
+ `Error response to ${procedure}: ${jsonResponse.error}`,
+ LoxError.ErrorResponse
+ );
+ }
+ return JSON.stringify(jsonResponse);
+ }
}
export const Lox = new LoxImpl();
=====================================
toolkit/modules/DomainFrontedRequests.sys.mjs
=====================================
@@ -523,34 +523,31 @@ export class DomainFrontRequestBuilder {
}
/**
- * Make a POST request with a JSON body and a JSON response.
+ * Make a request.
*
- * @param {string} url The URL to load
- * @param {object} args The arguments to send to the procedure. It will be
- * serialized to JSON by this function and then set as POST body
- * @returns {Promise<object>} A promise with the parsed response
+ * @param {string} url The URL to request.
+ * @param {object} args The arguments to send to the procedure.
+ * @param {string} args.method The request method.
+ * @param {string} args.body The request body.
+ * @param {string} args.contentType The "Content-Type" header to set.
+ * @returns {string} The response body.
*/
- async buildPostRequest(url, args) {
+ async buildRequest(url, args) {
const ch = this.buildHttpHandler(url);
- const argsJson = JSON.stringify(args);
const inStream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(
Ci.nsIStringInputStream
);
- inStream.setData(argsJson, argsJson.length);
+ inStream.setData(args.body, args.body.length);
const upChannel = ch.QueryInterface(Ci.nsIUploadChannel);
- const contentType = "application/vnd.api+json";
- upChannel.setUploadStream(inStream, contentType, argsJson.length);
- ch.requestMethod = "POST";
+ upChannel.setUploadStream(inStream, args.contentType, args.body.length);
+ ch.requestMethod = args.method;
// Make request
const listener = new ResponseListener();
await ch.asyncOpen(listener, ch);
// wait for response
- const responseJSON = await listener.response();
-
- // parse that JSON
- return JSON.parse(responseJSON);
+ return listener.response();
}
}
=====================================
toolkit/modules/Moat.sys.mjs
=====================================
@@ -108,7 +108,13 @@ export class MoatRPC {
const procedureURIString = `${Services.prefs.getStringPref(
TorLauncherPrefs.moat_service
)}/${procedure}`;
- return this.#requestBuilder.buildPostRequest(procedureURIString, args);
+ return JSON.parse(
+ await this.#requestBuilder.buildRequest(procedureURIString, {
+ method: "POST",
+ contentType: "application/vnd.api+json",
+ body: JSON.stringify(args),
+ })
+ );
}
async testInternetConnection() {
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/5e9deb…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/5e9deb…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-13.5] Bug 41286: Update the deploy update scripts to optinally take an override hash
by morgan (@morgan) 30 Oct '24
by morgan (@morgan) 30 Oct '24
30 Oct '24
morgan pushed to branch maint-13.5 at The Tor Project / Applications / tor-browser-build
Commits:
7dfebb7a by Nicolas Vigier at 2024-10-30T18:36:12+00:00
Bug 41286: Update the deploy update scripts to optinally take an override hash
- - - - -
1 changed file:
- tools/signing/upload-update_responses-to-staticiforme
Changes:
=====================================
tools/signing/upload-update_responses-to-staticiforme
=====================================
@@ -58,12 +58,20 @@ cat << EOF > "$deploy_script"
#!/bin/bash
set -e
-echo "Deploying version $tbb_version"
-echo "update_responses_commit: $update_responses_commit"
+if test "\$#" -gt 1; then
+ echo >&2 "Wrong number of arguments"
+ exit 2
+fi
+
+commit=$update_responses_commit
+test "\$#" -eq 1 && commit="\$1"
+
+test "\$#" -eq 0 && echo "Deploying version $tbb_version"
+echo "update_responses_commit: \$commit"
cd "$update_dir"
git fetch
-changed_files="\$(git diff --name-only HEAD $update_responses_commit)"
+changed_files="\$(git diff --name-only HEAD \$commit)"
if echo "\$changed_files" | grep -qv "$tbb_version_type"
then
echo >&2 "Error: checking out new update_response_commit will changes"
@@ -75,7 +83,7 @@ then
echo >&2 "See tor-browser-build#41168 for more details."
exit 1
fi
-git checkout "$update_responses_commit"
+git checkout "\$commit"
static-update-component aus1.torproject.org
EOF
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-14.0] Bug 41286: Update the deploy update scripts to optinally take an override hash
by morgan (@morgan) 30 Oct '24
by morgan (@morgan) 30 Oct '24
30 Oct '24
morgan pushed to branch maint-14.0 at The Tor Project / Applications / tor-browser-build
Commits:
5c1ddf37 by Nicolas Vigier at 2024-10-30T18:35:18+00:00
Bug 41286: Update the deploy update scripts to optinally take an override hash
- - - - -
1 changed file:
- tools/signing/upload-update_responses-to-staticiforme
Changes:
=====================================
tools/signing/upload-update_responses-to-staticiforme
=====================================
@@ -55,12 +55,20 @@ cat << EOF > "$deploy_script"
#!/bin/bash
set -e
-echo "Deploying version $tbb_version"
-echo "update_responses_commit: $update_responses_commit"
+if test "\$#" -gt 1; then
+ echo >&2 "Wrong number of arguments"
+ exit 2
+fi
+
+commit=$update_responses_commit
+test "\$#" -eq 1 && commit="\$1"
+
+test "\$#" -eq 0 && echo "Deploying version $tbb_version"
+echo "update_responses_commit: \$commit"
cd "$update_dir"
git fetch
-changed_files="\$(git diff --name-only HEAD $update_responses_commit)"
+changed_files="\$(git diff --name-only HEAD \$commit)"
if echo "\$changed_files" | grep -qv "$tbb_version_type"
then
echo >&2 "Error: checking out new update_response_commit will changes"
@@ -72,7 +80,7 @@ then
echo >&2 "See tor-browser-build#41168 for more details."
exit 1
fi
-git checkout "$update_responses_commit"
+git checkout "\$commit"
static-update-component aus1.torproject.org
EOF
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 41286: Update the deploy update scripts to optinally take an override hash
by morgan (@morgan) 30 Oct '24
by morgan (@morgan) 30 Oct '24
30 Oct '24
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
1c24b4a9 by Nicolas Vigier at 2024-10-30T17:48:34+01:00
Bug 41286: Update the deploy update scripts to optinally take an override hash
- - - - -
2 changed files:
- .gitlab/issue_templates/Release Prep - Tor Browser Legacy.md
- tools/signing/upload-update_responses-to-staticiforme
Changes:
=====================================
.gitlab/issue_templates/Release Prep - Tor Browser Legacy.md
=====================================
@@ -268,37 +268,9 @@ popd
git show -s --format=%H
```
- On `staticiforme.torproject.org`, deploy new update responses:
- - **NOTE**: for now this is a bit janky, we should somehow update the workflow to be a bit less hacky
- - [ ] Edit an existing `deploy_update_responses-release.sh` script in your `HOME` directory with the newly pushed commit hash
- - **example**: (hash: `d938943`)
- ```bash
- #!/bin/bash
- set -e
-
- echo "Deploying version 14.0"
- echo "update_responses_commit: d938943"
-
- cd "/srv/aus1-master.torproject.org/htdocs/torbrowser"
- git fetch
- changed_files="$(git diff --name-only HEAD d938943)"
- if echo "$changed_files" | grep -qv "release"
- then
- echo >&2 "Error: checking out new update_response_commit will changes"
- echo >&2 "some files outside of the release directory:"
- echo "$changed_files" | grep -v "release" >&2
- echo >&2 "--"
- echo >&2 "If this is really what you want to do, edit this script to"
- echo >&2 "remove the line 'exit 1' and run it again."
- echo >&2 "See tor-browser-build#41168 for more details."
- exit 1
- fi
- git checkout "d938943"
-
- static-update-component aus1.torproject.org
- ```
- - [ ] Enable update responses:
+ - [ ] Enable update responses, passing the commit hash as argument (replace $commit):
```bash
- sudo -u tb-release ./deploy_update_responses-release.sh
+ sudo -u tb-release ./deploy_update_responses-release.sh $commit
```
</details>
=====================================
tools/signing/upload-update_responses-to-staticiforme
=====================================
@@ -55,12 +55,20 @@ cat << EOF > "$deploy_script"
#!/bin/bash
set -e
-echo "Deploying version $tbb_version"
-echo "update_responses_commit: $update_responses_commit"
+if test "\$#" -gt 1; then
+ echo >&2 "Wrong number of arguments"
+ exit 2
+fi
+
+commit=$update_responses_commit
+test "\$#" -eq 1 && commit="\$1"
+
+test "\$#" -eq 0 && echo "Deploying version $tbb_version"
+echo "update_responses_commit: \$commit"
cd "$update_dir"
git fetch
-changed_files="\$(git diff --name-only HEAD $update_responses_commit)"
+changed_files="\$(git diff --name-only HEAD \$commit)"
if echo "\$changed_files" | grep -qv "$tbb_version_type"
then
echo >&2 "Error: checking out new update_response_commit will changes"
@@ -72,7 +80,7 @@ then
echo >&2 "See tor-browser-build#41168 for more details."
exit 1
fi
-git checkout "$update_responses_commit"
+git checkout "\$commit"
static-update-component aus1.torproject.org
EOF
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.4.0esr-14.5-1] fixup! Adding issue and merge request templates
by Pier Angelo Vendrame (@pierov) 30 Oct '24
by Pier Angelo Vendrame (@pierov) 30 Oct '24
30 Oct '24
Pier Angelo Vendrame pushed to branch mullvad-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
60885fba by Henry Wilkes at 2024-10-30T19:33:54+01:00
fixup! Adding issue and merge request templates
Bug 43262: Update QA desktop checklist to include testing saved keys and
their preferences.
- - - - -
1 changed file:
- .gitlab/issue_templates/QA - Desktop.md
Changes:
=====================================
.gitlab/issue_templates/QA - Desktop.md
=====================================
@@ -135,6 +135,10 @@ Manual QA test check-list for major desktop releases. Please copy/paste form int
- [ ] Onion-Location pill
- [ ] Client authentication
- You can create an ephemeral client-auth onion-service using [onion share](https://onionshare.org)
+ - [ ] Remember key option saves the key between sessions.
+ - [ ] Saved keys are viewable in preferences (privacy).
+ - [ ] Can remove individual keys.
+ - [ ] Can remove all keys at once.
- [ ] Onion service errors
- [ ] invalid onion: http://invalid.onion
- [ ] onion offline: http://wfdn32ds656ycma5gvrh7duvdvxbg2ygzr3no3ijsya25qm6nnko4iqd.onion/
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/608…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/608…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][base-browser-128.4.0esr-14.5-1] fixup! Adding issue and merge request templates
by Pier Angelo Vendrame (@pierov) 30 Oct '24
by Pier Angelo Vendrame (@pierov) 30 Oct '24
30 Oct '24
Pier Angelo Vendrame pushed to branch base-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
8e61683d by Henry Wilkes at 2024-10-30T19:33:33+01:00
fixup! Adding issue and merge request templates
Bug 43262: Update QA desktop checklist to include testing saved keys and
their preferences.
- - - - -
1 changed file:
- .gitlab/issue_templates/QA - Desktop.md
Changes:
=====================================
.gitlab/issue_templates/QA - Desktop.md
=====================================
@@ -135,6 +135,10 @@ Manual QA test check-list for major desktop releases. Please copy/paste form int
- [ ] Onion-Location pill
- [ ] Client authentication
- You can create an ephemeral client-auth onion-service using [onion share](https://onionshare.org)
+ - [ ] Remember key option saves the key between sessions.
+ - [ ] Saved keys are viewable in preferences (privacy).
+ - [ ] Can remove individual keys.
+ - [ ] Can remove all keys at once.
- [ ] Onion service errors
- [ ] invalid onion: http://invalid.onion
- [ ] onion offline: http://wfdn32ds656ycma5gvrh7duvdvxbg2ygzr3no3ijsya25qm6nnko4iqd.onion/
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/8e61683…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/8e61683…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][maint-14.0] Bug 41243: Add apparmor profile to deb package
by boklm (@boklm) 30 Oct '24
by boklm (@boklm) 30 Oct '24
30 Oct '24
boklm pushed to branch maint-14.0 at The Tor Project / Applications / tor-browser-build
Commits:
6d8e1d6f by Nicolas Vigier at 2024-10-30T17:46:21+01:00
Bug 41243: Add apparmor profile to deb package
- - - - -
4 changed files:
- projects/linux-packages/config
- + projects/linux-packages/debian/apparmor.in
- projects/linux-packages/debian/control.in
- projects/linux-packages/debian/rules.in
Changes:
=====================================
projects/linux-packages/config
=====================================
@@ -36,6 +36,7 @@ targets:
- dpkg-dev
- debhelper
- dh-exec
+ - dh-apparmor
# Packages needed to generate dependencies for the deb package
- linux-libc-dev
- libasound2-dev
@@ -148,6 +149,10 @@ input_files:
enable: '[% c("var/build_deb_pkg") || c("var/build_rpm_pkg") %]'
# Debian Package
+ - filename: debian/apparmor
+ content: "[% INCLUDE 'debian/apparmor.in' %]"
+ refresh_input: 1
+ enable: '[% c("var/build_deb_pkg") %]'
- filename: debian/changelog
content: "[% INCLUDE 'debian/changelog.in' %]"
refresh_input: 1
=====================================
projects/linux-packages/debian/apparmor.in
=====================================
@@ -0,0 +1,14 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# AppArmor policy for [% c("var/system_pkg/pkg_name") %]
+
+abi <abi/4.0>,
+include <tunables/global>
+
+profile [% c("var/system_pkg/pkg_name") %] /[% c('var/system_pkg/install_path') %]/[% c("var/projectname") %].real flags=(unconfined) {
+ userns,
+
+ # Site-specific additions and overrides. See local/README for details.
+ include if exists <local/[% c("var/system_pkg/pkg_name") %]>
+}
=====================================
projects/linux-packages/debian/control.in
=====================================
@@ -2,7 +2,7 @@ Source: [% c("var/system_pkg/pkg_name") %]
Maintainer: [% c("var/Project_Name") %] Developers <torbrowser(a)torproject.org>
Priority: optional
Section: web
-Build-Depends: debhelper (>= 9)
+Build-Depends: debhelper (>= 9), dh-apparmor
Package: [% c("var/system_pkg/pkg_name") %]
Architecture: [% c("var_p/system_pkg/deb_archs").join(" ") %]
=====================================
projects/linux-packages/debian/rules.in
=====================================
@@ -12,3 +12,8 @@ override_dh_strip:
override_dh_shlibdeps:
dh_shlibdeps -Xabicheck[% IF c("var/tor-browser") %] -l$(CURDIR)/debian/[% c("var/system_pkg/pkg_name") %]/[% c('var/system_pkg/install_path') %]/TorBrowser/Tor[% END %]
+
+override_dh_install:
+ mkdir -p debian/[% c("var/system_pkg/pkg_name") %]/etc/apparmor.d
+ cp debian/apparmor debian/[% c("var/system_pkg/pkg_name") %]/etc/apparmor.d/[% c("var/system_pkg/pkg_name") %]
+ dh_apparmor --profile-name=[% c("var/system_pkg/pkg_name") %] -p[% c("var/system_pkg/pkg_name") %]
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 41243: Add apparmor profile to deb package
by boklm (@boklm) 30 Oct '24
by boklm (@boklm) 30 Oct '24
30 Oct '24
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
ae68fd52 by Nicolas Vigier at 2024-10-30T17:43:34+01:00
Bug 41243: Add apparmor profile to deb package
- - - - -
4 changed files:
- projects/linux-packages/config
- + projects/linux-packages/debian/apparmor.in
- projects/linux-packages/debian/control.in
- projects/linux-packages/debian/rules.in
Changes:
=====================================
projects/linux-packages/config
=====================================
@@ -36,6 +36,7 @@ targets:
- dpkg-dev
- debhelper
- dh-exec
+ - dh-apparmor
# Packages needed to generate dependencies for the deb package
- linux-libc-dev
- libasound2-dev
@@ -148,6 +149,10 @@ input_files:
enable: '[% c("var/build_deb_pkg") || c("var/build_rpm_pkg") %]'
# Debian Package
+ - filename: debian/apparmor
+ content: "[% INCLUDE 'debian/apparmor.in' %]"
+ refresh_input: 1
+ enable: '[% c("var/build_deb_pkg") %]'
- filename: debian/changelog
content: "[% INCLUDE 'debian/changelog.in' %]"
refresh_input: 1
=====================================
projects/linux-packages/debian/apparmor.in
=====================================
@@ -0,0 +1,14 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# AppArmor policy for [% c("var/system_pkg/pkg_name") %]
+
+abi <abi/4.0>,
+include <tunables/global>
+
+profile [% c("var/system_pkg/pkg_name") %] /[% c('var/system_pkg/install_path') %]/[% c("var/projectname") %].real flags=(unconfined) {
+ userns,
+
+ # Site-specific additions and overrides. See local/README for details.
+ include if exists <local/[% c("var/system_pkg/pkg_name") %]>
+}
=====================================
projects/linux-packages/debian/control.in
=====================================
@@ -2,7 +2,7 @@ Source: [% c("var/system_pkg/pkg_name") %]
Maintainer: [% c("var/Project_Name") %] Developers <torbrowser(a)torproject.org>
Priority: optional
Section: web
-Build-Depends: debhelper (>= 9)
+Build-Depends: debhelper (>= 9), dh-apparmor
Package: [% c("var/system_pkg/pkg_name") %]
Architecture: [% c("var_p/system_pkg/deb_archs").join(" ") %]
=====================================
projects/linux-packages/debian/rules.in
=====================================
@@ -12,3 +12,8 @@ override_dh_strip:
override_dh_shlibdeps:
dh_shlibdeps -Xabicheck[% IF c("var/tor-browser") %] -l$(CURDIR)/debian/[% c("var/system_pkg/pkg_name") %]/[% c('var/system_pkg/install_path') %]/TorBrowser/Tor[% END %]
+
+override_dh_install:
+ mkdir -p debian/[% c("var/system_pkg/pkg_name") %]/etc/apparmor.d
+ cp debian/apparmor debian/[% c("var/system_pkg/pkg_name") %]/etc/apparmor.d/[% c("var/system_pkg/pkg_name") %]
+ dh_apparmor --profile-name=[% c("var/system_pkg/pkg_name") %] -p[% c("var/system_pkg/pkg_name") %]
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/a…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/a…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 41288: Use exec_noco option when using exec
by boklm (@boklm) 30 Oct '24
by boklm (@boklm) 30 Oct '24
30 Oct '24
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
aefae00e by Nicolas Vigier at 2024-10-30T17:10:36+01:00
Bug 41288: Use exec_noco option when using exec
Use the `exec_noco` option added in rbm#40006.
- - - - -
2 changed files:
- projects/firefox/config
- projects/geckoview/config
Changes:
=====================================
projects/firefox/config
=====================================
@@ -21,10 +21,10 @@ var:
browser_branch: '[% c("var/browser_series") %]-[% c("var/browser_rebase") %]'
browser_build: 1
branding_directory_prefix: 'tb'
- copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
+ copyright_year: '[% exec("git show -s --format=%ci" _ c("git_hash") _ "^{commit}", { exec_noco => 1 }).remove("-.*") %]'
nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]'
gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
- git_commit: '[% exec("git rev-parse HEAD") %]'
+ git_commit: '[% exec("git rev-parse " _ c("git_hash") _ "^{commit}", { exec_noco => 1 }) %]'
deps:
- build-essential
- autoconf
@@ -53,7 +53,7 @@ var:
mv -f -- "$rezip_tmpdir/new.zip" [% c("rezip_file") %]
rm -Rf "$rezip_tmpdir"
- l10n-changesets: '[% exec("cat browser/locales/l10n-changesets.json") %]'
+ l10n-changesets: '[% exec("git --no-pager show " _ c("git_hash") _ ":browser/locales/l10n-changesets.json", { exec_noco => 1 }) %]'
steps:
src-tarballs:
=====================================
projects/geckoview/config
=====================================
@@ -22,9 +22,9 @@ var:
browser_rebase: 1
browser_branch: '[% c("var/browser_series") %]-[% c("var/browser_rebase") %]'
browser_build: 1
- copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
+ copyright_year: '[% exec("git show -s --format=%ci" _ c("git_hash") _ "^{commit}", { exec_noco => 1 }).remove("-.*") %]'
gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
- git_commit: '[% exec("git rev-parse HEAD") %]'
+ git_commit: '[% exec("git rev-parse " _ c("git_hash") _ "^{commit}", { exec_noco => 1 }) %]'
deps:
- build-essential
- autoconf
@@ -41,7 +41,7 @@ var:
glean_parser: 14.0.1
variant: beta
has_l10n: '[% !c("var/testbuild") && !c("var/locales").empty %]'
- l10n-changesets: '[% exec("cat browser/locales/l10n-changesets.json") %]'
+ l10n-changesets: '[% exec("git --no-pager show " _ c("git_hash") _ ":browser/locales/l10n-changesets.json", { exec_noco => 1 }) %]'
targets:
release:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/a…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/a…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.4.0esr-14.5-1] Bug 42739: Use the brand name for profile error messages.
by Pier Angelo Vendrame (@pierov) 30 Oct '24
by Pier Angelo Vendrame (@pierov) 30 Oct '24
30 Oct '24
Pier Angelo Vendrame pushed to branch mullvad-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
641655fa by Henry Wilkes at 2024-10-30T08:30:02+01:00
Bug 42739: Use the brand name for profile error messages.
Some messages in profileSelection.properties use gAppData->name as
variable inputs. However, gAppData->name is still "Firefox" for our
base-browser builds, rather than the user-facing browser name. We swap
these instances with the displayed brand name instead.
- - - - -
2 changed files:
- toolkit/xre/ProfileReset.cpp
- toolkit/xre/nsAppRunner.cpp
Changes:
=====================================
toolkit/xre/ProfileReset.cpp
=====================================
@@ -23,8 +23,8 @@
using namespace mozilla;
-extern const XREAppData* gAppData;
-
+static const char kBrandProperties[] =
+ "chrome://branding/locale/brand.properties";
static const char kProfileProperties[] =
"chrome://mozapps/locale/profile/profileSelection.properties";
@@ -49,12 +49,21 @@ nsresult ProfileResetCleanup(nsToolkitProfileService* aService,
mozilla::components::StringBundle::Service();
if (!sbs) return NS_ERROR_FAILURE;
+ nsCOMPtr<nsIStringBundle> brandBundle;
+ Unused << sbs->CreateBundle(kBrandProperties, getter_AddRefs(brandBundle));
+ if (!brandBundle) return NS_ERROR_FAILURE;
+
nsCOMPtr<nsIStringBundle> sb;
Unused << sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
if (!sb) return NS_ERROR_FAILURE;
- NS_ConvertUTF8toUTF16 appName(gAppData->name);
- AutoTArray<nsString, 2> params = {appName, appName};
+ nsAutoString appName;
+ rv = brandBundle->GetStringFromName("brandShortName", appName);
+ if (NS_FAILED(rv)) return rv;
+
+ AutoTArray<nsString, 2> params;
+ params.AppendElement(appName);
+ params.AppendElement(appName);
nsAutoString resetBackupDirectoryName;
=====================================
toolkit/xre/nsAppRunner.cpp
=====================================
@@ -2597,6 +2597,8 @@ nsresult LaunchChild(bool aBlankCommandLine, bool aTryExec) {
return NS_ERROR_LAUNCHED_CHILD_PROCESS;
}
+static const char kBrandProperties[] =
+ "chrome://branding/locale/brand.properties";
static const char kProfileProperties[] =
"chrome://mozapps/locale/profile/profileSelection.properties";
@@ -2666,12 +2668,20 @@ static nsresult ProfileMissingDialog(nsINativeAppSupport* aNative) {
mozilla::components::StringBundle::Service();
NS_ENSURE_TRUE(sbs, NS_ERROR_FAILURE);
+ nsCOMPtr<nsIStringBundle> brandBundle;
+ sbs->CreateBundle(kBrandProperties, getter_AddRefs(brandBundle));
+ NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
nsCOMPtr<nsIStringBundle> sb;
sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
- NS_ConvertUTF8toUTF16 appName(gAppData->name);
- AutoTArray<nsString, 2> params = {appName, appName};
+ nsAutoString appName;
+ rv = brandBundle->GetStringFromName("brandShortName", appName);
+ NS_ENSURE_SUCCESS(rv, NS_ERROR_ABORT);
+
+ AutoTArray<nsString, 2> params;
+ params.AppendElement(appName);
+ params.AppendElement(appName);
// profileMissing
nsAutoString missingMessage;
@@ -2733,12 +2743,21 @@ static ReturnAbortOnError ProfileLockedDialog(nsIFile* aProfileDir,
mozilla::components::StringBundle::Service();
NS_ENSURE_TRUE(sbs, NS_ERROR_FAILURE);
+ nsCOMPtr<nsIStringBundle> brandBundle;
+ sbs->CreateBundle(kBrandProperties, getter_AddRefs(brandBundle));
+ NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
nsCOMPtr<nsIStringBundle> sb;
sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
- NS_ConvertUTF8toUTF16 appName(gAppData->name);
- AutoTArray<nsString, 3> params = {appName, appName, appName};
+ nsAutoString appName;
+ rv = brandBundle->GetStringFromName("brandShortName", appName);
+ NS_ENSURE_SUCCESS(rv, NS_ERROR_ABORT);
+
+ AutoTArray<nsString, 3> params;
+ params.AppendElement(appName);
+ params.AppendElement(appName);
+ params.AppendElement(appName);
nsAutoString killMessage;
#ifndef XP_MACOSX
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/641…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/641…
You're receiving this email because of your account on gitlab.torproject.org.
1
0