diff --git a/.gitattributes b/.gitattributes
index b1279845b..10c214441 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -15,8 +15,12 @@ ml/backend/**/*.cu linguist-vendored
ml/backend/**/*.cuh linguist-vendored
ml/backend/**/*.m linguist-vendored
ml/backend/**/*.metal linguist-vendored
+ml/backend/**/*.comp linguist-vendored
+ml/backend/**/*.glsl linguist-vendored
ml/backend/**/CMakeLists.txt linguist-vendored
+app/webview linguist-vendored
+
llama/build-info.cpp linguist-generated
ml/backend/ggml/ggml/src/ggml-metal/ggml-metal-embed.s linguist-generated
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 40871e644..b4b9602b9 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -15,44 +15,61 @@ jobs:
environment: release
outputs:
GOFLAGS: ${{ steps.goflags.outputs.GOFLAGS }}
+ VERSION: ${{ steps.goflags.outputs.VERSION }}
+ vendorsha: ${{ steps.changes.outputs.vendorsha }}
steps:
- uses: actions/checkout@v4
- name: Set environment
id: goflags
run: |
- echo GOFLAGS="'-ldflags=-w -s \"-X=github.com/ollama/ollama/version.Version=${GITHUB_REF_NAME#v}\" \"-X=github.com/ollama/ollama/server.mode=release\"'" >>$GITHUB_OUTPUT
+ echo GOFLAGS="'-ldflags=-w -s \"-X=github.com/ollama/ollama/version.Version=${GITHUB_REF_NAME#v}\" \"-X=github.com/ollama/ollama/server.mode=release\"'" | tee -a $GITHUB_OUTPUT
+ echo VERSION="${GITHUB_REF_NAME#v}" | tee -a $GITHUB_OUTPUT
+ echo vendorsha=$(make -f Makefile.sync print-base) | tee -a $GITHUB_OUTPUT
darwin-build:
- runs-on: macos-13-xlarge
+ runs-on: macos-14-xlarge
environment: release
needs: setup-environment
- strategy:
- matrix:
- os: [darwin]
- arch: [amd64, arm64]
env:
GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }}
+ VERSION: ${{ needs.setup-environment.outputs.VERSION }}
+ APPLE_IDENTITY: ${{ secrets.APPLE_IDENTITY }}
+ APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
+ APPLE_TEAM_ID: ${{ vars.APPLE_TEAM_ID }}
+ APPLE_ID: ${{ vars.APPLE_ID }}
+ MACOS_SIGNING_KEY: ${{ secrets.MACOS_SIGNING_KEY }}
+ MACOS_SIGNING_KEY_PASSWORD: ${{ secrets.MACOS_SIGNING_KEY_PASSWORD }}
+ CGO_CFLAGS: '-mmacosx-version-min=14.0 -O3'
+ CGO_CXXFLAGS: '-mmacosx-version-min=14.0 -O3'
+ CGO_LDFLAGS: '-mmacosx-version-min=14.0 -O3'
steps:
- uses: actions/checkout@v4
+ - run: |
+ echo $MACOS_SIGNING_KEY | base64 --decode > certificate.p12
+ security create-keychain -p password build.keychain
+ security default-keychain -s build.keychain
+ security unlock-keychain -p password build.keychain
+ security import certificate.p12 -k build.keychain -P $MACOS_SIGNING_KEY_PASSWORD -T /usr/bin/codesign
+ security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k password build.keychain
+ security set-keychain-settings -lut 3600 build.keychain
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
+ cache-dependency-path: |
+ go.sum
+ Makefile.sync
- run: |
- go build -o dist/ .
- env:
- GOOS: ${{ matrix.os }}
- GOARCH: ${{ matrix.arch }}
- CGO_ENABLED: 1
- CGO_CPPFLAGS: '-mmacosx-version-min=11.3'
- - if: matrix.arch == 'amd64'
+ ./scripts/build_darwin.sh
+ - name: Log build results
run: |
- cmake --preset CPU -DCMAKE_OSX_DEPLOYMENT_TARGET=11.3 -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_OSX_ARCHITECTURES=x86_64
- cmake --build --parallel --preset CPU
- cmake --install build --component CPU --strip --parallel 8
+ ls -l dist/
- uses: actions/upload-artifact@v4
with:
- name: build-${{ matrix.os }}-${{ matrix.arch }}
- path: dist/*
+ name: bundles-darwin
+ path: |
+ dist/*.tgz
+ dist/*.zip
+ dist/*.dmg
windows-depends:
strategy:
@@ -65,14 +82,40 @@ jobs:
arch: amd64
preset: 'CUDA 12'
install: https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_571.96_windows.exe
+ cuda-components:
+ - '"cudart"'
+ - '"nvcc"'
+ - '"cublas"'
+ - '"cublas_dev"'
cuda-version: '12.8'
flags: ''
+ - os: windows
+ arch: amd64
+ preset: 'CUDA 13'
+ install: https://developer.download.nvidia.com/compute/cuda/13.0.0/local_installers/cuda_13.0.0_windows.exe
+ cuda-components:
+ - '"cudart"'
+ - '"nvcc"'
+ - '"cublas"'
+ - '"cublas_dev"'
+ - '"crt"'
+ - '"nvvm"'
+ - '"nvptxcompiler"'
+ cuda-version: '13.0'
+ flags: ''
- os: windows
arch: amd64
preset: 'ROCm 6'
install: https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q4-WinSvr2022-For-HIP.exe
rocm-version: '6.2'
flags: '-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma" -DCMAKE_CXX_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma"'
+ runner_dir: 'rocm'
+ - os: windows
+ arch: amd64
+ preset: Vulkan
+ install: https://sdk.lunarg.com/sdk/download/1.4.321.1/windows/vulkansdk-windows-X64-1.4.321.1.exe
+ flags: ''
+ runner_dir: 'vulkan'
runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }}
environment: release
env:
@@ -82,13 +125,14 @@ jobs:
run: |
choco install -y --no-progress ccache ninja
ccache -o cache_dir=${{ github.workspace }}\.ccache
- - if: startsWith(matrix.preset, 'CUDA ') || startsWith(matrix.preset, 'ROCm ')
+ - if: startsWith(matrix.preset, 'CUDA ') || startsWith(matrix.preset, 'ROCm ') || startsWith(matrix.preset, 'Vulkan')
id: cache-install
uses: actions/cache/restore@v4
with:
path: |
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
C:\Program Files\AMD\ROCm
+ C:\VulkanSDK
key: ${{ matrix.install }}
- if: startsWith(matrix.preset, 'CUDA ')
name: Install CUDA ${{ matrix.cuda-version }}
@@ -96,7 +140,7 @@ jobs:
$ErrorActionPreference = "Stop"
if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') {
Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe"
- $subpackages = @("cudart", "nvcc", "cublas", "cublas_dev") | Foreach-Object {"${_}_${{ matrix.cuda-version }}"}
+ $subpackages = @(${{ join(matrix.cuda-components, ', ') }}) | Foreach-Object {"${_}_${{ matrix.cuda-version }}"}
Start-Process -FilePath .\install.exe -ArgumentList (@("-s") + $subpackages) -NoNewWindow -Wait
}
@@ -118,6 +162,18 @@ jobs:
echo "HIPCXX=$hipPath\bin\clang++.exe" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "HIP_PLATFORM=amd" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "CMAKE_PREFIX_PATH=$hipPath" | Out-File -FilePath $env:GITHUB_ENV -Append
+ - if: matrix.preset == 'Vulkan'
+ name: Install Vulkan ${{ matrix.rocm-version }}
+ run: |
+ $ErrorActionPreference = "Stop"
+ if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') {
+ Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe"
+ Start-Process -FilePath .\install.exe -ArgumentList "-c","--am","--al","in" -NoNewWindow -Wait
+ }
+
+ $vulkanPath = (Resolve-Path "C:\VulkanSDK\*").path
+ echo "$vulkanPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+ echo "VULKAN_SDK=$vulkanPath" >> $env:GITHUB_ENV
- if: matrix.preset == 'CPU'
run: |
echo "CC=clang.exe" | Out-File -FilePath $env:GITHUB_ENV -Append
@@ -128,21 +184,26 @@ jobs:
path: |
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
C:\Program Files\AMD\ROCm
+ C:\VulkanSDK
key: ${{ matrix.install }}
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: ${{ github.workspace }}\.ccache
- key: ccache-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.preset }}
+ key: ccache-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.preset }}-${{ needs.setup-environment.outputs.vendorsha }}
- name: Build target "${{ matrix.preset }}"
run: |
Import-Module 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll'
Enter-VsDevShell -VsInstallPath 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' -SkipAutomaticLocation -DevCmdArguments '-arch=x64 -no_logo'
- cmake --preset "${{ matrix.preset }}" ${{ matrix.flags }}
- cmake --build --parallel --preset "${{ matrix.preset }}"
- cmake --install build --component "${{ startsWith(matrix.preset, 'CUDA ') && 'CUDA' || startsWith(matrix.preset, 'ROCm ') && 'HIP' || 'CPU' }}" --strip --parallel 8
+ cmake --preset "${{ matrix.preset }}" ${{ matrix.flags }} --install-prefix "$((pwd).Path)\dist\${{ matrix.os }}-${{ matrix.arch }}"
+ cmake --build --parallel ([Environment]::ProcessorCount) --preset "${{ matrix.preset }}"
+ cmake --install build --component "${{ startsWith(matrix.preset, 'CUDA ') && 'CUDA' || startsWith(matrix.preset, 'ROCm ') && 'HIP' || startsWith(matrix.preset, 'Vulkan') && 'Vulkan' || 'CPU' }}" --strip
+ Remove-Item -Path dist\lib\ollama\rocm\rocblas\library\*gfx906* -ErrorAction SilentlyContinue
env:
CMAKE_GENERATOR: Ninja
+ - name: Log build results
+ run: |
+ gci -path .\dist -Recurse -File | ForEach-Object { get-filehash -path $_.FullName -Algorithm SHA256 } | format-list
- uses: actions/upload-artifact@v4
with:
name: depends-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.preset }}
@@ -153,19 +214,20 @@ jobs:
matrix:
os: [windows]
arch: [amd64, arm64]
+ include:
+ - os: windows
+ arch: amd64
+ llvmarch: x86_64
+ - os: windows
+ arch: arm64
+ llvmarch: aarch64
runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }}
environment: release
needs: [setup-environment]
env:
GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }}
+ VERSION: ${{ needs.setup-environment.outputs.VERSION }}
steps:
- - name: Install AMD64 system dependencies
- if: matrix.arch == 'amd64'
- run: |
- $ErrorActionPreference = "Stop"
- Start-Process "C:\msys64\usr\bin\pacman.exe" -ArgumentList @("-S", "--noconfirm", "mingw-w64-clang-x86_64-gcc-compat", "mingw-w64-clang-x86_64-clang") -NoNewWindow -Wait
- echo "C:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- echo "C:\msys64\clang64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install ARM64 system dependencies
if: matrix.arch == 'arm64'
run: |
@@ -175,24 +237,106 @@ jobs:
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
echo "C:\ProgramData\chocolatey\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+ Invoke-WebRequest -Uri https://aka.ms/vs/17/release/vc_redist.arm64.exe -OutFile "${{ runner.temp }}\vc_redist.arm64.exe"
+ Start-Process -FilePath "${{ runner.temp }}\vc_redist.arm64.exe" -ArgumentList @("/install", "/quiet", "/norestart") -NoNewWindow -Wait
+
choco install -y --no-progress git gzip
echo "C:\Program Files\Git\cmd" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
-
- Invoke-WebRequest -Uri "https://github.com/mstorsjo/llvm-mingw/releases/download/20240619/llvm-mingw-20240619-ucrt-aarch64.zip" -OutFile "${{ runner.temp }}\llvm-mingw-ucrt-aarch64.zip"
- Expand-Archive -Path ${{ runner.temp }}\llvm-mingw-ucrt-aarch64.zip -DestinationPath "C:\Program Files\"
- $installPath=(Resolve-Path -Path "C:\Program Files\llvm-mingw-*-ucrt-aarch64").path
- echo $installPath\bin | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+ - name: Install clang and gcc-compat
+ run: |
+ $ErrorActionPreference = "Stop"
+ Set-ExecutionPolicy Bypass -Scope Process -Force
+ Invoke-WebRequest -Uri "https://github.com/mstorsjo/llvm-mingw/releases/download/20240619/llvm-mingw-20240619-ucrt-${{ matrix.llvmarch }}.zip" -OutFile "${{ runner.temp }}\llvm-mingw-ucrt.zip"
+ Expand-Archive -Path ${{ runner.temp }}\llvm-mingw-ucrt.zip -DestinationPath "C:\Program Files\"
+ $installPath=(Resolve-Path -Path "C:\Program Files\llvm-mingw-*-ucrt*").path
+ echo "$installPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
+ cache-dependency-path: |
+ go.sum
+ Makefile.sync
+ - name: Verify gcc is actually clang
+ run: |
+ $ErrorActionPreference='Continue'
+ $version=& gcc -v 2>&1
+ $version=$version -join "`n"
+ echo "gcc is $version"
+ if ($version -notmatch 'clang') {
+ echo "ERROR: GCC must be clang for proper utf16 handling"
+ exit 1
+ }
+ $ErrorActionPreference='Stop'
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: "20"
- run: |
- go build -o dist/${{ matrix.os }}-${{ matrix.arch }}/ .
+ ./scripts/build_windows ollama app
+ - name: Log build results
+ run: |
+ gci -path .\dist -Recurse -File | ForEach-Object { get-filehash -path $_.FullName -Algorithm SHA256 } | format-list
- uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.os }}-${{ matrix.arch }}
path: |
- dist\${{ matrix.os }}-${{ matrix.arch }}\*.exe
+ dist\*
+
+ windows-app:
+ runs-on: windows
+ environment: release
+ needs: [windows-build, windows-depends]
+ env:
+ GOFLAGS: ${{ needs.setup-environment.outputs.GOFLAGS }}
+ VERSION: ${{ needs.setup-environment.outputs.VERSION }}
+ KEY_CONTAINER: ${{ vars.KEY_CONTAINER }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: google-github-actions/auth@v2
+ with:
+ project_id: ollama
+ credentials_json: ${{ secrets.GOOGLE_SIGNING_CREDENTIALS }}
+ - run: |
+ $ErrorActionPreference = "Stop"
+ Invoke-WebRequest -Uri "https://go.microsoft.com/fwlink/p/?LinkId=323507" -OutFile "${{ runner.temp }}\sdksetup.exe"
+ Start-Process "${{ runner.temp }}\sdksetup.exe" -ArgumentList @("/q") -NoNewWindow -Wait
+
+ Invoke-WebRequest -Uri "https://github.com/GoogleCloudPlatform/kms-integrations/releases/download/cng-v1.0/kmscng-1.0-windows-amd64.zip" -OutFile "${{ runner.temp }}\plugin.zip"
+ Expand-Archive -Path "${{ runner.temp }}\plugin.zip" -DestinationPath "${{ runner.temp }}\plugin\"
+ & "${{ runner.temp }}\plugin\*\kmscng.msi" /quiet
+
+ echo "${{ vars.OLLAMA_CERT }}" >ollama_inc.crt
+ - uses: actions/setup-go@v5
+ with:
+ go-version-file: go.mod
+ cache-dependency-path: |
+ go.sum
+ Makefile.sync
+ - uses: actions/download-artifact@v4
+ with:
+ pattern: depends-windows*
+ path: dist
+ merge-multiple: true
+ - uses: actions/download-artifact@v4
+ with:
+ pattern: build-windows*
+ path: dist
+ merge-multiple: true
+ - name: Log dist contents after download
+ run: |
+ gci -path .\dist -recurse
+ - run: |
+ ./scripts/build_windows.ps1 deps sign installer zip
+ - name: Log contents after build
+ run: |
+ gci -path .\dist -Recurse -File | ForEach-Object { get-filehash -path $_.FullName -Algorithm SHA256 } | format-list
+ - uses: actions/upload-artifact@v4
+ with:
+ name: bundles-windows
+ path: |
+ dist/*.zip
+ dist/OllamaSetup.exe
linux-build:
strategy:
@@ -232,7 +376,8 @@ jobs:
case "$COMPONENT" in
bin/ollama) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;;
lib/ollama/*.so*) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;;
- lib/ollama/cuda_sbsa) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;;
+ lib/ollama/cuda_v*) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;;
+ lib/ollama/vulkan*) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}.tar.in ;;
lib/ollama/cuda_jetpack5) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}-jetpack5.tar.in ;;
lib/ollama/cuda_jetpack6) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}-jetpack6.tar.in ;;
lib/ollama/rocm) echo $COMPONENT >>ollama-${{ matrix.os }}-${{ matrix.arch }}-rocm.tar.in ;;
@@ -251,7 +396,7 @@ jobs:
done
- uses: actions/upload-artifact@v4
with:
- name: dist-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.target }}
+ name: bundles-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.target }}
path: |
*.tgz
@@ -345,17 +490,28 @@ jobs:
docker buildx imagetools inspect ${{ vars.DOCKER_REPO }}:${{ steps.metadata.outputs.version }}
working-directory: ${{ runner.temp }}
- # Trigger downstream release process
- trigger:
+ # Final release process
+ release:
runs-on: ubuntu-latest
environment: release
- needs: [darwin-build, windows-build, windows-depends, linux-build]
+ needs: [darwin-build, windows-app, linux-build]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
+ - uses: actions/download-artifact@v4
+ with:
+ pattern: bundles-*
+ path: dist
+ merge-multiple: true
+ - name: Log dist contents
+ run: |
+ ls -l dist/
+ - name: Generate checksum file
+ run: find . -type f -not -name 'sha256sum.txt' | xargs sha256sum | tee sha256sum.txt
+ working-directory: dist
- name: Create or update Release for tag
run: |
RELEASE_VERSION="$(echo ${GITHUB_REF_NAME} | cut -f1 -d-)"
@@ -372,12 +528,17 @@ jobs:
--generate-notes \
--prerelease
fi
- - name: Trigger downstream release process
+ - name: Upload release artifacts
run: |
- curl -L \
- -X POST \
- -H "Accept: application/vnd.github+json" \
- -H "Authorization: Bearer ${{ secrets.RELEASE_TOKEN }}" \
- -H "X-GitHub-Api-Version: 2022-11-28" \
- https://api.github.com/repos/ollama/${{ vars.RELEASE_REPO }}/dispatches \
- -d "{\"event_type\": \"trigger-workflow\", \"client_payload\": {\"run_id\": \"${GITHUB_RUN_ID}\", \"version\": \"${GITHUB_REF_NAME#v}\", \"origin\": \"${GITHUB_REPOSITORY}\", \"publish\": \"1\"}}"
+ pids=()
+ for payload in dist/*.txt dist/*.zip dist/*.tgz dist/*.exe dist/*.dmg ; do
+ echo "Uploading $payload"
+ gh release upload ${GITHUB_REF_NAME} $payload --clobber &
+ pids[$!]=$!
+ sleep 1
+ done
+ echo "Waiting for uploads to complete"
+ for pid in "${pids[*]}"; do
+ wait $pid
+ done
+ echo "done"
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 4d8cf773c..b614d2f04 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -22,6 +22,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.changes.outputs.changed }}
+ vendorsha: ${{ steps.changes.outputs.vendorsha }}
steps:
- uses: actions/checkout@v4
with:
@@ -37,6 +38,7 @@ jobs:
}
echo changed=$(changed 'llama/llama.cpp/**/*' 'ml/backend/ggml/ggml/**/*') | tee -a $GITHUB_OUTPUT
+ echo vendorsha=$(make -f Makefile.sync print-base) | tee -a $GITHUB_OUTPUT
linux:
needs: [changes]
@@ -46,12 +48,18 @@ jobs:
include:
- preset: CPU
- preset: CUDA
- container: nvidia/cuda:12.8.1-devel-ubuntu22.04
+ container: nvidia/cuda:13.0.0-devel-ubuntu22.04
flags: '-DCMAKE_CUDA_ARCHITECTURES=87'
- preset: ROCm
container: rocm/dev-ubuntu-22.04:6.1.2
extra-packages: rocm-libs
flags: '-DAMDGPU_TARGETS=gfx1010 -DCMAKE_PREFIX_PATH=/opt/rocm'
+ - preset: Vulkan
+ container: ubuntu:22.04
+ extra-packages: >
+ mesa-vulkan-drivers vulkan-tools
+ libvulkan1 libvulkan-dev
+ vulkan-sdk cmake ccache g++ make
runs-on: linux
container: ${{ matrix.container }}
steps:
@@ -59,13 +67,25 @@ jobs:
- run: |
[ -n "${{ matrix.container }}" ] || sudo=sudo
$sudo apt-get update
+ # Add LunarG Vulkan SDK apt repo for Ubuntu 22.04
+ if [ "${{ matrix.preset }}" = "Vulkan" ]; then
+ $sudo apt-get install -y --no-install-recommends wget gnupg ca-certificates software-properties-common
+ wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | $sudo gpg --dearmor -o /usr/share/keyrings/lunarg-archive-keyring.gpg
+ # Use signed-by to bind the repo to the installed keyring to avoid NO_PUBKEY
+ echo "deb [signed-by=/usr/share/keyrings/lunarg-archive-keyring.gpg] https://packages.lunarg.com/vulkan/1.4.313 jammy main" | $sudo tee /etc/apt/sources.list.d/lunarg-vulkan-1.4.313-jammy.list > /dev/null
+ $sudo apt-get update
+ fi
$sudo apt-get install -y cmake ccache ${{ matrix.extra-packages }}
+ # Export VULKAN_SDK if provided by LunarG package (defensive)
+ if [ -d "/usr/lib/x86_64-linux-gnu/vulkan" ] && [ "${{ matrix.preset }}" = "Vulkan" ]; then
+ echo "VULKAN_SDK=/usr" >> $GITHUB_ENV
+ fi
env:
DEBIAN_FRONTEND: noninteractive
- uses: actions/cache@v4
with:
path: /github/home/.cache/ccache
- key: ccache-${{ runner.os }}-${{ runner.arch }}-${{ matrix.preset }}
+ key: ccache-${{ runner.os }}-${{ runner.arch }}-${{ matrix.preset }}-${{ needs.changes.outputs.vendorsha }}
- run: |
cmake --preset ${{ matrix.preset }} ${{ matrix.flags }}
cmake --build --preset ${{ matrix.preset }} --parallel
@@ -78,23 +98,35 @@ jobs:
include:
- preset: CPU
- preset: CUDA
- install: https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_571.96_windows.exe
+ install: https://developer.download.nvidia.com/compute/cuda/13.0.0/local_installers/cuda_13.0.0_windows.exe
flags: '-DCMAKE_CUDA_ARCHITECTURES=80'
+ cuda-components:
+ - '"cudart"'
+ - '"nvcc"'
+ - '"cublas"'
+ - '"cublas_dev"'
+ - '"crt"'
+ - '"nvvm"'
+ - '"nvptxcompiler"'
+ cuda-version: '13.0'
- preset: ROCm
install: https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q4-WinSvr2022-For-HIP.exe
flags: '-DAMDGPU_TARGETS=gfx1010 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma" -DCMAKE_CXX_FLAGS="-parallel-jobs=4 -Wno-ignored-attributes -Wno-deprecated-pragma"'
+ - preset: Vulkan
+ install: https://sdk.lunarg.com/sdk/download/1.4.321.1/windows/vulkansdk-windows-X64-1.4.321.1.exe
runs-on: windows
steps:
- run: |
choco install -y --no-progress ccache ninja
ccache -o cache_dir=${{ github.workspace }}\.ccache
- - if: matrix.preset == 'CUDA' || matrix.preset == 'ROCm'
+ - if: matrix.preset == 'CUDA' || matrix.preset == 'ROCm' || matrix.preset == 'Vulkan'
id: cache-install
uses: actions/cache/restore@v4
with:
path: |
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
C:\Program Files\AMD\ROCm
+ C:\VulkanSDK
key: ${{ matrix.install }}
- if: matrix.preset == 'CUDA'
name: Install CUDA ${{ matrix.cuda-version }}
@@ -102,7 +134,8 @@ jobs:
$ErrorActionPreference = "Stop"
if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') {
Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe"
- Start-Process -FilePath .\install.exe -ArgumentList (@("-s", "cudart_12.8", "nvcc_12.8", "cublas_12.8", "cublas_dev_12.8")) -NoNewWindow -Wait
+ $subpackages = @(${{ join(matrix.cuda-components, ', ') }}) | Foreach-Object {"${_}_${{ matrix.cuda-version }}"}
+ Start-Process -FilePath .\install.exe -ArgumentList (@("-s") + $subpackages) -NoNewWindow -Wait
}
$cudaPath = (Resolve-Path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\*").path
@@ -123,18 +156,31 @@ jobs:
echo "HIPCXX=$hipPath\bin\clang++.exe" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "HIP_PLATFORM=amd" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "CMAKE_PREFIX_PATH=$hipPath" | Out-File -FilePath $env:GITHUB_ENV -Append
+ - if: matrix.preset == 'Vulkan'
+ name: Install Vulkan ${{ matrix.rocm-version }}
+ run: |
+ $ErrorActionPreference = "Stop"
+ if ("${{ steps.cache-install.outputs.cache-hit }}" -ne 'true') {
+ Invoke-WebRequest -Uri "${{ matrix.install }}" -OutFile "install.exe"
+ Start-Process -FilePath .\install.exe -ArgumentList "-c","--am","--al","in" -NoNewWindow -Wait
+ }
+
+ $vulkanPath = (Resolve-Path "C:\VulkanSDK\*").path
+ echo "$vulkanPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+ echo "VULKAN_SDK=$vulkanPath" >> $env:GITHUB_ENV
- if: ${{ !cancelled() && steps.cache-install.outputs.cache-hit != 'true' }}
uses: actions/cache/save@v4
with:
path: |
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
C:\Program Files\AMD\ROCm
+ C:\VulkanSDK
key: ${{ matrix.install }}
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: ${{ github.workspace }}\.ccache
- key: ccache-${{ runner.os }}-${{ runner.arch }}-${{ matrix.preset }}
+ key: ccache-${{ runner.os }}-${{ runner.arch }}-${{ matrix.preset }}-${{ needs.changes.outputs.vendorsha }}
- run: |
Import-Module 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll'
Enter-VsDevShell -VsInstallPath 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' -SkipAutomaticLocation -DevCmdArguments '-arch=x64 -no_logo'
@@ -157,82 +203,37 @@ jobs:
runs-on: ${{ matrix.os }}
env:
CGO_ENABLED: '1'
- GOEXPERIMENT: 'synctest'
steps:
- - name: checkout
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
-
- - name: cache restore
- uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
with:
- # Note: unlike the other setups, this is only grabbing the mod download
- # cache, rather than the whole mod directory, as the download cache
- # contains zips that can be unpacked in parallel faster than they can be
- # fetched and extracted by tar
- path: |
- ~/.cache/go-build
- ~/go/pkg/mod/cache
- ~\AppData\Local\go-build
- # NOTE: The -3- here should be incremented when the scheme of data to be
- # cached changes (e.g. path above changes).
- key: ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3-${{ hashFiles('**/go.sum') }}-${{ github.run_id }}
- restore-keys: |
- ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3-${{ hashFiles('**/go.sum') }}
- ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3-
-
- - name: Setup Go
- uses: actions/setup-go@v5
+ go-version-file: 'go.mod'
+ cache-dependency-path: |
+ go.sum
+ Makefile.sync
+ - uses: actions/setup-node@v4
with:
- # The caching strategy of setup-go is less than ideal, and wastes
- # time by not saving artifacts due to small failures like the linter
- # complaining, etc. This means subsequent have to rebuild their world
- # again until all checks pass. For instance, if you mispell a word,
- # you're punished until you fix it. This is more hostile than
- # helpful.
- cache: false
-
- go-version-file: go.mod
-
- # It is tempting to run this in a platform independent way, but the past
- # shows this codebase will see introductions of platform specific code
- # generation, and so we need to check this per platform to ensure we
- # don't abuse go generate on specific platforms.
- - name: check that 'go generate' is clean
- if: always()
+ node-version: '20'
+ - name: Install UI dependencies
+ working-directory: ./app/ui/app
+ run: npm ci
+ - name: Install tscriptify
run: |
- go generate ./...
- git diff --name-only --exit-code || (echo "Please run 'go generate ./...'." && exit 1)
+ go install github.com/tkrajina/typescriptify-golang-structs/tscriptify@latest
+ - name: Run UI tests
+ if: ${{ startsWith(matrix.os, 'ubuntu') }}
+ working-directory: ./app/ui/app
+ run: npm test
+ - name: Run go generate
+ run: go generate ./...
- name: go test
if: always()
run: go test -count=1 -benchtime=1x ./...
- # TODO(bmizerany): replace this heavy tool with just the
- # tools/checks/binaries we want and then make them all run in parallel
- # across jobs, not on a single tiny vm on Github Actions.
- - uses: golangci/golangci-lint-action@v6
+ - uses: golangci/golangci-lint-action@v9
with:
- args: --timeout 10m0s -v
-
- - name: cache save
- # Always save the cache, even if the job fails. The artifacts produced
- # during the building of test binaries are not all for naught. They can
- # be used to speed up subsequent runs.
- if: always()
-
- uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
- with:
- # Note: unlike the other setups, this is only grabbing the mod download
- # cache, rather than the whole mod directory, as the download cache
- # contains zips that can be unpacked in parallel faster than they can be
- # fetched and extracted by tar
- path: |
- ~/.cache/go-build
- ~/go/pkg/mod/cache
- ~\AppData\Local\go-build
- # NOTE: The -3- here should be incremented when the scheme of data to be
- # cached changes (e.g. path above changes).
- key: ${{ github.job }}-${{ runner.os }}-${{ matrix.goarch }}-${{ matrix.buildflags }}-go-3-${{ hashFiles('**/go.sum') }}-${{ github.run_id }}
+ only-new-issues: true
patches:
runs-on: ubuntu-latest
@@ -241,4 +242,4 @@ jobs:
- name: Verify patches apply cleanly and do not change files
run: |
make -f Makefile.sync clean checkout apply-patches sync
- git diff --compact-summary --exit-code
\ No newline at end of file
+ git diff --compact-summary --exit-code
diff --git a/.gitignore b/.gitignore
index 3a2af0bd1..eabf94c28 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
dist
build
.cache
+.gocache
*.exe
.idea
test_data
diff --git a/.golangci.yaml b/.golangci.yaml
index 9d6705bd3..5a4254132 100644
--- a/.golangci.yaml
+++ b/.golangci.yaml
@@ -1,5 +1,4 @@
-run:
- timeout: 5m
+version: "2"
linters:
enable:
- asasalint
@@ -7,35 +6,46 @@ linters:
- bodyclose
- containedctx
- gocheckcompilerdirectives
- - gofmt
- - gofumpt
- - gosimple
- - govet
- - ineffassign
- intrange
- makezero
- misspell
- nilerr
- nolintlint
- nosprintfhostport
- - staticcheck
- unconvert
- usetesting
- wastedassign
- whitespace
disable:
- - usestdlibvars
- errcheck
-linters-settings:
- staticcheck:
- checks:
- - all
- - -SA1019 # omit Deprecated check
+ - usestdlibvars
+ settings:
+ govet:
+ disable:
+ - unusedresult
+ staticcheck:
+ checks:
+ - all
+ - -QF* # disable quick fix suggestions
+ - -SA1019
+ - -ST1000 # package comment format
+ - -ST1003 # underscores in package names
+ - -ST1005 # error strings should not be capitalized
+ - -ST1012 # error var naming (ErrFoo)
+ - -ST1016 # receiver name consistency
+ - -ST1020 # comment on exported function format
+ - -ST1021 # comment on exported type format
+ - -ST1022 # comment on exported var format
+ - -ST1023 # omit type from declaration
severity:
- default-severity: error
+ default: error
rules:
- linters:
- gofmt
- goimports
- intrange
severity: info
+formatters:
+ enable:
+ - gofmt
+ - gofumpt
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b3b5438a7..2820dee09 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.21)
project(Ollama C CXX)
include(CheckLanguage)
+include(GNUInstallDirs)
find_package(Threads REQUIRED)
@@ -37,7 +38,7 @@ if (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
endif()
set(OLLAMA_BUILD_DIR ${CMAKE_BINARY_DIR}/lib/ollama)
-set(OLLAMA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib/ollama)
+set(OLLAMA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib/ollama/${OLLAMA_RUNNER_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OLLAMA_BUILD_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OLLAMA_BUILD_DIR})
@@ -51,7 +52,14 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/include
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cpu)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cpu/amx)
-add_compile_definitions(NDEBUG)
+add_compile_definitions(NDEBUG GGML_VERSION=0x0 GGML_COMMIT=0x0)
+
+# Define GGML version variables for shared library SOVERSION
+# These are required by ggml/src/CMakeLists.txt for proper library versioning
+set(GGML_VERSION_MAJOR 0)
+set(GGML_VERSION_MINOR 0)
+set(GGML_VERSION_PATCH 0)
+set(GGML_VERSION "${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH}")
set(GGML_CPU ON)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src)
@@ -80,7 +88,7 @@ if(CMAKE_CUDA_COMPILER)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cuda)
install(TARGETS ggml-cuda
RUNTIME_DEPENDENCIES
- DIRECTORIES ${CUDAToolkit_BIN_DIR} ${CUDAToolkit_LIBRARY_DIR}
+ DIRECTORIES ${CUDAToolkit_BIN_DIR} ${CUDAToolkit_BIN_DIR}/x64 ${CUDAToolkit_LIBRARY_DIR}
PRE_INCLUDE_REGEXES cublas cublasLt cudart
PRE_EXCLUDE_REGEXES ".*"
RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CUDA
@@ -88,23 +96,26 @@ if(CMAKE_CUDA_COMPILER)
)
endif()
-set(WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX "^gfx(906|908|90a|1200|1201):xnack[+-]$"
+set(WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX "^gfx(908|90a|1200|1201):xnack[+-]$"
CACHE STRING
- "Regular expression describing AMDGPU_TARGETS not supported on Windows. Override to force building these targets. Default \"^gfx(906|908|90a|1200|1201):xnack[+-]$\"."
+ "Regular expression describing AMDGPU_TARGETS not supported on Windows. Override to force building these targets. Default \"^gfx(908|90a|1200|1201):xnack[+-]$\"."
)
check_language(HIP)
if(CMAKE_HIP_COMPILER)
set(HIP_PLATFORM "amd")
- find_package(hip REQUIRED)
if(NOT AMDGPU_TARGETS)
- list(FILTER AMDGPU_TARGETS INCLUDE REGEX "^gfx(900|94[012]|101[02]|1030|110[012]|120[01])$")
- elseif(WIN32 AND WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX)
+ find_package(hip REQUIRED)
+ list(FILTER AMDGPU_TARGETS INCLUDE REGEX "^gfx(94[012]|101[02]|1030|110[012]|120[01])$")
+ endif()
+
+ if(WIN32 AND WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX)
list(FILTER AMDGPU_TARGETS EXCLUDE REGEX ${WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX})
endif()
if(AMDGPU_TARGETS)
+ find_package(hip REQUIRED)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-hip)
if (WIN32)
@@ -113,7 +124,6 @@ if(CMAKE_HIP_COMPILER)
target_compile_definitions(ggml-hip PRIVATE GGML_HIP_NO_VMM)
- set(OLLAMA_HIP_INSTALL_DIR ${OLLAMA_INSTALL_DIR}/rocm)
install(TARGETS ggml-hip
RUNTIME_DEPENDENCY_SET rocm
RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT HIP
@@ -124,15 +134,27 @@ if(CMAKE_HIP_COMPILER)
PRE_INCLUDE_REGEXES hipblas rocblas amdhip64 rocsolver amd_comgr hsa-runtime64 rocsparse tinfo rocprofiler-register drm drm_amdgpu numa elf
PRE_EXCLUDE_REGEXES ".*"
POST_EXCLUDE_REGEXES "system32"
- RUNTIME DESTINATION ${OLLAMA_HIP_INSTALL_DIR} COMPONENT HIP
- LIBRARY DESTINATION ${OLLAMA_HIP_INSTALL_DIR} COMPONENT HIP
+ RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT HIP
+ LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT HIP
)
foreach(HIP_LIB_BIN_INSTALL_DIR IN ITEMS ${HIP_BIN_INSTALL_DIR} ${HIP_LIB_INSTALL_DIR})
if(EXISTS ${HIP_LIB_BIN_INSTALL_DIR}/rocblas)
- install(DIRECTORY ${HIP_LIB_BIN_INSTALL_DIR}/rocblas DESTINATION ${OLLAMA_HIP_INSTALL_DIR} COMPONENT HIP)
+ install(DIRECTORY ${HIP_LIB_BIN_INSTALL_DIR}/rocblas DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT HIP)
break()
endif()
endforeach()
endif()
endif()
+
+find_package(Vulkan)
+if(Vulkan_FOUND)
+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-vulkan)
+ install(TARGETS ggml-vulkan
+ RUNTIME_DEPENDENCIES
+ PRE_INCLUDE_REGEXES vulkan
+ PRE_EXCLUDE_REGEXES ".*"
+ RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT Vulkan
+ LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT Vulkan
+ )
+endif()
diff --git a/CMakePresets.json b/CMakePresets.json
index ab2cfe9d6..6fcdf4d25 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -18,26 +18,47 @@
"name": "CUDA",
"inherits": [ "Default" ]
},
+ {
+ "name": "CUDA 11",
+ "inherits": [ "CUDA" ],
+ "cacheVariables": {
+ "CMAKE_CUDA_ARCHITECTURES": "50-virtual;60-virtual;61-virtual;70-virtual;75-virtual;80-virtual;86-virtual;87-virtual;89-virtual;90-virtual",
+ "CMAKE_CUDA_FLAGS": "-Wno-deprecated-gpu-targets -t 2",
+ "OLLAMA_RUNNER_DIR": "cuda_v11"
+ }
+ },
{
"name": "CUDA 12",
"inherits": [ "CUDA" ],
"cacheVariables": {
- "CMAKE_CUDA_ARCHITECTURES": "50;60;61;70;75;80;86;87;89;90;90a;120",
- "CMAKE_CUDA_FLAGS": "-Wno-deprecated-gpu-targets -t 2"
+ "CMAKE_CUDA_ARCHITECTURES": "50;52;60;61;70;75;80;86;89;90;90a;120",
+ "CMAKE_CUDA_FLAGS": "-Wno-deprecated-gpu-targets -t 2",
+ "OLLAMA_RUNNER_DIR": "cuda_v12"
+ }
+ },
+ {
+ "name": "CUDA 13",
+ "inherits": [ "CUDA" ],
+ "cacheVariables": {
+ "CMAKE_CUDA_ARCHITECTURES": "75-virtual;80-virtual;86-virtual;87-virtual;89-virtual;90-virtual;90a-virtual;100-virtual;103-virtual;110-virtual;120-virtual;121-virtual",
+ "CMAKE_CUDA_FLAGS": "-t 2",
+ "OLLAMA_RUNNER_DIR": "cuda_v13"
}
},
{
"name": "JetPack 5",
"inherits": [ "CUDA" ],
"cacheVariables": {
- "CMAKE_CUDA_ARCHITECTURES": "72;87"
+ "CMAKE_CUDA_ARCHITECTURES": "72;87",
+ "OLLAMA_RUNNER_DIR": "cuda_jetpack5"
}
},
{
"name": "JetPack 6",
"inherits": [ "CUDA" ],
"cacheVariables": {
- "CMAKE_CUDA_ARCHITECTURES": "87"
+ "CMAKE_CUDA_ARCHITECTURES": "87",
+ "OLLAMA_RUNNER_DIR": "cuda_jetpack6"
}
},
{
@@ -52,7 +73,15 @@
"inherits": [ "ROCm" ],
"cacheVariables": {
"CMAKE_HIP_FLAGS": "-parallel-jobs=4",
- "AMDGPU_TARGETS": "gfx900;gfx940;gfx941;gfx942;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102;gfx1151;gfx1200;gfx1201;gfx906:xnack-;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-"
+ "AMDGPU_TARGETS": "gfx940;gfx941;gfx942;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102;gfx1151;gfx1200;gfx1201;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-",
+ "OLLAMA_RUNNER_DIR": "rocm"
+ }
+ },
+ {
+ "name": "Vulkan",
+ "inherits": [ "Default" ],
+ "cacheVariables": {
+ "OLLAMA_RUNNER_DIR": "vulkan"
}
}
],
@@ -72,11 +101,21 @@
"configurePreset": "CUDA",
"targets": [ "ggml-cuda" ]
},
+ {
+ "name": "CUDA 11",
+ "inherits": [ "CUDA" ],
+ "configurePreset": "CUDA 11"
+ },
{
"name": "CUDA 12",
"inherits": [ "CUDA" ],
"configurePreset": "CUDA 12"
},
+ {
+ "name": "CUDA 13",
+ "inherits": [ "CUDA" ],
+ "configurePreset": "CUDA 13"
+ },
{
"name": "JetPack 5",
"inherits": [ "CUDA" ],
@@ -96,6 +135,11 @@
"name": "ROCm 6",
"inherits": [ "ROCm" ],
"configurePreset": "ROCm 6"
+ },
+ {
+ "name": "Vulkan",
+ "targets": [ "ggml-vulkan" ],
+ "configurePreset": "Vulkan"
}
]
}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 455e7c698..8d51cc1de 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -16,7 +16,7 @@ See the [development documentation](./docs/development.md) for instructions on h
* New features: new features (e.g. API fields, environment variables) add surface area to Ollama and make it harder to maintain in the long run as they cannot be removed without potentially breaking users in the future.
* Refactoring: large code improvements are important, but can be harder or take longer to review and merge.
-* Documentation: small updates to fill in or correct missing documentation is helpful, however large documentation additions can be hard to maintain over time.
+* Documentation: small updates to fill in or correct missing documentation are helpful, however large documentation additions can be hard to maintain over time.
### Issues that may not be accepted
@@ -43,7 +43,7 @@ Tips for proposals:
* Explain how the change will be tested.
Additionally, for bonus points: Provide draft documentation you would expect to
-see if the change were accepted.
+see if the changes were accepted.
## Pull requests
diff --git a/Dockerfile b/Dockerfile
index 776fabebf..c46cfe08e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,11 +1,13 @@
# vim: filetype=dockerfile
ARG FLAVOR=${TARGETARCH}
+ARG PARALLEL=8
ARG ROCMVERSION=6.3.3
ARG JETPACK5VERSION=r35.4.1
ARG JETPACK6VERSION=r36.4.0
ARG CMAKEVERSION=3.31.2
+ARG VULKANVERSION=1.4.321.1
# We require gcc v10 minimum. v10.3 has regressions, so the rockylinux 8.5 AppStream has the latest compatible version
FROM --platform=linux/amd64 rocm/dev-almalinux-8:${ROCMVERSION}-complete AS base-amd64
@@ -16,6 +18,16 @@ RUN yum install -y yum-utils \
&& dnf install -y ccache \
&& yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
ENV PATH=/opt/rh/gcc-toolset-10/root/usr/bin:$PATH
+ARG VULKANVERSION
+RUN wget https://sdk.lunarg.com/sdk/download/${VULKANVERSION}/linux/vulkansdk-linux-x86_64-${VULKANVERSION}.tar.xz -O /tmp/vulkansdk-linux-x86_64-${VULKANVERSION}.tar.xz \
+ && tar xvf /tmp/vulkansdk-linux-x86_64-${VULKANVERSION}.tar.xz \
+ && dnf -y install ninja-build \
+ && ln -s /usr/bin/python3 /usr/bin/python \
+ && /${VULKANVERSION}/vulkansdk -j 8 vulkan-headers \
+ && /${VULKANVERSION}/vulkansdk -j 8 shaderc
+RUN cp -r /${VULKANVERSION}/x86_64/include/* /usr/local/include/ \
+ && cp -r /${VULKANVERSION}/x86_64/lib/* /usr/local/lib
+ENV PATH=/${VULKANVERSION}/x86_64/bin:$PATH
FROM --platform=linux/arm64 almalinux:8 AS base-arm64
# install epel-release for ccache
@@ -27,33 +39,67 @@ ENV CC=clang CXX=clang++
FROM base-${TARGETARCH} AS base
ARG CMAKEVERSION
RUN curl -fsSL https://github.com/Kitware/CMake/releases/download/v${CMAKEVERSION}/cmake-${CMAKEVERSION}-linux-$(uname -m).tar.gz | tar xz -C /usr/local --strip-components 1
-COPY CMakeLists.txt CMakePresets.json .
-COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
ENV LDFLAGS=-s
FROM base AS cpu
RUN dnf install -y gcc-toolset-11-gcc gcc-toolset-11-gcc-c++
ENV PATH=/opt/rh/gcc-toolset-11/root/usr/bin:$PATH
+ARG PARALLEL
+COPY CMakeLists.txt CMakePresets.json .
+COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
RUN --mount=type=cache,target=/root/.ccache \
cmake --preset 'CPU' \
- && cmake --build --parallel --preset 'CPU' \
- && cmake --install build --component CPU --strip --parallel 8
+ && cmake --build --parallel ${PARALLEL} --preset 'CPU' \
+ && cmake --install build --component CPU --strip --parallel ${PARALLEL}
+
+FROM base AS cuda-11
+ARG CUDA11VERSION=11.8
+RUN dnf install -y cuda-toolkit-${CUDA11VERSION//./-}
+ENV PATH=/usr/local/cuda-11/bin:$PATH
+ARG PARALLEL
+COPY CMakeLists.txt CMakePresets.json .
+COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
+RUN --mount=type=cache,target=/root/.ccache \
+ cmake --preset 'CUDA 11' \
+ && cmake --build --parallel ${PARALLEL} --preset 'CUDA 11' \
+ && cmake --install build --component CUDA --strip --parallel ${PARALLEL}
FROM base AS cuda-12
ARG CUDA12VERSION=12.8
RUN dnf install -y cuda-toolkit-${CUDA12VERSION//./-}
ENV PATH=/usr/local/cuda-12/bin:$PATH
+ARG PARALLEL
+COPY CMakeLists.txt CMakePresets.json .
+COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
RUN --mount=type=cache,target=/root/.ccache \
cmake --preset 'CUDA 12' \
- && cmake --build --parallel --preset 'CUDA 12' \
- && cmake --install build --component CUDA --strip --parallel 8
+ && cmake --build --parallel ${PARALLEL} --preset 'CUDA 12' \
+ && cmake --install build --component CUDA --strip --parallel ${PARALLEL}
+
+
+FROM base AS cuda-13
+ARG CUDA13VERSION=13.0
+RUN dnf install -y cuda-toolkit-${CUDA13VERSION//./-}
+ENV PATH=/usr/local/cuda-13/bin:$PATH
+ARG PARALLEL
+COPY CMakeLists.txt CMakePresets.json .
+COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
+RUN --mount=type=cache,target=/root/.ccache \
+ cmake --preset 'CUDA 13' \
+ && cmake --build --parallel ${PARALLEL} --preset 'CUDA 13' \
+ && cmake --install build --component CUDA --strip --parallel ${PARALLEL}
+
FROM base AS rocm-6
ENV PATH=/opt/rocm/hcc/bin:/opt/rocm/hip/bin:/opt/rocm/bin:/opt/rocm/hcc/bin:$PATH
+ARG PARALLEL
+COPY CMakeLists.txt CMakePresets.json .
+COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
RUN --mount=type=cache,target=/root/.ccache \
cmake --preset 'ROCm 6' \
- && cmake --build --parallel --preset 'ROCm 6' \
- && cmake --install build --component HIP --strip --parallel 8
+ && cmake --build --parallel ${PARALLEL} --preset 'ROCm 6' \
+ && cmake --install build --component HIP --strip --parallel ${PARALLEL}
+RUN rm -f dist/lib/ollama/rocm/rocblas/library/*gfx90[06]*
FROM --platform=linux/arm64 nvcr.io/nvidia/l4t-jetpack:${JETPACK5VERSION} AS jetpack-5
ARG CMAKEVERSION
@@ -61,10 +107,11 @@ RUN apt-get update && apt-get install -y curl ccache \
&& curl -fsSL https://github.com/Kitware/CMake/releases/download/v${CMAKEVERSION}/cmake-${CMAKEVERSION}-linux-$(uname -m).tar.gz | tar xz -C /usr/local --strip-components 1
COPY CMakeLists.txt CMakePresets.json .
COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
+ARG PARALLEL
RUN --mount=type=cache,target=/root/.ccache \
cmake --preset 'JetPack 5' \
- && cmake --build --parallel --preset 'JetPack 5' \
- && cmake --install build --component CUDA --strip --parallel 8
+ && cmake --build --parallel ${PARALLEL} --preset 'JetPack 5' \
+ && cmake --install build --component CUDA --strip --parallel ${PARALLEL}
FROM --platform=linux/arm64 nvcr.io/nvidia/l4t-jetpack:${JETPACK6VERSION} AS jetpack-6
ARG CMAKEVERSION
@@ -72,10 +119,20 @@ RUN apt-get update && apt-get install -y curl ccache \
&& curl -fsSL https://github.com/Kitware/CMake/releases/download/v${CMAKEVERSION}/cmake-${CMAKEVERSION}-linux-$(uname -m).tar.gz | tar xz -C /usr/local --strip-components 1
COPY CMakeLists.txt CMakePresets.json .
COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
+ARG PARALLEL
RUN --mount=type=cache,target=/root/.ccache \
cmake --preset 'JetPack 6' \
- && cmake --build --parallel --preset 'JetPack 6' \
- && cmake --install build --component CUDA --strip --parallel 8
+ && cmake --build --parallel ${PARALLEL} --preset 'JetPack 6' \
+ && cmake --install build --component CUDA --strip --parallel ${PARALLEL}
+
+FROM base AS vulkan
+COPY CMakeLists.txt CMakePresets.json .
+COPY ml/backend/ggml/ggml ml/backend/ggml/ggml
+RUN --mount=type=cache,target=/root/.ccache \
+ cmake --preset 'Vulkan' \
+ && cmake --build --parallel --preset 'Vulkan' \
+ && cmake --install build --component Vulkan --strip --parallel 8
+
FROM base AS build
WORKDIR /go/src/github.com/ollama/ollama
@@ -86,27 +143,35 @@ RUN go mod download
COPY . .
ARG GOFLAGS="'-ldflags=-w -s'"
ENV CGO_ENABLED=1
+ARG CGO_CFLAGS
+ARG CGO_CXXFLAGS
RUN --mount=type=cache,target=/root/.cache/go-build \
go build -trimpath -buildmode=pie -o /bin/ollama .
FROM --platform=linux/amd64 scratch AS amd64
-COPY --from=cuda-12 dist/lib/ollama /lib/ollama
+# COPY --from=cuda-11 dist/lib/ollama/ /lib/ollama/
+COPY --from=cuda-12 dist/lib/ollama /lib/ollama/
+COPY --from=cuda-13 dist/lib/ollama /lib/ollama/
+COPY --from=vulkan dist/lib/ollama /lib/ollama/
FROM --platform=linux/arm64 scratch AS arm64
-COPY --from=cuda-12 dist/lib/ollama /lib/ollama/cuda_sbsa
-COPY --from=jetpack-5 dist/lib/ollama /lib/ollama/cuda_jetpack5
-COPY --from=jetpack-6 dist/lib/ollama /lib/ollama/cuda_jetpack6
+# COPY --from=cuda-11 dist/lib/ollama/ /lib/ollama/
+COPY --from=cuda-12 dist/lib/ollama /lib/ollama/
+COPY --from=cuda-13 dist/lib/ollama/ /lib/ollama/
+COPY --from=jetpack-5 dist/lib/ollama/ /lib/ollama/
+COPY --from=jetpack-6 dist/lib/ollama/ /lib/ollama/
FROM scratch AS rocm
COPY --from=rocm-6 dist/lib/ollama /lib/ollama
FROM ${FLAVOR} AS archive
+ARG VULKANVERSION
COPY --from=cpu dist/lib/ollama /lib/ollama
COPY --from=build /bin/ollama /bin/ollama
FROM ubuntu:24.04
RUN apt-get update \
- && apt-get install -y ca-certificates \
+ && apt-get install -y ca-certificates libvulkan1 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY --from=archive /bin /usr/bin
diff --git a/Makefile.sync b/Makefile.sync
index 711667c98..c1c24f2f5 100644
--- a/Makefile.sync
+++ b/Makefile.sync
@@ -1,6 +1,6 @@
-UPSTREAM=https://github.com/ggerganov/llama.cpp.git
+UPSTREAM=https://github.com/ggml-org/llama.cpp.git
WORKDIR=llama/vendor
-FETCH_HEAD=de4c07f93783a1a96456a44dc16b9db538ee1618
+FETCH_HEAD=ec98e2002
.PHONY: help
help:
@@ -12,7 +12,7 @@ help:
@echo " clean Clean local repository"
@echo
@echo "Example:"
- @echo " make -f $(lastword $(MAKEFILE_LIST)) clean sync"
+ @echo " make -f $(lastword $(MAKEFILE_LIST)) clean apply-patches sync"
.PHONY: sync
sync: llama/build-info.cpp ml/backend/ggml/ggml/src/ggml-metal/ggml-metal-embed.metal
@@ -24,12 +24,12 @@ ml/backend/ggml/ggml/src/ggml-metal/ggml-metal-embed.metal: ml/backend/ggml/ggml
go generate ./$(@D)
.PHONY: llama/llama.cpp
-llama/llama.cpp: llama/vendor/
- rsync -arvzc -f "merge $@/.rsync-filter" $< $@
+llama/llama.cpp: llama/vendor
+ rsync -arvzc --delete -f "include LICENSE" -f "merge $@/.rsync-filter" $(addprefix $<,/LICENSE /) $@
.PHONY: ml/backend/ggml/ggml
-ml/backend/ggml/ggml: llama/vendor/ggml/
- rsync -arvzc -f "merge $@/.rsync-filter" $< $@
+ml/backend/ggml/ggml: llama/vendor
+ rsync -arvzc --delete -f "include LICENSE" -f "merge $@/.rsync-filter" $(addprefix $<,/LICENSE /ggml/) $@
PATCHES=$(wildcard llama/patches/*.patch)
PATCHED=$(join $(dir $(PATCHES)), $(addsuffix ed, $(addprefix ., $(notdir $(PATCHES)))))
@@ -39,7 +39,15 @@ PATCHED=$(join $(dir $(PATCHES)), $(addsuffix ed, $(addprefix ., $(notdir $(PATC
apply-patches: $(PATCHED)
llama/patches/.%.patched: llama/patches/%.patch
- @if git -c user.name=nobody -c 'user.email=<>' -C $(WORKDIR) am -3 $(realpath $<); then touch $@; else git -C $(WORKDIR) am --abort; exit 1; fi
+ @if git -c user.name=nobody -c 'user.email=<>' -C $(WORKDIR) am -3 $(realpath $<); then \
+ touch $@; \
+ else \
+ echo "Patch failed. Resolve any conflicts then continue."; \
+ echo "1. Run 'git -C $(WORKDIR) am --continue'"; \
+ echo "2. Run 'make -f $(lastword $(MAKEFILE_LIST)) format-patches'"; \
+ echo "3. Run 'make -f $(lastword $(MAKEFILE_LIST)) clean apply-patches'"; \
+ exit 1; \
+ fi
.PHONY: checkout
checkout: $(WORKDIR)
@@ -49,7 +57,7 @@ checkout: $(WORKDIR)
$(WORKDIR):
git clone $(UPSTREAM) $(WORKDIR)
-.PHONE: format-patches
+.PHONY: format-patches
format-patches: llama/patches
git -C $(WORKDIR) format-patch \
--no-signature \
@@ -58,6 +66,11 @@ format-patches: llama/patches
-o $(realpath $<) \
$(FETCH_HEAD)
-.PHONE: clean
+.PHONY: clean
clean: checkout
+ @git -C $(WORKDIR) am --abort || true
$(RM) llama/patches/.*.patched
+
+.PHONY: print-base
+print-base:
+ @echo $(FETCH_HEAD)
\ No newline at end of file
diff --git a/README.md b/README.md
index d5049d3eb..bb08819d6 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ Get up and running with large language models.
curl -fsSL https://ollama.com/install.sh | sh
```
-[Manual install instructions](https://github.com/ollama/ollama/blob/main/docs/linux.md)
+[Manual install instructions](https://docs.ollama.com/linux#manual-install)
### Docker
@@ -110,7 +110,7 @@ Ollama supports importing GGUF models in the Modelfile:
### Import from Safetensors
-See the [guide](docs/import.md) on importing models for more information.
+See the [guide](https://docs.ollama.com/import) on importing models for more information.
### Customize a prompt
@@ -143,7 +143,7 @@ ollama run mario
Hello! It's your friend Mario.
```
-For more information on working with a Modelfile, see the [Modelfile](docs/modelfile.md) documentation.
+For more information on working with a Modelfile, see the [Modelfile](https://docs.ollama.com/modelfile) documentation.
## CLI Reference
@@ -226,6 +226,18 @@ ollama ps
ollama stop llama3.2
```
+### Generate embeddings from the CLI
+
+```shell
+ollama run embeddinggemma "Your text to embed"
+```
+
+You can also pipe text for scripted workflows:
+
+```shell
+echo "Your text to embed" | ollama run embeddinggemma
+```
+
### Start Ollama
`ollama serve` is used when you want to start ollama without running the desktop application.
@@ -282,10 +294,12 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [SwiftChat (macOS with ReactNative)](https://github.com/aws-samples/swift-chat)
- [Enchanted (macOS native)](https://github.com/AugustDev/enchanted)
- [Hollama](https://github.com/fmaclen/hollama)
-- [Lollms-Webui](https://github.com/ParisNeo/lollms-webui)
+- [Lollms WebUI (Single user)](https://github.com/ParisNeo/lollms-webui)
+- [Lollms (Multi users)](https://github.com/ParisNeo/lollms)
- [LibreChat](https://github.com/danny-avila/LibreChat)
- [Bionic GPT](https://github.com/bionic-gpt/bionic-gpt)
- [HTML UI](https://github.com/rtcfirefly/ollama-ui)
+- [AI-UI](https://github.com/bajahaw/ai-ui)
- [Saddle](https://github.com/jikkuatwork/saddle)
- [TagSpaces](https://www.tagspaces.org) (A platform for file-based apps, [utilizing Ollama](https://docs.tagspaces.org/ai/) for the generation of tags and descriptions)
- [Chatbot UI](https://github.com/ivanfioravanti/chatbot-ollama)
@@ -352,7 +366,8 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [PartCAD](https://github.com/openvmp/partcad/) (CAD model generation with OpenSCAD and CadQuery)
- [Ollama4j Web UI](https://github.com/ollama4j/ollama4j-web-ui) - Java-based Web UI for Ollama built with Vaadin, Spring Boot, and Ollama4j
- [PyOllaMx](https://github.com/kspviswa/pyOllaMx) - macOS application capable of chatting with both Ollama and Apple MLX models.
-- [Cline](https://github.com/cline/cline) - Formerly known as Claude Dev is a VSCode extension for multi-file/whole-repo coding
+- [Cline](https://github.com/cline/cline) - Formerly known as Claude Dev is a VS Code extension for multi-file/whole-repo coding
+- [Void](https://github.com/voideditor/void) (Open source AI code editor and Cursor alternative)
- [Cherry Studio](https://github.com/kangfenmao/cherry-studio) (Desktop client with Ollama support)
- [ConfiChat](https://github.com/1runeberg/confichat) (Lightweight, standalone, multi-platform, and privacy-focused LLM chat interface with optional encryption)
- [Archyve](https://github.com/nickthecook/archyve) (RAG-enabling document library)
@@ -384,7 +399,7 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [aidful-ollama-model-delete](https://github.com/AidfulAI/aidful-ollama-model-delete) (User interface for simplified model cleanup)
- [Perplexica](https://github.com/ItzCrazyKns/Perplexica) (An AI-powered search engine & an open-source alternative to Perplexity AI)
- [Ollama Chat WebUI for Docker ](https://github.com/oslook/ollama-webui) (Support for local docker deployment, lightweight ollama webui)
-- [AI Toolkit for Visual Studio Code](https://aka.ms/ai-tooklit/ollama-docs) (Microsoft-official VSCode extension to chat, test, evaluate models with Ollama support, and use them in your AI applications.)
+- [AI Toolkit for Visual Studio Code](https://aka.ms/ai-tooklit/ollama-docs) (Microsoft-official VS Code extension to chat, test, evaluate models with Ollama support, and use them in your AI applications.)
- [MinimalNextOllamaChat](https://github.com/anilkay/MinimalNextOllamaChat) (Minimal Web UI for Chat and Model Control)
- [Chipper](https://github.com/TilmanGriesel/chipper) AI interface for tinkerers (Ollama, Haystack RAG, Python)
- [ChibiChat](https://github.com/CosmicEventHorizon/ChibiChat) (Kotlin-based Android app to chat with Ollama and Koboldcpp API endpoints)
@@ -411,6 +426,12 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [ollama launcher](https://github.com/NGC13009/ollama-launcher) (A launcher for Ollama, aiming to provide users with convenient functions such as ollama server launching, management, or configuration.)
- [ai-hub](https://github.com/Aj-Seven/ai-hub) (AI Hub supports multiple models via API keys and Chat support via Ollama API.)
- [Mayan EDMS](https://gitlab.com/mayan-edms/mayan-edms) (Open source document management system to organize, tag, search, and automate your files with powerful Ollama driven workflows.)
+- [Serene Pub](https://github.com/doolijb/serene-pub) (Beginner friendly, open source AI Roleplaying App for Windows, Mac OS and Linux. Search, download and use models with Ollama all inside the app.)
+- [Andes](https://github.com/aqerd/andes) (A Visual Studio Code extension that provides a local UI interface for Ollama models)
+- [KDeps](https://github.com/kdeps/kdeps) (Kdeps is an offline-first AI framework for building Dockerized full-stack AI applications declaratively using Apple PKL and integrates APIs with Ollama on the backend.)
+- [Clueless](https://github.com/KashyapTan/clueless) (Open Source & Local Cluely: A desktop application LLM assistant to help you talk to anything on your screen using locally served Ollama models. Also undetectable to screenshare)
+- [ollama-co2](https://github.com/carbonatedWaterOrg/ollama-co2) (FastAPI web interface for monitoring and managing local and remote Ollama servers with real-time model monitoring and concurrent downloads)
+- [Hillnote](https://hillnote.com) (A Markdown-first workspace designed to supercharge your AI workflow. Create documents ready to integrate with Claude, ChatGPT, Gemini, Cursor, and more - all while keeping your work on your device.)
### Cloud
@@ -418,6 +439,10 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [Fly.io](https://fly.io/docs/python/do-more/add-ollama/)
- [Koyeb](https://www.koyeb.com/deploy/ollama)
+### Tutorial
+
+- [handy-ollama](https://github.com/datawhalechina/handy-ollama) (Chinese Tutorial for Ollama by [Datawhale ](https://github.com/datawhalechina) - China's Largest Open Source AI Learning Community)
+
### Terminal
- [oterm](https://github.com/ggozad/oterm)
@@ -457,6 +482,8 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [AWS-Strands-With-Ollama](https://github.com/rapidarchitect/ollama_strands) - AWS Strands Agents with Ollama Examples
- [ollama-multirun](https://github.com/attogram/ollama-multirun) - A bash shell script to run a single prompt against any or all of your locally installed ollama models, saving the output and performance statistics as easily navigable web pages. ([Demo](https://attogram.github.io/ai_test_zone/))
- [ollama-bash-toolshed](https://github.com/attogram/ollama-bash-toolshed) - Bash scripts to chat with tool using models. Add new tools to your shed with ease. Runs on Ollama.
+- [hle-eval-ollama](https://github.com/mags0ft/hle-eval-ollama) - Runs benchmarks like "Humanity's Last Exam" (HLE) on your favorite local Ollama models and evaluates the quality of their responses
+- [VT Code](https://github.com/vinhnx/vtcode) - VT Code is a Rust-based terminal coding agent with semantic code intelligence via Tree-sitter. Ollama integration for running local/cloud models with configurable endpoints.
### Apple Vision Pro
@@ -487,6 +514,7 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [Firebase Genkit](https://firebase.google.com/docs/genkit/plugins/ollama)
- [crewAI](https://github.com/crewAIInc/crewAI)
- [Yacana](https://remembersoftwares.github.io/yacana/) (User-friendly multi-agent framework for brainstorming and executing predetermined flows with built-in tool integration)
+- [Strands Agents](https://github.com/strands-agents/sdk-python) (A model-driven approach to building AI agents in just a few lines of code)
- [Spring AI](https://github.com/spring-projects/spring-ai) with [reference](https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html) and [example](https://github.com/tzolov/ollama-tools)
- [LangChainGo](https://github.com/tmc/langchaingo/) with [example](https://github.com/tmc/langchaingo/tree/main/examples/ollama-completion-example)
- [LangChain4j](https://github.com/langchain4j/langchain4j) with [example](https://github.com/langchain4j/langchain4j-examples/tree/main/ollama-examples/src/main/java)
@@ -527,7 +555,7 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [Parakeet](https://github.com/parakeet-nest/parakeet) is a GoLang library, made to simplify the development of small generative AI applications with Ollama.
- [Haverscript](https://github.com/andygill/haverscript) with [examples](https://github.com/andygill/haverscript/tree/main/examples)
- [Ollama for Swift](https://github.com/mattt/ollama-swift)
-- [Swollama for Swift](https://github.com/marcusziade/Swollama) with [DocC](https://marcusziade.github.io/Swollama/documentation/swollama/)
+- [Swollama for Swift](https://github.com/guitaripod/Swollama) with [DocC](https://guitaripod.github.io/Swollama/documentation/swollama)
- [GoLamify](https://github.com/prasad89/golamify)
- [Ollama for Haskell](https://github.com/tusharad/ollama-haskell)
- [multi-llm-ts](https://github.com/nbonamy/multi-llm-ts) (A Typescript/JavaScript library allowing access to different LLM in a unified API)
@@ -537,6 +565,11 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [Nichey](https://github.com/goodreasonai/nichey) is a Python package for generating custom wikis for your research topic
- [Ollama for D](https://github.com/kassane/ollama-d)
- [OllamaPlusPlus](https://github.com/HardCodeDev777/OllamaPlusPlus) (Very simple C++ library for Ollama)
+- [any-llm](https://github.com/mozilla-ai/any-llm) (A single interface to use different llm providers by [mozilla.ai](https://www.mozilla.ai/))
+- [any-agent](https://github.com/mozilla-ai/any-agent) (A single interface to use and evaluate different agent frameworks by [mozilla.ai](https://www.mozilla.ai/))
+- [Neuro SAN](https://github.com/cognizant-ai-lab/neuro-san-studio) (Data-driven multi-agent orchestration framework) with [example](https://github.com/cognizant-ai-lab/neuro-san-studio/blob/main/docs/user_guide.md#ollama)
+- [achatbot-go](https://github.com/ai-bot-pro/achatbot-go) a multimodal(text/audio/image) chatbot.
+- [Ollama Bash Lib](https://github.com/attogram/ollama-bash-lib) - A Bash Library for Ollama. Run LLM prompts straight from your shell, and more
### Mobile
@@ -582,11 +615,10 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [Terraform AWS Ollama & Open WebUI](https://github.com/xuyangbocn/terraform-aws-self-host-llm) (A Terraform module to deploy on AWS a ready-to-use Ollama service, together with its front-end Open WebUI service.)
- [node-red-contrib-ollama](https://github.com/jakubburkiewicz/node-red-contrib-ollama)
- [Local AI Helper](https://github.com/ivostoykov/localAI) (Chrome and Firefox extensions that enable interactions with the active tab and customisable API endpoints. Includes secure storage for user prompts.)
-- [vnc-lm](https://github.com/jake83741/vnc-lm) (Discord bot for messaging with LLMs through Ollama and LiteLLM. Seamlessly move between local and flagship models.)
- [LSP-AI](https://github.com/SilasMarvin/lsp-ai) (Open-source language server for AI-powered functionality)
- [QodeAssist](https://github.com/Palm1r/QodeAssist) (AI-powered coding assistant plugin for Qt Creator)
- [Obsidian Quiz Generator plugin](https://github.com/ECuiDev/obsidian-quiz-generator)
-- [AI Summmary Helper plugin](https://github.com/philffm/ai-summary-helper)
+- [AI Summary Helper plugin](https://github.com/philffm/ai-summary-helper)
- [TextCraft](https://github.com/suncloudsmoon/TextCraft) (Copilot in Word alternative using Ollama)
- [Alfred Ollama](https://github.com/zeitlings/alfred-ollama) (Alfred Workflow)
- [TextLLaMA](https://github.com/adarshM84/TextLLaMA) A Chrome Extension that helps you write emails, correct grammar, and translate into any language
@@ -594,18 +626,22 @@ See the [API documentation](./docs/api.md) for all endpoints.
- [LLM Telegram Bot](https://github.com/innightwolfsleep/llm_telegram_bot) (telegram bot, primary for RP. Oobabooga-like buttons, [A1111](https://github.com/AUTOMATIC1111/stable-diffusion-webui) API integration e.t.c)
- [mcp-llm](https://github.com/sammcj/mcp-llm) (MCP Server to allow LLMs to call other LLMs)
- [SimpleOllamaUnity](https://github.com/HardCodeDev777/SimpleOllamaUnity) (Unity Engine extension for communicating with Ollama in a few lines of code. Also works at runtime)
-- [UnityCodeLama](https://github.com/HardCodeDev777/UnityCodeLama) (Unity Edtior tool to analyze scripts via Ollama)
+- [UnityCodeLama](https://github.com/HardCodeDev777/UnityCodeLama) (Unity Editor tool to analyze scripts via Ollama)
- [NativeMind](https://github.com/NativeMindBrowser/NativeMindExtension) (Private, on-device AI Assistant, no cloud dependencies)
- [GMAI - Gradle Managed AI](https://gmai.premex.se/) (Gradle plugin for automated Ollama lifecycle management during build phases)
+- [NOMYO Router](https://github.com/nomyo-ai/nomyo-router) (A transparent Ollama proxy with model deployment aware routing which auto-manages multiple Ollama instances in a given network)
### Supported backends
- [llama.cpp](https://github.com/ggml-org/llama.cpp) project founded by Georgi Gerganov.
### Observability
-- [Opik](https://www.comet.com/docs/opik/cookbook/ollama) is an open-source platform to debug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards. Opik supports native intergration to Ollama.
+- [Opik](https://www.comet.com/docs/opik/cookbook/ollama) is an open-source platform to debug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards. Opik supports native integration to Ollama.
- [Lunary](https://lunary.ai/docs/integrations/ollama) is the leading open-source LLM observability platform. It provides a variety of enterprise-grade features such as real-time analytics, prompt templates management, PII masking, and comprehensive agent tracing.
- [OpenLIT](https://github.com/openlit/openlit) is an OpenTelemetry-native tool for monitoring Ollama Applications & GPUs using traces and metrics.
- [HoneyHive](https://docs.honeyhive.ai/integrations/ollama) is an AI observability and evaluation platform for AI agents. Use HoneyHive to evaluate agent performance, interrogate failures, and monitor quality in production.
- [Langfuse](https://langfuse.com/docs/integrations/ollama) is an open source LLM observability platform that enables teams to collaboratively monitor, evaluate and debug AI applications.
- [MLflow Tracing](https://mlflow.org/docs/latest/llms/tracing/index.html#automatic-tracing) is an open source LLM observability tool with a convenient API to log and visualize traces, making it easy to debug and evaluate GenAI applications.
+
+### Security
+- [Ollama Fortress](https://github.com/ParisNeo/ollama_proxy_server)
diff --git a/SECURITY.md b/SECURITY.md
index d38bb7c4e..43fe3102d 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -14,7 +14,7 @@ Please include the following details in your report:
## Security best practices
-While the maintainer team does their best to secure Ollama, users are encouraged to implement their own security best practices, such as:
+While the maintainer team does its best to secure Ollama, users are encouraged to implement their own security best practices, such as:
- Regularly updating to the latest version of Ollama
- Securing access to hosted instances of Ollama
diff --git a/api/client.go b/api/client.go
index 7cc2acb3d..c70516899 100644
--- a/api/client.go
+++ b/api/client.go
@@ -45,6 +45,12 @@ func checkError(resp *http.Response, body []byte) error {
return nil
}
+ if resp.StatusCode == http.StatusUnauthorized {
+ authError := AuthorizationError{StatusCode: resp.StatusCode}
+ json.Unmarshal(body, &authError)
+ return authError
+ }
+
apiError := StatusError{StatusCode: resp.StatusCode}
err := json.Unmarshal(body, &apiError)
@@ -214,15 +220,29 @@ func (c *Client) stream(ctx context.Context, method, path string, data any, fn f
scanner.Buffer(scanBuf, maxBufferSize)
for scanner.Scan() {
var errorResponse struct {
- Error string `json:"error,omitempty"`
+ Error string `json:"error,omitempty"`
+ SigninURL string `json:"signin_url,omitempty"`
}
bts := scanner.Bytes()
if err := json.Unmarshal(bts, &errorResponse); err != nil {
- return fmt.Errorf("unmarshal: %w", err)
+ if response.StatusCode >= http.StatusBadRequest {
+ return StatusError{
+ StatusCode: response.StatusCode,
+ Status: response.Status,
+ ErrorMessage: string(bts),
+ }
+ }
+ return errors.New(string(bts))
}
- if response.StatusCode >= http.StatusBadRequest {
+ if response.StatusCode == http.StatusUnauthorized {
+ return AuthorizationError{
+ StatusCode: response.StatusCode,
+ Status: response.Status,
+ SigninURL: errorResponse.SigninURL,
+ }
+ } else if response.StatusCode >= http.StatusBadRequest {
return StatusError{
StatusCode: response.StatusCode,
Status: response.Status,
@@ -327,7 +347,7 @@ type CreateProgressFunc func(ProgressResponse) error
// Create creates a model from a [Modelfile]. fn is a progress function that
// behaves similarly to other methods (see [Client.Pull]).
//
-// [Modelfile]: https://github.com/ollama/ollama/blob/main/docs/modelfile.md
+// [Modelfile]: https://github.com/ollama/ollama/blob/main/docs/modelfile.mdx
func (c *Client) Create(ctx context.Context, req *CreateRequest, fn CreateProgressFunc) error {
return c.stream(ctx, http.MethodPost, "/api/create", req, func(bts []byte) error {
var resp ProgressResponse
@@ -428,3 +448,21 @@ func (c *Client) Version(ctx context.Context) (string, error) {
return version.Version, nil
}
+
+// Signout will signout a client for a local ollama server.
+func (c *Client) Signout(ctx context.Context) error {
+ return c.do(ctx, http.MethodPost, "/api/signout", nil, nil)
+}
+
+// Disconnect will disconnect an ollama instance from ollama.com.
+func (c *Client) Disconnect(ctx context.Context, encodedKey string) error {
+ return c.do(ctx, http.MethodDelete, fmt.Sprintf("/api/user/keys/%s", encodedKey), nil, nil)
+}
+
+func (c *Client) Whoami(ctx context.Context) (*UserResponse, error) {
+ var resp UserResponse
+ if err := c.do(ctx, http.MethodPost, "/api/me", nil, &resp); err != nil {
+ return nil, err
+ }
+ return &resp, nil
+}
diff --git a/api/client_test.go b/api/client_test.go
index f0034e02d..827e41d9a 100644
--- a/api/client_test.go
+++ b/api/client_test.go
@@ -55,6 +55,7 @@ func TestClientFromEnvironment(t *testing.T) {
type testError struct {
message string
statusCode int
+ raw bool // if true, write message as-is instead of JSON encoding
}
func (e testError) Error() string {
@@ -111,6 +112,20 @@ func TestClientStream(t *testing.T) {
},
},
},
+ {
+ name: "plain text error response",
+ responses: []any{
+ "internal server error",
+ },
+ wantErr: "internal server error",
+ },
+ {
+ name: "HTML error page",
+ responses: []any{
+ "
404 Not Found",
+ },
+ wantErr: "404 Not Found",
+ },
}
for _, tc := range testCases {
@@ -135,6 +150,12 @@ func TestClientStream(t *testing.T) {
return
}
+ if str, ok := resp.(string); ok {
+ fmt.Fprintln(w, str)
+ flusher.Flush()
+ continue
+ }
+
if err := json.NewEncoder(w).Encode(resp); err != nil {
t.Fatalf("failed to encode response: %v", err)
}
@@ -173,9 +194,10 @@ func TestClientStream(t *testing.T) {
func TestClientDo(t *testing.T) {
testCases := []struct {
- name string
- response any
- wantErr string
+ name string
+ response any
+ wantErr string
+ wantStatusCode int
}{
{
name: "immediate error response",
@@ -183,7 +205,8 @@ func TestClientDo(t *testing.T) {
message: "test error message",
statusCode: http.StatusBadRequest,
},
- wantErr: "test error message",
+ wantErr: "test error message",
+ wantStatusCode: http.StatusBadRequest,
},
{
name: "server error response",
@@ -191,7 +214,8 @@ func TestClientDo(t *testing.T) {
message: "internal error",
statusCode: http.StatusInternalServerError,
},
- wantErr: "internal error",
+ wantErr: "internal error",
+ wantStatusCode: http.StatusInternalServerError,
},
{
name: "successful response",
@@ -203,6 +227,26 @@ func TestClientDo(t *testing.T) {
Success: true,
},
},
+ {
+ name: "plain text error response",
+ response: testError{
+ message: "internal server error",
+ statusCode: http.StatusInternalServerError,
+ raw: true,
+ },
+ wantErr: "internal server error",
+ wantStatusCode: http.StatusInternalServerError,
+ },
+ {
+ name: "HTML error page",
+ response: testError{
+ message: "404 Not Found",
+ statusCode: http.StatusNotFound,
+ raw: true,
+ },
+ wantErr: "404 Not Found",
+ wantStatusCode: http.StatusNotFound,
+ },
}
for _, tc := range testCases {
@@ -210,11 +254,16 @@ func TestClientDo(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if errResp, ok := tc.response.(testError); ok {
w.WriteHeader(errResp.statusCode)
- err := json.NewEncoder(w).Encode(map[string]string{
- "error": errResp.message,
- })
- if err != nil {
- t.Fatal("failed to encode error response:", err)
+ if !errResp.raw {
+ err := json.NewEncoder(w).Encode(map[string]string{
+ "error": errResp.message,
+ })
+ if err != nil {
+ t.Fatal("failed to encode error response:", err)
+ }
+ } else {
+ // Write raw message (simulates non-JSON error responses)
+ fmt.Fprint(w, errResp.message)
}
return
}
@@ -241,6 +290,15 @@ func TestClientDo(t *testing.T) {
if err.Error() != tc.wantErr {
t.Errorf("error message mismatch: got %q, want %q", err.Error(), tc.wantErr)
}
+ if tc.wantStatusCode != 0 {
+ if statusErr, ok := err.(StatusError); ok {
+ if statusErr.StatusCode != tc.wantStatusCode {
+ t.Errorf("status code mismatch: got %d, want %d", statusErr.StatusCode, tc.wantStatusCode)
+ }
+ } else {
+ t.Errorf("expected StatusError, got %T", err)
+ }
+ }
return
}
diff --git a/api/examples/chat/main.go b/api/examples/chat/main.go
index 074303057..b44a1ec92 100644
--- a/api/examples/chat/main.go
+++ b/api/examples/chat/main.go
@@ -15,19 +15,19 @@ func main() {
}
messages := []api.Message{
- api.Message{
+ {
Role: "system",
Content: "Provide very brief, concise responses",
},
- api.Message{
+ {
Role: "user",
Content: "Name some unusual animals",
},
- api.Message{
+ {
Role: "assistant",
Content: "Monotreme, platypus, echidna",
},
- api.Message{
+ {
Role: "user",
Content: "which of these is the most dangerous?",
},
diff --git a/api/types.go b/api/types.go
index 0f99de18c..63b898975 100644
--- a/api/types.go
+++ b/api/types.go
@@ -11,6 +11,8 @@ import (
"strings"
"time"
+ "github.com/google/uuid"
+
"github.com/ollama/ollama/envconfig"
"github.com/ollama/ollama/types/model"
)
@@ -36,6 +38,19 @@ func (e StatusError) Error() string {
}
}
+type AuthorizationError struct {
+ StatusCode int
+ Status string
+ SigninURL string `json:"signin_url"`
+}
+
+func (e AuthorizationError) Error() string {
+ if e.Status != "" {
+ return e.Status
+ }
+ return "something went wrong, please see the ollama server logs for details"
+}
+
// ImageData represents the raw binary data of an image file.
type ImageData []byte
@@ -90,6 +105,26 @@ type GenerateRequest struct {
// (request that thinking _not_ be used) and unset (use the old behavior
// before this option was introduced)
Think *ThinkValue `json:"think,omitempty"`
+
+ // Truncate is a boolean that, when set to true, truncates the chat history messages
+ // if the rendered prompt exceeds the context length limit.
+ Truncate *bool `json:"truncate,omitempty"`
+
+ // Shift is a boolean that, when set to true, shifts the chat history
+ // when hitting the context length limit instead of erroring.
+ Shift *bool `json:"shift,omitempty"`
+
+ // DebugRenderOnly is a debug option that, when set to true, returns the rendered
+ // template instead of calling the model.
+ DebugRenderOnly bool `json:"_debug_render_only,omitempty"`
+
+ // Logprobs specifies whether to return log probabilities of the output tokens.
+ Logprobs bool `json:"logprobs,omitempty"`
+
+ // TopLogprobs is the number of most likely tokens to return at each token position,
+ // each with an associated log probability. Only applies when Logprobs is true.
+ // Valid values are 0-20. Default is 0 (only return the selected token's logprob).
+ TopLogprobs int `json:"top_logprobs,omitempty"`
}
// ChatRequest describes a request sent by [Client.Chat].
@@ -120,6 +155,26 @@ type ChatRequest struct {
// responding. Can be a boolean (true/false) or a string ("high", "medium", "low")
// for supported models.
Think *ThinkValue `json:"think,omitempty"`
+
+ // Truncate is a boolean that, when set to true, truncates the chat history messages
+ // if the rendered prompt exceeds the context length limit.
+ Truncate *bool `json:"truncate,omitempty"`
+
+ // Shift is a boolean that, when set to true, shifts the chat history
+ // when hitting the context length limit instead of erroring.
+ Shift *bool `json:"shift,omitempty"`
+
+ // DebugRenderOnly is a debug option that, when set to true, returns the rendered
+ // template instead of calling the model.
+ DebugRenderOnly bool `json:"_debug_render_only,omitempty"`
+
+ // Logprobs specifies whether to return log probabilities of the output tokens.
+ Logprobs bool `json:"logprobs,omitempty"`
+
+ // TopLogprobs is the number of most likely tokens to return at each token position,
+ // each with an associated log probability. Only applies when Logprobs is true.
+ // Valid values are 0-20. Default is 0 (only return the selected token's logprob).
+ TopLogprobs int `json:"top_logprobs,omitempty"`
}
type Tools []Tool
@@ -142,10 +197,11 @@ type Message struct {
Content string `json:"content"`
// Thinking contains the text that was inside thinking tags in the
// original model output when ChatRequest.Think is enabled.
- Thinking string `json:"thinking,omitempty"`
- Images []ImageData `json:"images,omitempty"`
- ToolCalls []ToolCall `json:"tool_calls,omitempty"`
- ToolName string `json:"tool_name,omitempty"`
+ Thinking string `json:"thinking,omitempty"`
+ Images []ImageData `json:"images,omitempty"`
+ ToolCalls []ToolCall `json:"tool_calls,omitempty"`
+ ToolName string `json:"tool_name,omitempty"`
+ ToolCallID string `json:"tool_call_id,omitempty"`
}
func (m *Message) UnmarshalJSON(b []byte) error {
@@ -161,11 +217,12 @@ func (m *Message) UnmarshalJSON(b []byte) error {
}
type ToolCall struct {
+ ID string `json:"id,omitempty"`
Function ToolCallFunction `json:"function"`
}
type ToolCallFunction struct {
- Index int `json:"index,omitempty"`
+ Index int `json:"index"`
Name string `json:"name"`
Arguments ToolCallFunctionArguments `json:"arguments"`
}
@@ -226,11 +283,12 @@ func (pt PropertyType) String() string {
}
type ToolProperty struct {
- AnyOf []ToolProperty `json:"anyOf,omitempty"`
- Type PropertyType `json:"type"`
- Items any `json:"items,omitempty"`
- Description string `json:"description"`
- Enum []any `json:"enum,omitempty"`
+ AnyOf []ToolProperty `json:"anyOf,omitempty"`
+ Type PropertyType `json:"type,omitempty"`
+ Items any `json:"items,omitempty"`
+ Description string `json:"description,omitempty"`
+ Enum []any `json:"enum,omitempty"`
+ Properties map[string]ToolProperty `json:"properties,omitempty"`
}
// ToTypeScriptType converts a ToolProperty to a TypeScript type string
@@ -278,16 +336,23 @@ func mapToTypeScriptType(jsonType string) string {
}
}
+type ToolFunctionParameters struct {
+ Type string `json:"type"`
+ Defs any `json:"$defs,omitempty"`
+ Items any `json:"items,omitempty"`
+ Required []string `json:"required,omitempty"`
+ Properties map[string]ToolProperty `json:"properties"`
+}
+
+func (t *ToolFunctionParameters) String() string {
+ bts, _ := json.Marshal(t)
+ return string(bts)
+}
+
type ToolFunction struct {
- Name string `json:"name"`
- Description string `json:"description"`
- Parameters struct {
- Type string `json:"type"`
- Defs any `json:"$defs,omitempty"`
- Items any `json:"items,omitempty"`
- Required []string `json:"required"`
- Properties map[string]ToolProperty `json:"properties"`
- } `json:"parameters"`
+ Name string `json:"name"`
+ Description string `json:"description,omitempty"`
+ Parameters ToolFunctionParameters `json:"parameters"`
}
func (t *ToolFunction) String() string {
@@ -295,19 +360,66 @@ func (t *ToolFunction) String() string {
return string(bts)
}
+// TokenLogprob represents log probability information for a single token alternative.
+type TokenLogprob struct {
+ // Token is the text representation of the token.
+ Token string `json:"token"`
+
+ // Logprob is the log probability of this token.
+ Logprob float64 `json:"logprob"`
+
+ // Bytes contains the raw byte representation of the token
+ Bytes []int `json:"bytes,omitempty"`
+}
+
+// Logprob contains log probability information for a generated token.
+type Logprob struct {
+ TokenLogprob
+
+ // TopLogprobs contains the most likely tokens and their log probabilities
+ // at this position, if requested via TopLogprobs parameter.
+ TopLogprobs []TokenLogprob `json:"top_logprobs,omitempty"`
+}
+
// ChatResponse is the response returned by [Client.Chat]. Its fields are
// similar to [GenerateResponse].
type ChatResponse struct {
- Model string `json:"model"`
- CreatedAt time.Time `json:"created_at"`
- Message Message `json:"message"`
- DoneReason string `json:"done_reason,omitempty"`
+ // Model is the model name that generated the response.
+ Model string `json:"model"`
+ // RemoteModel is the name of the upstream model that generated the response.
+ RemoteModel string `json:"remote_model,omitempty"`
+
+ // RemoteHost is the URL of the upstream Ollama host that generated the response.
+ RemoteHost string `json:"remote_host,omitempty"`
+
+ // CreatedAt is the timestamp of the response.
+ CreatedAt time.Time `json:"created_at"`
+
+ // Message contains the message or part of a message from the model.
+ Message Message `json:"message"`
+
+ // Done specifies if the response is complete.
Done bool `json:"done"`
+ // DoneReason is the reason the model stopped generating text.
+ DoneReason string `json:"done_reason,omitempty"`
+
+ DebugInfo *DebugInfo `json:"_debug_info,omitempty"`
+
+ // Logprobs contains log probability information for the generated tokens,
+ // if requested via the Logprobs parameter.
+ Logprobs []Logprob `json:"logprobs,omitempty"`
+
Metrics
}
+// DebugInfo contains debug information for template rendering
+type DebugInfo struct {
+ RenderedTemplate string `json:"rendered_template"`
+ ImageCount int `json:"image_count,omitempty"`
+}
+
type Metrics struct {
TotalDuration time.Duration `json:"total_duration,omitempty"`
LoadDuration time.Duration `json:"load_duration,omitempty"`
@@ -360,8 +472,12 @@ type EmbedRequest struct {
// this request.
KeepAlive *Duration `json:"keep_alive,omitempty"`
+ // Truncate truncates the input to fit the model's max sequence length.
Truncate *bool `json:"truncate,omitempty"`
+ // Dimensions truncates the output embedding to the specified dimension.
+ Dimensions int `json:"dimensions,omitempty"`
+
// Options lists model-specific options.
Options map[string]any `json:"options"`
}
@@ -399,18 +515,50 @@ type EmbeddingResponse struct {
// CreateRequest is the request passed to [Client.Create].
type CreateRequest struct {
- Model string `json:"model"`
- Stream *bool `json:"stream,omitempty"`
+ // Model is the model name to create.
+ Model string `json:"model"`
+
+ // Stream specifies whether the response is streaming; it is true by default.
+ Stream *bool `json:"stream,omitempty"`
+
+ // Quantize is the quantization format for the model; leave blank to not change the quantization level.
Quantize string `json:"quantize,omitempty"`
- From string `json:"from,omitempty"`
- Files map[string]string `json:"files,omitempty"`
- Adapters map[string]string `json:"adapters,omitempty"`
- Template string `json:"template,omitempty"`
- License any `json:"license,omitempty"`
- System string `json:"system,omitempty"`
- Parameters map[string]any `json:"parameters,omitempty"`
- Messages []Message `json:"messages,omitempty"`
+ // From is the name of the model or file to use as the source.
+ From string `json:"from,omitempty"`
+
+ // RemoteHost is the URL of the upstream ollama API for the model (if any).
+ RemoteHost string `json:"remote_host,omitempty"`
+
+ // Files is a map of files include when creating the model.
+ Files map[string]string `json:"files,omitempty"`
+
+ // Adapters is a map of LoRA adapters to include when creating the model.
+ Adapters map[string]string `json:"adapters,omitempty"`
+
+ // Template is the template used when constructing a request to the model.
+ Template string `json:"template,omitempty"`
+
+ // License is a string or list of strings for licenses.
+ License any `json:"license,omitempty"`
+
+ // System is the system prompt for the model.
+ System string `json:"system,omitempty"`
+
+ // Parameters is a map of hyper-parameters which are applied to the model.
+ Parameters map[string]any `json:"parameters,omitempty"`
+
+ // Messages is a list of messages added to the model before chat and generation requests.
+ Messages []Message `json:"messages,omitempty"`
+
+ Renderer string `json:"renderer,omitempty"`
+ Parser string `json:"parser,omitempty"`
+
+ // Requires is the minimum version of Ollama required by the model.
+ Requires string `json:"requires,omitempty"`
+
+ // Info is a map of additional information for the model
+ Info map[string]any `json:"info,omitempty"`
// Deprecated: set the model name with Model instead
Name string `json:"name"`
@@ -448,13 +596,18 @@ type ShowResponse struct {
Parameters string `json:"parameters,omitempty"`
Template string `json:"template,omitempty"`
System string `json:"system,omitempty"`
+ Renderer string `json:"renderer,omitempty"`
+ Parser string `json:"parser,omitempty"`
Details ModelDetails `json:"details,omitempty"`
Messages []Message `json:"messages,omitempty"`
+ RemoteModel string `json:"remote_model,omitempty"`
+ RemoteHost string `json:"remote_host,omitempty"`
ModelInfo map[string]any `json:"model_info,omitempty"`
ProjectorInfo map[string]any `json:"projector_info,omitempty"`
Tensors []Tensor `json:"tensors,omitempty"`
Capabilities []model.Capability `json:"capabilities,omitempty"`
ModifiedAt time.Time `json:"modified_at,omitempty"`
+ Requires string `json:"requires,omitempty"`
}
// CopyRequest is the request passed to [Client.Copy].
@@ -508,12 +661,14 @@ type ProcessResponse struct {
// ListModelResponse is a single model description in [ListResponse].
type ListModelResponse struct {
- Name string `json:"name"`
- Model string `json:"model"`
- ModifiedAt time.Time `json:"modified_at"`
- Size int64 `json:"size"`
- Digest string `json:"digest"`
- Details ModelDetails `json:"details,omitempty"`
+ Name string `json:"name"`
+ Model string `json:"model"`
+ RemoteModel string `json:"remote_model,omitempty"`
+ RemoteHost string `json:"remote_host,omitempty"`
+ ModifiedAt time.Time `json:"modified_at"`
+ Size int64 `json:"size"`
+ Digest string `json:"digest"`
+ Details ModelDetails `json:"details,omitempty"`
}
// ProcessModelResponse is a single model description in [ProcessResponse].
@@ -537,6 +692,12 @@ type GenerateResponse struct {
// Model is the model name that generated the response.
Model string `json:"model"`
+ // RemoteModel is the name of the upstream model that generated the response.
+ RemoteModel string `json:"remote_model,omitempty"`
+
+ // RemoteHost is the URL of the upstream Ollama host that generated the response.
+ RemoteHost string `json:"remote_host,omitempty"`
+
// CreatedAt is the timestamp of the response.
CreatedAt time.Time `json:"created_at"`
@@ -560,6 +721,12 @@ type GenerateResponse struct {
Metrics
ToolCalls []ToolCall `json:"tool_calls,omitempty"`
+
+ DebugInfo *DebugInfo `json:"_debug_info,omitempty"`
+
+ // Logprobs contains log probability information for the generated tokens,
+ // if requested via the Logprobs parameter.
+ Logprobs []Logprob `json:"logprobs,omitempty"`
}
// ModelDetails provides details about a model.
@@ -572,6 +739,18 @@ type ModelDetails struct {
QuantizationLevel string `json:"quantization_level"`
}
+// UserResponse provides information about a user.
+type UserResponse struct {
+ ID uuid.UUID `json:"id"`
+ Email string `json:"email"`
+ Name string `json:"name"`
+ Bio string `json:"bio,omitempty"`
+ AvatarURL string `json:"avatarurl,omitempty"`
+ FirstName string `json:"firstname,omitempty"`
+ LastName string `json:"lastname,omitempty"`
+ Plan string `json:"plan,omitempty"`
+}
+
// Tensor describes the metadata for a given tensor.
type Tensor struct {
Name string `json:"name"`
@@ -769,8 +948,8 @@ func (t *ThinkValue) IsString() bool {
return ok
}
-// AsBool returns the value as a bool (true if enabled in any way)
-func (t *ThinkValue) AsBool() bool {
+// Bool returns the value as a bool (true if enabled in any way)
+func (t *ThinkValue) Bool() bool {
if t == nil || t.Value == nil {
return false
}
@@ -786,8 +965,8 @@ func (t *ThinkValue) AsBool() bool {
}
}
-// AsString returns the value as a string
-func (t *ThinkValue) AsString() string {
+// String returns the value as a string
+func (t *ThinkValue) String() string {
if t == nil || t.Value == nil {
return ""
}
@@ -825,7 +1004,7 @@ func (t *ThinkValue) UnmarshalJSON(data []byte) error {
return nil
}
- return fmt.Errorf("think must be a boolean or string (\"high\", \"medium\", \"low\")")
+ return fmt.Errorf("think must be a boolean or string (\"high\", \"medium\", \"low\", true, or false)")
}
// MarshalJSON implements json.Marshaler
@@ -860,7 +1039,7 @@ func (d *Duration) UnmarshalJSON(b []byte) (err error) {
if t < 0 {
d.Duration = time.Duration(math.MaxInt64)
} else {
- d.Duration = time.Duration(int(t) * int(time.Second))
+ d.Duration = time.Duration(t * float64(time.Second))
}
case string:
d.Duration, err = time.ParseDuration(t)
diff --git a/api/types_test.go b/api/types_test.go
index 841853808..da1581f48 100644
--- a/api/types_test.go
+++ b/api/types_test.go
@@ -17,6 +17,11 @@ func TestKeepAliveParsingFromJSON(t *testing.T) {
req string
exp *Duration
}{
+ {
+ name: "Unset",
+ req: `{ }`,
+ exp: nil,
+ },
{
name: "Positive Integer",
req: `{ "keep_alive": 42 }`,
@@ -25,7 +30,7 @@ func TestKeepAliveParsingFromJSON(t *testing.T) {
{
name: "Positive Float",
req: `{ "keep_alive": 42.5 }`,
- exp: &Duration{42 * time.Second},
+ exp: &Duration{42500 * time.Millisecond},
},
{
name: "Positive Integer String",
@@ -293,6 +298,68 @@ func TestToolFunction_UnmarshalJSON(t *testing.T) {
}
}
+func TestToolFunctionParameters_MarshalJSON(t *testing.T) {
+ tests := []struct {
+ name string
+ input ToolFunctionParameters
+ expected string
+ }{
+ {
+ name: "simple object with string property",
+ input: ToolFunctionParameters{
+ Type: "object",
+ Required: []string{"name"},
+ Properties: map[string]ToolProperty{
+ "name": {Type: PropertyType{"string"}},
+ },
+ },
+ expected: `{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}`,
+ },
+ {
+ name: "no required",
+ input: ToolFunctionParameters{
+ Type: "object",
+ Properties: map[string]ToolProperty{
+ "name": {Type: PropertyType{"string"}},
+ },
+ },
+ expected: `{"type":"object","properties":{"name":{"type":"string"}}}`,
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ data, err := json.Marshal(test.input)
+ require.NoError(t, err)
+ assert.Equal(t, test.expected, string(data))
+ })
+ }
+}
+
+func TestToolCallFunction_IndexAlwaysMarshals(t *testing.T) {
+ fn := ToolCallFunction{
+ Name: "echo",
+ Arguments: ToolCallFunctionArguments{"message": "hi"},
+ }
+
+ data, err := json.Marshal(fn)
+ require.NoError(t, err)
+
+ raw := map[string]any{}
+ require.NoError(t, json.Unmarshal(data, &raw))
+ require.Contains(t, raw, "index")
+ assert.Equal(t, float64(0), raw["index"])
+
+ fn.Index = 3
+ data, err = json.Marshal(fn)
+ require.NoError(t, err)
+
+ raw = map[string]any{}
+ require.NoError(t, json.Unmarshal(data, &raw))
+ require.Contains(t, raw, "index")
+ assert.Equal(t, float64(3), raw["index"])
+}
+
func TestPropertyType_UnmarshalJSON(t *testing.T) {
tests := []struct {
name string
@@ -436,3 +503,151 @@ func TestThinking_UnmarshalJSON(t *testing.T) {
})
}
}
+
+func TestToolPropertyNestedProperties(t *testing.T) {
+ tests := []struct {
+ name string
+ input string
+ expected ToolProperty
+ }{
+ {
+ name: "nested object properties",
+ input: `{
+ "type": "object",
+ "description": "Location details",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "Street address"
+ },
+ "city": {
+ "type": "string",
+ "description": "City name"
+ }
+ }
+ }`,
+ expected: ToolProperty{
+ Type: PropertyType{"object"},
+ Description: "Location details",
+ Properties: map[string]ToolProperty{
+ "address": {
+ Type: PropertyType{"string"},
+ Description: "Street address",
+ },
+ "city": {
+ Type: PropertyType{"string"},
+ Description: "City name",
+ },
+ },
+ },
+ },
+ {
+ name: "deeply nested properties",
+ input: `{
+ "type": "object",
+ "description": "Event",
+ "properties": {
+ "location": {
+ "type": "object",
+ "description": "Location",
+ "properties": {
+ "coordinates": {
+ "type": "object",
+ "description": "GPS coordinates",
+ "properties": {
+ "lat": {"type": "number", "description": "Latitude"},
+ "lng": {"type": "number", "description": "Longitude"}
+ }
+ }
+ }
+ }
+ }
+ }`,
+ expected: ToolProperty{
+ Type: PropertyType{"object"},
+ Description: "Event",
+ Properties: map[string]ToolProperty{
+ "location": {
+ Type: PropertyType{"object"},
+ Description: "Location",
+ Properties: map[string]ToolProperty{
+ "coordinates": {
+ Type: PropertyType{"object"},
+ Description: "GPS coordinates",
+ Properties: map[string]ToolProperty{
+ "lat": {Type: PropertyType{"number"}, Description: "Latitude"},
+ "lng": {Type: PropertyType{"number"}, Description: "Longitude"},
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ var prop ToolProperty
+ err := json.Unmarshal([]byte(tt.input), &prop)
+ require.NoError(t, err)
+ assert.Equal(t, tt.expected, prop)
+
+ // Round-trip test: marshal and unmarshal again
+ data, err := json.Marshal(prop)
+ require.NoError(t, err)
+
+ var prop2 ToolProperty
+ err = json.Unmarshal(data, &prop2)
+ require.NoError(t, err)
+ assert.Equal(t, tt.expected, prop2)
+ })
+ }
+}
+
+func TestToolFunctionParameters_String(t *testing.T) {
+ tests := []struct {
+ name string
+ params ToolFunctionParameters
+ expected string
+ }{
+ {
+ name: "simple object with string property",
+ params: ToolFunctionParameters{
+ Type: "object",
+ Required: []string{"name"},
+ Properties: map[string]ToolProperty{
+ "name": {
+ Type: PropertyType{"string"},
+ Description: "The name of the person",
+ },
+ },
+ },
+ expected: `{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"The name of the person"}}}`,
+ },
+ {
+ name: "marshal failure returns empty string",
+ params: ToolFunctionParameters{
+ Type: "object",
+ Defs: func() any {
+ // Create a cycle that will cause json.Marshal to fail
+ type selfRef struct {
+ Self *selfRef
+ }
+ s := &selfRef{}
+ s.Self = s
+ return s
+ }(),
+ Properties: map[string]ToolProperty{},
+ },
+ expected: "",
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ result := test.params.String()
+ assert.Equal(t, test.expected, result)
+ })
+ }
+}
diff --git a/app/.gitignore b/app/.gitignore
index 0aa247948..a83eb70ad 100644
--- a/app/.gitignore
+++ b/app/.gitignore
@@ -1 +1,11 @@
ollama.syso
+*.crt
+*.exe
+/app/app
+/app/squirrel
+ollama
+*cover*
+.vscode
+.env
+.DS_Store
+.claude
diff --git a/app/README.md b/app/README.md
index 433ee44e8..eadf34474 100644
--- a/app/README.md
+++ b/app/README.md
@@ -1,22 +1,97 @@
-# Ollama App
+# Ollama for macOS and Windows
-## Linux
+## Download
-TODO
+- [macOS](https://github.com/ollama/app/releases/download/latest/Ollama.dmg)
+- [Windows](https://github.com/ollama/app/releases/download/latest/OllamaSetup.exe)
-## MacOS
+## Development
-TODO
+### Desktop App
-## Windows
+```bash
+go generate ./... &&
+go run ./cmd/app
+```
+
+### UI Development
+
+#### Setup
+
+Install required tools:
+
+```bash
+go install github.com/tkrajina/typescriptify-golang-structs/tscriptify@latest
+```
+
+#### Develop UI (Development Mode)
+
+1. Start the React development server (with hot-reload):
+
+```bash
+cd ui/app
+npm install
+npm run dev
+```
+
+2. In a separate terminal, run the Ollama app with the `-dev` flag:
+
+```bash
+go generate ./... &&
+OLLAMA_DEBUG=1 go run ./cmd/app -dev
+```
+
+The `-dev` flag enables:
+
+- Loading the UI from the Vite dev server at http://localhost:5173
+- Fixed UI server port at http://127.0.0.1:3001 for API requests
+- CORS headers for cross-origin requests
+- Hot-reload support for UI development
+
+## Build
+
+
+### Windows
-If you want to build the installer, youll need to install
- https://jrsoftware.org/isinfo.php
-In the top directory of this repo, run the following powershell script
-to build the ollama CLI, ollama app, and ollama installer.
-
+**Dependencies** - either build a local copy of ollama, or use a github release
```powershell
-powershell -ExecutionPolicy Bypass -File .\scripts\build_windows.ps1
+# Local dependencies
+.\scripts\deps_local.ps1
+
+# Release dependencies
+.\scripts\deps_release.ps1 0.6.8
+```
+
+**Build**
+```powershell
+.\scripts\build_windows.ps1
+```
+
+### macOS
+
+CI builds with Xcode 14.1 for OS compatibility prior to v13. If you want to manually build v11+ support, you can download the older Xcode [here](https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_14.1/Xcode_14.1.xip), extract, then `mv ./Xcode.app /Applications/Xcode_14.1.0.app` then activate with:
+
+```
+export CGO_CFLAGS=-mmacosx-version-min=12.0
+export CGO_CXXFLAGS=-mmacosx-version-min=12.0
+export CGO_LDFLAGS=-mmacosx-version-min=12.0
+export SDKROOT=/Applications/Xcode_14.1.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
+export DEVELOPER_DIR=/Applications/Xcode_14.1.0.app/Contents/Developer
+```
+
+**Dependencies** - either build a local copy of Ollama, or use a GitHub release:
+```sh
+# Local dependencies
+./scripts/deps_local.sh
+
+# Release dependencies
+./scripts/deps_release.sh 0.6.8
+```
+
+**Build**
+```sh
+./scripts/build_darwin.sh
```
diff --git a/app/assets/assets.go b/app/assets/assets.go
index 6fed2d0ee..1146e41c5 100644
--- a/app/assets/assets.go
+++ b/app/assets/assets.go
@@ -1,3 +1,5 @@
+//go:build windows || darwin
+
package assets
import (
diff --git a/app/assets/background.png b/app/assets/background.png
new file mode 100644
index 000000000..bbfc5879f
Binary files /dev/null and b/app/assets/background.png differ
diff --git a/app/assets/tray.ico b/app/assets/tray.ico
index e63616c57..578669824 100644
Binary files a/app/assets/tray.ico and b/app/assets/tray.ico differ
diff --git a/app/assets/tray_upgrade.ico b/app/assets/tray_upgrade.ico
index d20830518..4cb604c9d 100644
Binary files a/app/assets/tray_upgrade.ico and b/app/assets/tray_upgrade.ico differ
diff --git a/app/auth/connect.go b/app/auth/connect.go
new file mode 100644
index 000000000..2d3297e18
--- /dev/null
+++ b/app/auth/connect.go
@@ -0,0 +1,26 @@
+//go:build windows || darwin
+
+package auth
+
+import (
+ "encoding/base64"
+ "fmt"
+ "net/url"
+ "os"
+
+ "github.com/ollama/ollama/auth"
+)
+
+// BuildConnectURL generates the connect URL with the public key and device name
+func BuildConnectURL(baseURL string) (string, error) {
+ pubKey, err := auth.GetPublicKey()
+ if err != nil {
+ return "", fmt.Errorf("failed to get public key: %w", err)
+ }
+
+ encodedKey := base64.RawURLEncoding.EncodeToString([]byte(pubKey))
+ hostname, _ := os.Hostname()
+ encodedDevice := url.QueryEscape(hostname)
+
+ return fmt.Sprintf("%s/connect?name=%s&key=%s&launch=true", baseURL, encodedDevice, encodedKey), nil
+}
diff --git a/app/cmd/app/AppDelegate.h b/app/cmd/app/AppDelegate.h
new file mode 100644
index 000000000..b75825236
--- /dev/null
+++ b/app/cmd/app/AppDelegate.h
@@ -0,0 +1,7 @@
+#import
+
+@interface AppDelegate : NSObject
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
+
+@end
\ No newline at end of file
diff --git a/app/cmd/app/app.go b/app/cmd/app/app.go
new file mode 100644
index 000000000..7e183b8df
--- /dev/null
+++ b/app/cmd/app/app.go
@@ -0,0 +1,480 @@
+//go:build windows || darwin
+
+package main
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "io"
+ "log/slog"
+ "net"
+ "net/http"
+ "net/url"
+ "os"
+ "os/exec"
+ "os/signal"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "syscall"
+ "time"
+
+ "github.com/google/uuid"
+ "github.com/ollama/ollama/app/auth"
+ "github.com/ollama/ollama/app/logrotate"
+ "github.com/ollama/ollama/app/server"
+ "github.com/ollama/ollama/app/store"
+ "github.com/ollama/ollama/app/tools"
+ "github.com/ollama/ollama/app/ui"
+ "github.com/ollama/ollama/app/updater"
+ "github.com/ollama/ollama/app/version"
+)
+
+var (
+ wv = &Webview{}
+ uiServerPort int
+)
+
+var debug = strings.EqualFold(os.Getenv("OLLAMA_DEBUG"), "true") || os.Getenv("OLLAMA_DEBUG") == "1"
+
+var (
+ fastStartup = false
+ devMode = false
+)
+
+type appMove int
+
+const (
+ CannotMove appMove = iota
+ UserDeclinedMove
+ MoveCompleted
+ AlreadyMoved
+ LoginSession
+ PermissionDenied
+ MoveError
+)
+
+func main() {
+ startHidden := false
+ var urlSchemeRequest string
+ if len(os.Args) > 1 {
+ for _, arg := range os.Args {
+ // Handle URL scheme requests (Windows)
+ if strings.HasPrefix(arg, "ollama://") {
+ urlSchemeRequest = arg
+ slog.Info("received URL scheme request", "url", arg)
+ continue
+ }
+ switch arg {
+ case "serve":
+ fmt.Fprintln(os.Stderr, "serve command not supported, use ollama")
+ os.Exit(1)
+ case "version", "-v", "--version":
+ fmt.Println(version.Version)
+ os.Exit(0)
+ case "background":
+ // When running the process in this "background" mode, we spawn a
+ // child process for the main app. This is necessary so the
+ // "Allow in the Background" setting in MacOS can be unchecked
+ // without breaking the main app. Two copies of the app are
+ // present in the bundle, one for the main app and one for the
+ // background initiator.
+ fmt.Fprintln(os.Stdout, "starting in background")
+ runInBackground()
+ os.Exit(0)
+ case "hidden", "-j", "--hide":
+ // startHidden suppresses the UI on startup, and can be triggered multiple ways
+ // On windows, path based via login startup detection
+ // On MacOS via [NSApp isHidden] from `open -j -a /Applications/Ollama.app` or equivalent
+ // On both via the "hidden" command line argument
+ startHidden = true
+ case "--fast-startup":
+ // Skip optional steps like pending updates to start quickly for immediate use
+ fastStartup = true
+ case "-dev", "--dev":
+ // Development mode: use local dev server and enable CORS
+ devMode = true
+ }
+ }
+ }
+
+ level := slog.LevelInfo
+ if debug {
+ level = slog.LevelDebug
+ }
+
+ logrotate.Rotate(appLogPath)
+ if _, err := os.Stat(filepath.Dir(appLogPath)); errors.Is(err, os.ErrNotExist) {
+ if err := os.MkdirAll(filepath.Dir(appLogPath), 0o755); err != nil {
+ slog.Error(fmt.Sprintf("failed to create server log dir %v", err))
+ return
+ }
+ }
+
+ var logFile io.Writer
+ var err error
+ logFile, err = os.OpenFile(appLogPath, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o755)
+ if err != nil {
+ slog.Error(fmt.Sprintf("failed to create server log %v", err))
+ return
+ }
+ // Detect if we're a GUI app on windows, and if not, send logs to console as well
+ if os.Stderr.Fd() != 0 {
+ // Console app detected
+ logFile = io.MultiWriter(os.Stderr, logFile)
+ }
+
+ handler := slog.NewTextHandler(logFile, &slog.HandlerOptions{
+ Level: level,
+ AddSource: true,
+ ReplaceAttr: func(_ []string, attr slog.Attr) slog.Attr {
+ if attr.Key == slog.SourceKey {
+ source := attr.Value.Any().(*slog.Source)
+ source.File = filepath.Base(source.File)
+ }
+ return attr
+ },
+ })
+
+ slog.SetDefault(slog.New(handler))
+ logStartup()
+
+ // On Windows, check if another instance is running and send URL to it
+ // Do this after logging is set up so we can debug issues
+ if runtime.GOOS == "windows" && urlSchemeRequest != "" {
+ slog.Debug("checking for existing instance", "url", urlSchemeRequest)
+ if checkAndHandleExistingInstance(urlSchemeRequest) {
+ // The function will exit if it successfully sends to another instance
+ // If we reach here, we're the first/only instance
+ } else {
+ // No existing instance found, handle the URL scheme in this instance
+ go func() {
+ handleURLSchemeInCurrentInstance(urlSchemeRequest)
+ }()
+ }
+ }
+
+ if u := os.Getenv("OLLAMA_UPDATE_URL"); u != "" {
+ updater.UpdateCheckURLBase = u
+ }
+
+ // Detect if this is a first start after an upgrade, in
+ // which case we need to do some cleanup
+ var skipMove bool
+ if _, err := os.Stat(updater.UpgradeMarkerFile); err == nil {
+ slog.Debug("first start after upgrade")
+ err = updater.DoPostUpgradeCleanup()
+ if err != nil {
+ slog.Error("failed to cleanup prior version", "error", err)
+ }
+ // We never prompt to move the app after an upgrade
+ skipMove = true
+ // Start hidden after updates to prevent UI from opening automatically
+ startHidden = true
+ }
+
+ if !skipMove && !fastStartup {
+ if maybeMoveAndRestart() == MoveCompleted {
+ return
+ }
+ }
+
+ // Check if another instance is already running
+ // On Windows, focus the existing instance; on other platforms, kill it
+ handleExistingInstance(startHidden)
+
+ // on macOS, offer the user to create a symlink
+ // from /usr/local/bin/ollama to the app bundle
+ installSymlink()
+
+ var ln net.Listener
+ if devMode {
+ // Use a fixed port in dev mode for predictable API access
+ ln, err = net.Listen("tcp", "127.0.0.1:3001")
+ } else {
+ ln, err = net.Listen("tcp", "127.0.0.1:0")
+ }
+ if err != nil {
+ slog.Error("failed to find available port", "error", err)
+ return
+ }
+
+ port := ln.Addr().(*net.TCPAddr).Port
+ token := uuid.NewString()
+ wv.port = port
+ wv.token = token
+ uiServerPort = port
+
+ st := &store.Store{}
+
+ // Enable CORS in development mode
+ if devMode {
+ os.Setenv("OLLAMA_CORS", "1")
+
+ // Check if Vite dev server is running on port 5173
+ var conn net.Conn
+ var err error
+ for _, addr := range []string{"127.0.0.1:5173", "localhost:5173"} {
+ conn, err = net.DialTimeout("tcp", addr, 2*time.Second)
+ if err == nil {
+ conn.Close()
+ break
+ }
+ }
+
+ if err != nil {
+ slog.Error("Vite dev server not running on port 5173")
+ fmt.Fprintln(os.Stderr, "Error: Vite dev server is not running on port 5173")
+ fmt.Fprintln(os.Stderr, "Please run 'npm run dev' in the ui/app directory to start the UI in development mode")
+ os.Exit(1)
+ }
+ }
+
+ // Initialize tools registry
+ toolRegistry := tools.NewRegistry()
+ slog.Info("initialized tools registry", "tool_count", len(toolRegistry.List()))
+
+ // ctx is the app-level context that will be used to stop the app
+ ctx, cancel := context.WithCancel(context.Background())
+
+ // octx is the ollama server context that will be used to stop the ollama server
+ octx, ocancel := context.WithCancel(ctx)
+
+ // TODO (jmorganca): instead we should instantiate the
+ // webview with the store instead of assigning it here, however
+ // making the webview a global variable is easier for now
+ wv.Store = st
+ done := make(chan error, 1)
+ osrv := server.New(st, devMode)
+ go func() {
+ slog.Info("starting ollama server")
+ done <- osrv.Run(octx)
+ }()
+
+ uiServer := ui.Server{
+ Token: token,
+ Restart: func() {
+ ocancel()
+ <-done
+ octx, ocancel = context.WithCancel(ctx)
+ go func() {
+ done <- osrv.Run(octx)
+ }()
+ },
+ Store: st,
+ ToolRegistry: toolRegistry,
+ Dev: devMode,
+ Logger: slog.Default(),
+ }
+
+ srv := &http.Server{
+ Handler: uiServer.Handler(),
+ }
+
+ // Start the UI server
+ slog.Info("starting ui server", "port", port)
+ go func() {
+ slog.Debug("starting ui server on port", "port", port)
+ err = srv.Serve(ln)
+ if err != nil && !errors.Is(err, http.ErrServerClosed) {
+ slog.Warn("desktop server", "error", err)
+ }
+ slog.Debug("background desktop server done")
+ }()
+
+ updater := &updater.Updater{Store: st}
+ updater.StartBackgroundUpdaterChecker(ctx, UpdateAvailable)
+
+ hasCompletedFirstRun, err := st.HasCompletedFirstRun()
+ if err != nil {
+ slog.Error("failed to load has completed first run", "error", err)
+ }
+
+ if !hasCompletedFirstRun {
+ err = st.SetHasCompletedFirstRun(true)
+ if err != nil {
+ slog.Error("failed to set has completed first run", "error", err)
+ }
+ }
+
+ // capture SIGINT and SIGTERM signals and gracefully shutdown the app
+ signals := make(chan os.Signal, 1)
+ signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
+ go func() {
+ <-signals
+ slog.Info("received SIGINT or SIGTERM signal, shutting down")
+ quit()
+ }()
+
+ if urlSchemeRequest != "" {
+ go func() {
+ handleURLSchemeInCurrentInstance(urlSchemeRequest)
+ }()
+ } else {
+ slog.Debug("no URL scheme request to handle")
+ }
+
+ go func() {
+ slog.Debug("waiting for ollama server to be ready")
+ if err := ui.WaitForServer(ctx, 10*time.Second); err != nil {
+ slog.Warn("ollama server not ready, continuing anyway", "error", err)
+ }
+
+ if _, err := uiServer.UserData(ctx); err != nil {
+ slog.Warn("failed to load user data", "error", err)
+ }
+ }()
+
+ osRun(cancel, hasCompletedFirstRun, startHidden)
+
+ slog.Info("shutting down desktop server")
+ if err := srv.Close(); err != nil {
+ slog.Warn("error shutting down desktop server", "error", err)
+ }
+
+ slog.Info("shutting down ollama server")
+ cancel()
+ <-done
+}
+
+func startHiddenTasks() {
+ // If an upgrade is ready and we're in hidden mode, perform it at startup.
+ // If we're not in hidden mode, we want to start as fast as possible and not
+ // slow the user down with an upgrade.
+ if updater.IsUpdatePending() {
+ if fastStartup {
+ // CLI triggered app startup use-case
+ slog.Info("deferring pending update for fast startup")
+ } else {
+ if err := updater.DoUpgradeAtStartup(); err != nil {
+ slog.Info("unable to perform upgrade at startup", "error", err)
+ // Make sure the restart to upgrade menu shows so we can attempt an interactive upgrade to get authorization
+ UpdateAvailable("")
+ } else {
+ slog.Debug("launching new version...")
+ // TODO - consider a timer that aborts if this takes too long and we haven't been killed yet...
+ LaunchNewApp()
+ os.Exit(0)
+ }
+ }
+ }
+}
+
+func checkUserLoggedIn(uiServerPort int) bool {
+ if uiServerPort == 0 {
+ slog.Debug("UI server not ready yet, skipping auth check")
+ return false
+ }
+
+ resp, err := http.Post(fmt.Sprintf("http://127.0.0.1:%d/api/me", uiServerPort), "application/json", nil)
+ if err != nil {
+ slog.Debug("failed to call local auth endpoint", "error", err)
+ return false
+ }
+ defer resp.Body.Close()
+
+ // Check if the response is successful
+ if resp.StatusCode != http.StatusOK {
+ slog.Debug("auth endpoint returned non-OK status", "status", resp.StatusCode)
+ return false
+ }
+
+ var user struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ }
+
+ if err := json.NewDecoder(resp.Body).Decode(&user); err != nil {
+ slog.Debug("failed to parse user response", "error", err)
+ return false
+ }
+
+ // Verify we have a valid user with an ID and name
+ if user.ID == "" || user.Name == "" {
+ slog.Debug("user response missing required fields", "id", user.ID, "name", user.Name)
+ return false
+ }
+
+ slog.Debug("user is logged in", "user_id", user.ID, "user_name", user.Name)
+ return true
+}
+
+// handleConnectURLScheme fetches the connect URL and opens it in the browser
+func handleConnectURLScheme() {
+ if checkUserLoggedIn(uiServerPort) {
+ slog.Info("user is already logged in, opening app instead")
+ showWindow(wv.webview.Window())
+ return
+ }
+
+ connectURL, err := auth.BuildConnectURL("https://ollama.com")
+ if err != nil {
+ slog.Error("failed to build connect URL", "error", err)
+ openInBrowser("https://ollama.com/connect")
+ return
+ }
+
+ openInBrowser(connectURL)
+}
+
+// openInBrowser opens the specified URL in the default browser
+func openInBrowser(url string) {
+ var cmd string
+ var args []string
+
+ switch runtime.GOOS {
+ case "windows":
+ cmd = "rundll32"
+ args = []string{"url.dll,FileProtocolHandler", url}
+ case "darwin":
+ cmd = "open"
+ args = []string{url}
+ default: // "linux", "freebsd", "openbsd", "netbsd"... should not reach here
+ slog.Warn("unsupported OS for openInBrowser", "os", runtime.GOOS)
+ }
+
+ slog.Info("executing browser command", "cmd", cmd, "args", args)
+ if err := exec.Command(cmd, args...).Start(); err != nil {
+ slog.Error("failed to open URL in browser", "url", url, "cmd", cmd, "args", args, "error", err)
+ }
+}
+
+// parseURLScheme parses an ollama:// URL and validates it
+// Supports: ollama:// (open app) and ollama://connect (OAuth)
+func parseURLScheme(urlSchemeRequest string) (isConnect bool, err error) {
+ parsedURL, err := url.Parse(urlSchemeRequest)
+ if err != nil {
+ return false, fmt.Errorf("invalid URL: %w", err)
+ }
+
+ // Check if this is a connect URL
+ if parsedURL.Host == "connect" || strings.TrimPrefix(parsedURL.Path, "/") == "connect" {
+ return true, nil
+ }
+
+ // Allow bare ollama:// or ollama:/// to open the app
+ if (parsedURL.Host == "" && parsedURL.Path == "") || parsedURL.Path == "/" {
+ return false, nil
+ }
+
+ return false, fmt.Errorf("unsupported ollama:// URL path: %s", urlSchemeRequest)
+}
+
+// handleURLSchemeInCurrentInstance processes URL scheme requests in the current instance
+func handleURLSchemeInCurrentInstance(urlSchemeRequest string) {
+ isConnect, err := parseURLScheme(urlSchemeRequest)
+ if err != nil {
+ slog.Error("failed to parse URL scheme request", "url", urlSchemeRequest, "error", err)
+ return
+ }
+
+ if isConnect {
+ handleConnectURLScheme()
+ } else {
+ if wv.webview != nil {
+ showWindow(wv.webview.Window())
+ }
+ }
+}
diff --git a/app/cmd/app/app_darwin.go b/app/cmd/app/app_darwin.go
new file mode 100644
index 000000000..8e886a124
--- /dev/null
+++ b/app/cmd/app/app_darwin.go
@@ -0,0 +1,262 @@
+//go:build windows || darwin
+
+package main
+
+// #cgo CFLAGS: -x objective-c
+// #cgo LDFLAGS: -framework Webkit -framework Cocoa -framework LocalAuthentication -framework ServiceManagement
+// #include "app_darwin.h"
+// #include "../../updater/updater_darwin.h"
+// typedef const char cchar_t;
+import "C"
+
+import (
+ "log/slog"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+ "time"
+ "unsafe"
+
+ "github.com/ollama/ollama/app/updater"
+ "github.com/ollama/ollama/app/version"
+)
+
+var ollamaPath = func() string {
+ if updater.BundlePath != "" {
+ return filepath.Join(updater.BundlePath, "Contents", "Resources", "ollama")
+ }
+
+ pwd, err := os.Getwd()
+ if err != nil {
+ slog.Warn("failed to get pwd", "error", err)
+ return ""
+ }
+ return filepath.Join(pwd, "ollama")
+}()
+
+var (
+ isApp = updater.BundlePath != ""
+ appLogPath = filepath.Join(os.Getenv("HOME"), ".ollama", "logs", "app.log")
+ launchAgentPath = filepath.Join(os.Getenv("HOME"), "Library", "LaunchAgents", "com.ollama.ollama.plist")
+)
+
+// TODO(jmorganca): pre-create the window and pass
+// it to the webview instead of using the internal one
+//
+//export StartUI
+func StartUI(path *C.cchar_t) {
+ p := C.GoString(path)
+ wv.Run(p)
+ styleWindow(wv.webview.Window())
+ C.setWindowDelegate(wv.webview.Window())
+}
+
+//export ShowUI
+func ShowUI() {
+ // If webview is already running, just show the window
+ if wv.IsRunning() && wv.webview != nil {
+ showWindow(wv.webview.Window())
+ } else {
+ root := C.CString("/")
+ defer C.free(unsafe.Pointer(root))
+ StartUI(root)
+ }
+}
+
+//export StopUI
+func StopUI() {
+ wv.Terminate()
+}
+
+//export StartUpdate
+func StartUpdate() {
+ if err := updater.DoUpgrade(true); err != nil {
+ slog.Error("upgrade failed", "error", err)
+ return
+ }
+ slog.Debug("launching new version...")
+ // TODO - consider a timer that aborts if this takes too long and we haven't been killed yet...
+ LaunchNewApp()
+ // not reached if upgrade works, the new app will kill this process
+}
+
+//export darwinStartHiddenTasks
+func darwinStartHiddenTasks() {
+ startHiddenTasks()
+}
+
+func init() {
+ // Temporary code to mimic Squirrel ShipIt behavior
+ if len(os.Args) > 2 {
+ if os.Args[1] == "___launch___" {
+ path := strings.TrimPrefix(os.Args[2], "file://")
+ slog.Info("Ollama binary called as ShipIt - launching", "app", path)
+ appName := C.CString(path)
+ defer C.free(unsafe.Pointer(appName))
+ C.launchApp(appName)
+ slog.Info("other instance has been launched")
+ time.Sleep(5 * time.Second)
+ slog.Info("exiting with zero status")
+ os.Exit(0)
+ }
+ }
+}
+
+// maybeMoveAndRestart checks if we should relocate
+// and returns true if we did and should immediately exit
+func maybeMoveAndRestart() appMove {
+ if updater.BundlePath == "" {
+ // Typically developer mode with 'go run ./cmd/app'
+ return CannotMove
+ }
+ // Respect users intent if they chose "keep" vs. "replace" when dragging to Applications
+ if strings.HasPrefix(updater.BundlePath, strings.TrimSuffix(updater.SystemWidePath, filepath.Ext(updater.SystemWidePath))) {
+ return AlreadyMoved
+ }
+
+ // Ask to move to applications directory
+ status := (appMove)(C.askToMoveToApplications())
+ if status == MoveCompleted {
+ // Double check
+ if _, err := os.Stat(updater.SystemWidePath); err != nil {
+ slog.Warn("stat failure after move", "path", updater.SystemWidePath, "error", err)
+ return MoveError
+ }
+ }
+ return status
+}
+
+// handleExistingInstance handles existing instances on macOS
+func handleExistingInstance(_ bool) {
+ C.killOtherInstances()
+}
+
+func installSymlink() {
+ if !isApp {
+ return
+ }
+ cliPath := C.CString(ollamaPath)
+ defer C.free(unsafe.Pointer(cliPath))
+
+ // Check the users path first
+ cmd, _ := exec.LookPath("ollama")
+ if cmd != "" {
+ resolved, err := os.Readlink(cmd)
+ if err == nil {
+ tmp, err := filepath.Abs(resolved)
+ if err == nil {
+ resolved = tmp
+ }
+ } else {
+ resolved = cmd
+ }
+ if resolved == ollamaPath {
+ slog.Info("ollama already in users PATH", "cli", cmd)
+ return
+ }
+ }
+
+ code := C.installSymlink(cliPath)
+ if code != 0 {
+ slog.Error("Failed to install symlink")
+ }
+}
+
+func UpdateAvailable(ver string) error {
+ slog.Debug("update detected, adjusting menu")
+ // TODO (jmorganca): find a better check for development mode than checking the bundle path
+ if updater.BundlePath != "" {
+ C.updateAvailable()
+ }
+ return nil
+}
+
+func osRun(_ func(), hasCompletedFirstRun, startHidden bool) {
+ registerLaunchAgent(hasCompletedFirstRun)
+
+ // Run the native macOS app
+ // Note: this will block until the app is closed
+ slog.Debug("starting native darwin event loop")
+ C.run(C._Bool(hasCompletedFirstRun), C._Bool(startHidden))
+}
+
+func quit() {
+ C.quit()
+}
+
+func LaunchNewApp() {
+ appName := C.CString(updater.BundlePath)
+ defer C.free(unsafe.Pointer(appName))
+ C.launchApp(appName)
+}
+
+func registerLaunchAgent(hasCompletedFirstRun bool) {
+ // Remove any stale Login Item registrations
+ C.unregisterSelfFromLoginItem()
+
+ C.registerSelfAsLoginItem(C._Bool(hasCompletedFirstRun))
+}
+
+func logStartup() {
+ appPath := updater.BundlePath
+ if appPath == updater.SystemWidePath {
+ // Detect sandboxed scenario
+ exe, err := os.Executable()
+ if err == nil {
+ p := filepath.Dir(exe)
+ if filepath.Base(p) == "MacOS" {
+ p = filepath.Dir(filepath.Dir(p))
+ if p != appPath {
+ slog.Info("starting sandboxed Ollama", "app", appPath, "sandbox", p)
+ return
+ }
+ }
+ }
+ }
+ slog.Info("starting Ollama", "app", appPath, "version", version.Version, "OS", updater.UserAgentOS)
+}
+
+func hideWindow(ptr unsafe.Pointer) {
+ C.hideWindow(C.uintptr_t(uintptr(ptr)))
+}
+
+func showWindow(ptr unsafe.Pointer) {
+ C.showWindow(C.uintptr_t(uintptr(ptr)))
+}
+
+func styleWindow(ptr unsafe.Pointer) {
+ C.styleWindow(C.uintptr_t(uintptr(ptr)))
+}
+
+func runInBackground() {
+ cmd := exec.Command(filepath.Join(updater.BundlePath, "Contents", "MacOS", "Ollama"), "hidden")
+ if cmd != nil {
+ err := cmd.Run()
+ if err != nil {
+ slog.Error("failed to run Ollama", "bundlePath", updater.BundlePath, "error", err)
+ os.Exit(1)
+ }
+ } else {
+ slog.Error("failed to start Ollama in background", "bundlePath", updater.BundlePath)
+ os.Exit(1)
+ }
+}
+
+func drag(ptr unsafe.Pointer) {
+ C.drag(C.uintptr_t(uintptr(ptr)))
+}
+
+func doubleClick(ptr unsafe.Pointer) {
+ C.doubleClick(C.uintptr_t(uintptr(ptr)))
+}
+
+//export handleConnectURL
+func handleConnectURL() {
+ handleConnectURLScheme()
+}
+
+// checkAndHandleExistingInstance is not needed on non-Windows platforms
+func checkAndHandleExistingInstance(_ string) bool {
+ return false
+}
diff --git a/app/cmd/app/app_darwin.h b/app/cmd/app/app_darwin.h
new file mode 100644
index 000000000..4a5ba055f
--- /dev/null
+++ b/app/cmd/app/app_darwin.h
@@ -0,0 +1,43 @@
+#import
+#import
+
+@interface AppDelegate : NSObject
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
+@end
+
+enum AppMove
+{
+ CannotMove,
+ UserDeclinedMove,
+ MoveCompleted,
+ AlreadyMoved,
+ LoginSession,
+ PermissionDenied,
+ MoveError,
+};
+
+void run(bool firstTimeRun, bool startHidden);
+void killOtherInstances();
+enum AppMove askToMoveToApplications();
+int createSymlinkWithAuthorization();
+int installSymlink(const char *cliPath);
+extern void Restart();
+// extern void Quit();
+void StartUI(const char *path);
+void ShowUI();
+void StopUI();
+void StartUpdate();
+void darwinStartHiddenTasks();
+void launchApp(const char *appPath);
+void updateAvailable();
+void quit();
+void uiRequest(char *path);
+void registerSelfAsLoginItem(bool firstTimeRun);
+void unregisterSelfFromLoginItem();
+void setWindowDelegate(void *window);
+void showWindow(uintptr_t wndPtr);
+void hideWindow(uintptr_t wndPtr);
+void styleWindow(uintptr_t wndPtr);
+void drag(uintptr_t wndPtr);
+void doubleClick(uintptr_t wndPtr);
+void handleConnectURL();
diff --git a/app/cmd/app/app_darwin.m b/app/cmd/app/app_darwin.m
new file mode 100644
index 000000000..d5095ab25
--- /dev/null
+++ b/app/cmd/app/app_darwin.m
@@ -0,0 +1,1112 @@
+#import "app_darwin.h"
+#import "menu.h"
+#import "../../updater/updater_darwin.h"
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+extern NSString *SystemWidePath;
+
+@interface AppDelegate ()
+@property(strong, nonatomic) NSStatusItem *statusItem;
+@property(assign, nonatomic) BOOL updateAvailable;
+@end
+
+@implementation AppDelegate
+
+bool firstTimeRun,startHidden; // Set in run before initialization
+
+- (void)application:(NSApplication *)application openURLs:(NSArray *)urls {
+ for (NSURL *url in urls) {
+ if ([url.scheme isEqualToString:@"ollama"]) {
+ NSString *path = url.path;
+
+ if (path && ([path isEqualToString:@"/connect"] || [url.host isEqualToString:@"connect"])) {
+ // Special case: handle connect by opening browser instead of app
+ handleConnectURL();
+ } else {
+ // Set app to be active and visible
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+ [NSApp activateIgnoringOtherApps:YES];
+ }
+
+ break;
+ }
+ }
+}
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
+ // if we're in development mode, set the app icon
+ NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
+ if (![bundlePath hasSuffix:@".app"]) {
+ NSString *cwdPath =
+ [[NSFileManager defaultManager] currentDirectoryPath];
+ NSString *iconPath = [cwdPath
+ stringByAppendingPathComponent:
+ [NSString
+ stringWithFormat:
+ @"darwin/Ollama.app/Contents/Resources/icon.icns"]];
+ NSImage *customIcon = [[NSImage alloc] initWithContentsOfFile:iconPath];
+ [NSApp setApplicationIconImage:customIcon];
+ }
+
+ // Create status item and menu
+ NSMenu *menu = [[NSMenu alloc] init];
+ NSMenuItem *openMenuItem =
+ [[NSMenuItem alloc] initWithTitle:@"Open Ollama"
+ action:@selector(openUI)
+ keyEquivalent:@""];
+ [openMenuItem setTarget:self];
+ [menu addItem:openMenuItem];
+
+ [menu addItemWithTitle:@"Settings..."
+ action:@selector(settingsUI)
+ keyEquivalent:@","];
+ [menu addItem:[NSMenuItem separatorItem]];
+
+ NSMenuItem *updateAvailable =
+ [[NSMenuItem alloc] initWithTitle:@"An update is available"
+ action:nil
+ keyEquivalent:@""];
+ [updateAvailable setEnabled:NO];
+ [updateAvailable setHidden:YES];
+ [menu addItem:updateAvailable];
+
+ NSMenuItem *restartMenuItem =
+ [[NSMenuItem alloc] initWithTitle:@"Restart to update"
+ action:@selector(startUpdate)
+ keyEquivalent:@""];
+ [restartMenuItem setTarget:self];
+ [restartMenuItem setHidden:YES];
+ [menu addItem:restartMenuItem];
+
+ [menu addItem:[NSMenuItem separatorItem]];
+
+ [menu addItemWithTitle:@"Quit Ollama"
+ action:@selector(quit)
+ keyEquivalent:@"q"];
+
+ self.statusItem = [[NSStatusBar systemStatusBar]
+ statusItemWithLength:NSVariableStatusItemLength];
+ [self.statusItem addObserver:self
+ forKeyPath:@"button.effectiveAppearance"
+ options:NSKeyValueObservingOptionNew |
+ NSKeyValueObservingOptionInitial
+ context:nil];
+
+ self.statusItem.menu = menu;
+ [self showIcon];
+
+ // Application menu
+ NSString *appName = @"Ollama";
+
+ NSMenu *mainMenu = [[NSMenu alloc] init];
+ NSMenuItem *appMenuItem = [[NSMenuItem alloc] initWithTitle:appName
+ action:nil
+ keyEquivalent:@""];
+ NSMenu *appMenu = [[NSMenu alloc] initWithTitle:appName];
+ [appMenuItem setSubmenu:appMenu];
+ [mainMenu addItem:appMenuItem];
+
+ [appMenu addItemWithTitle:[NSString stringWithFormat:@"About %@", appName]
+ action:@selector(aboutOllama)
+ keyEquivalent:@""];
+ [appMenu addItem:[NSMenuItem separatorItem]];
+ [appMenu addItemWithTitle:@"Settings..."
+ action:@selector(settingsUI)
+ keyEquivalent:@","];
+ [appMenu addItem:[NSMenuItem separatorItem]];
+ [appMenu addItemWithTitle:[NSString stringWithFormat:@"Hide %@", appName]
+ action:@selector(hide:)
+ keyEquivalent:@"h"];
+
+ NSMenuItem *hideOthers = [[NSMenuItem alloc] initWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
+ hideOthers.keyEquivalentModifierMask = NSEventModifierFlagOption | NSEventModifierFlagCommand;
+ [appMenu addItem:hideOthers];
+ [appMenu addItemWithTitle:@"Show All"
+ action:@selector(unhideAllApplications:)
+ keyEquivalent:@""];
+ [appMenu addItem:[NSMenuItem separatorItem]];
+ [appMenu addItemWithTitle:[NSString stringWithFormat:@"Quit %@", appName]
+ action:@selector(hide)
+ keyEquivalent:@"q"];
+
+ NSMenuItem *fileMenuItem = [[NSMenuItem alloc] init];
+ NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
+
+ NSMenuItem *newChatItem = [[NSMenuItem alloc] initWithTitle:@"New Chat"
+ action:@selector(newChat)
+ keyEquivalent:@"n"];
+ [newChatItem setTarget:self];
+ [fileMenu addItem:newChatItem];
+ [fileMenu addItem:[NSMenuItem separatorItem]];
+
+ NSMenuItem *closeItem = [[NSMenuItem alloc] initWithTitle:@"Close Window" action:@selector(hide:) keyEquivalent:@"w"];
+ [fileMenu addItem:closeItem];
+ [fileMenuItem setSubmenu:fileMenu];
+ [mainMenu addItem:fileMenuItem];
+
+ NSMenuItem *editMenuItem = [[NSMenuItem alloc] init];
+ NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"];
+
+ [editMenu addItemWithTitle:@"Undo"
+ action:@selector(undo:)
+ keyEquivalent:@"z"];
+ [editMenu addItemWithTitle:@"Redo"
+ action:@selector(redo:)
+ keyEquivalent:@"Z"];
+ [editMenu addItem:[NSMenuItem separatorItem]];
+ [editMenu addItemWithTitle:@"Cut"
+ action:@selector(cut:)
+ keyEquivalent:@"x"];
+ [editMenu addItemWithTitle:@"Copy"
+ action:@selector(copy:)
+ keyEquivalent:@"c"];
+ [editMenu addItemWithTitle:@"Paste"
+ action:@selector(paste:)
+ keyEquivalent:@"v"];
+ [editMenu addItemWithTitle:@"Select All"
+ action:@selector(selectAll:)
+ keyEquivalent:@"a"];
+
+ [editMenuItem setSubmenu:editMenu];
+ [mainMenu addItem:editMenuItem];
+
+ NSMenuItem *windowMenuItem = [[NSMenuItem alloc] init];
+ NSMenu *windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
+ [windowMenu addItemWithTitle:@"Minimize"
+ action:@selector(performMiniaturize:)
+ keyEquivalent:@"m"];
+ [windowMenu addItemWithTitle:@"Zoom"
+ action:@selector(performZoom:)
+ keyEquivalent:@""];
+ [windowMenu addItem:[NSMenuItem separatorItem]];
+ [windowMenu addItemWithTitle:@"Bring All to Front"
+ action:@selector(arrangeInFront:)
+ keyEquivalent:@""];
+ [windowMenuItem setSubmenu:windowMenu];
+ [mainMenu addItem:windowMenuItem];
+ [NSApp setWindowsMenu:windowMenu];
+
+ NSMenuItem *helpMenuItem = [[NSMenuItem alloc] init];
+ NSMenu *helpMenu = [[NSMenu alloc] initWithTitle:@"Help"];
+ [helpMenu addItemWithTitle:[NSString stringWithFormat:@"%@ Help", appName]
+ action:@selector(openHelp:)
+ keyEquivalent:@"?"];
+ [helpMenuItem setSubmenu:helpMenu];
+ [mainMenu addItem:helpMenuItem];
+ [NSApp setHelpMenu:helpMenu];
+ [NSApp setMainMenu:mainMenu];
+
+ BOOL hidden = [NSApp isHidden];
+ dispatch_async(dispatch_get_main_queue(), ^{
+ if (hidden || startHidden) {
+ darwinStartHiddenTasks();
+ } else {
+ if (!startHidden) {
+ StartUI("/");
+ }
+ }
+ });
+}
+
+- (void)applicationDidBecomeActive:(NSNotification *)notification {
+ NSRunningApplication *currentApp = [NSRunningApplication currentApplication];
+ if (currentApp.activationPolicy == NSApplicationActivationPolicyAccessory) {
+ for (NSWindow *window in [NSApp windows]) {
+ if ([window isVisible]) {
+ // Switch to regular activation policy since we have a visible window
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+ return;
+ }
+ }
+ [NSApp hide:nil];
+ return;
+ }
+}
+
+- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)hasVisibleWindows {
+ [self openUI];
+ return YES;
+}
+
+- (void)showUpdateAvailable {
+ self.updateAvailable = YES;
+ [self.statusItem.menu.itemArray[3] setHidden:NO];
+ [self.statusItem.menu.itemArray[4] setHidden:NO];
+ [self showIcon];
+}
+
+- (void)aboutOllama {
+ [[NSApplication sharedApplication] orderFrontStandardAboutPanel:nil];
+ [NSApp activateIgnoringOtherApps:YES];
+}
+
+- (void)openHelp:(id)sender {
+ NSURL *url = [NSURL URLWithString:@"https://docs.ollama.com/"];
+ [[NSWorkspace sharedWorkspace] openURL:url];
+}
+
+- (void)settingsUI {
+ [self uiRequest:@"/settings"];
+}
+
+- (void)openUI {
+ ShowUI();
+}
+
+- (void)newChat {
+ [self uiRequest:@"/c/new"];
+}
+
+- (void)uiRequest:(NSString *)path {
+ if (path == nil) {
+ appLogInfo(@"app UI request for URL is missing");
+ }
+
+ appLogInfo([NSString
+ stringWithFormat:@"XXX got app UI request for URL: %@", path]);
+ StartUI([path UTF8String]);
+}
+
+- (void)startUpdate {
+ StartUpdate();
+ [NSApp activateIgnoringOtherApps:YES];
+}
+
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
+ [NSApp hide:nil];
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
+ return NSTerminateCancel;
+}
+
+- (IBAction)terminate:(id)sender {
+ [NSApp hide:nil];
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
+}
+
+- (BOOL)windowShouldClose:(id)sender {
+ [NSApp hide:nil];
+ return NO;
+}
+
+- (void)showIcon {
+ NSAppearance *appearance = self.statusItem.button.effectiveAppearance;
+ NSString *appearanceName = (NSString *)(appearance.name);
+ NSString *iconName = @"ollama";
+ if (self.updateAvailable) {
+ iconName = [iconName stringByAppendingString:@"Update"];
+ }
+ if ([appearanceName containsString:@"Dark"]) {
+ iconName = [iconName stringByAppendingString:@"Dark"];
+ }
+
+ NSImage *statusImage;
+ NSBundle *bundle = [NSBundle mainBundle];
+ if (![bundle.bundlePath hasSuffix:@".app"]) {
+ NSString *cwdPath =
+ [[NSFileManager defaultManager] currentDirectoryPath];
+ NSString *bundlePath =
+ [cwdPath stringByAppendingPathComponent:
+ [NSString stringWithFormat:@"darwin/Ollama.app"]];
+ bundle = [NSBundle bundleWithPath:bundlePath];
+ }
+
+ statusImage = [bundle imageForResource:iconName];
+ [statusImage setTemplate:YES];
+ self.statusItem.button.image = statusImage;
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath
+ ofObject:(id)object
+ change:(NSDictionary *)change
+ context:(void *)context {
+ [self showIcon];
+}
+
+- (void)hide {
+ [NSApp hide:nil];
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
+}
+
+- (void)quit {
+ [NSApp stop:self];
+ [NSApp postEvent:[NSEvent otherEventWithType:NSEventTypeApplicationDefined
+ location:NSZeroPoint
+ modifierFlags:0
+ timestamp:0
+ windowNumber:0
+ context:nil
+ subtype:0
+ data1:0
+ data2:0]
+ atStart:YES];
+}
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+- (void)registerSelfAsLoginItem:(BOOL)firstTimeRun {
+ appLogInfo(@"using v13+ SMAppService for login registration");
+ // Maps to the file Ollama.app/Contents/Library/LaunchAgents/com.ollama.ollama.plist
+ SMAppService* service = [SMAppService agentServiceWithPlistName:@"com.ollama.ollama.plist"];
+ if (!service) {
+ appLogInfo(@"SMAppService failed to find service for com.ollama.ollama.plist");
+ return;
+ }
+ SMAppServiceStatus status = [service status];
+ switch (status) {
+ case SMAppServiceStatusNotRegistered:
+ appLogInfo(@"service not registered, registering now");
+ break;
+ case SMAppServiceStatusEnabled:
+ appLogInfo(@"service is already enabled, no need to register again");
+ return;
+ case SMAppServiceStatusRequiresApproval:
+ // User has disabled our login behavior explicitly so leave it as is
+ appLogInfo(@"service is currently disabled and will not start at login");
+ return;
+ case SMAppServiceStatusNotFound:
+ appLogInfo(@"service not found, registering now");
+ break;
+ default:
+ appLogInfo([NSString stringWithFormat:@"unexpected status: %ld", (long)status]);
+ break;
+ }
+ NSError *error = nil;
+ if (![service registerAndReturnError:&error]) {
+ appLogInfo([NSString stringWithFormat:@"Failed to register %@ as a login item: %@", NSBundle.mainBundle.bundleURL, error]);
+ return;
+ }
+ return;
+}
+
+/// Remove ollama from the deprecated Login Items list as we now use LaunchAgents
+- (void)unregisterSelfFromLoginItem {
+ NSURL *bundleURL = NSBundle.mainBundle.bundleURL;
+ NSString *bundlePrefix = [SystemWidePath stringByDeletingPathExtension];
+
+ LSSharedFileListRef loginItems =
+ LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);
+ if (!loginItems) {
+ return;
+ }
+
+ UInt32 seed;
+ CFArrayRef currentItems = LSSharedFileListCopySnapshot(loginItems, &seed);
+
+ for (id item in (__bridge NSArray *)currentItems) {
+ CFURLRef itemURL = NULL;
+ if (LSSharedFileListItemResolve((LSSharedFileListItemRef)item, 0,
+ &itemURL, NULL) == noErr) {
+ CFStringRef loginPath = CFURLCopyFileSystemPath(itemURL, kCFURLPOSIXPathStyle);
+ // Compare the prefix to match against "keep existing" flow, e.g. // "/Applications/Ollama.app" vs "/Applications/Ollama 2.app"
+ if (loginPath && [(NSString *)loginPath hasPrefix:bundlePrefix]) {
+ appLogInfo([NSString stringWithFormat:@"removing login item %@", loginPath]);
+ LSSharedFileListItemRemove(loginItems,
+ (LSSharedFileListItemRef)item);
+ }
+ if (itemURL) {
+ CFRelease(itemURL);
+ }
+ } else if (!itemURL) {
+ // If the user has removed the App that has a current login item, we can't use
+ // LSSharedFileListItemResolve to get the file path, since it doesn't "resolve"
+ CFStringRef displayName = LSSharedFileListItemCopyDisplayName((LSSharedFileListItemRef)item);
+ if (displayName) {
+ NSString *name = (__bridge NSString *)displayName;
+ if ([name hasPrefix:@"Ollama"]) {
+ LSSharedFileListItemRemove(loginItems, (LSSharedFileListItemRef)item);
+ appLogInfo([NSString stringWithFormat:@"removing dangling login item %@", displayName]);
+ }
+ CFRelease(displayName);
+ }
+ }
+ }
+ if (currentItems) {
+ CFRelease(currentItems);
+ }
+ CFRelease(loginItems);
+}
+#pragma clang diagnostic pop
+
+- (void)windowWillEnterFullScreen:(NSNotification *)notification {
+ NSWindow *w = notification.object;
+ if (w.toolbar != nil) {
+ [w.toolbar setVisible:NO]; // hide the (empty) toolbar
+ }
+}
+
+- (void)windowDidExitFullScreen:(NSNotification *)notification {
+ NSWindow *w = notification.object;
+ if (w.toolbar != nil) {
+ [w.toolbar setVisible:YES]; // show it again
+ }
+}
+
+- (void) webView:(WKWebView *)webView
+decidePolicyForNavigationAction:(WKNavigationAction *)action
+ decisionHandler:(void (^)(WKNavigationActionPolicy))handler
+{
+ NSURL *url = action.request.URL;
+ if (action.navigationType == WKNavigationTypeLinkActivated) {
+ NSString *host = [url.host lowercaseString];
+ if ([host isEqualToString:@"localhost"] ||
+ [host isEqualToString:@"127.0.0.1"]) {
+ handler(WKNavigationActionPolicyCancel);
+ NSString *path = url.path;
+ if (path.length == 0) {
+ path = @"/";
+ }
+ [self uiRequest:path];
+ return;
+ }
+
+ [[NSWorkspace sharedWorkspace] openURL:url];
+ handler(WKNavigationActionPolicyCancel);
+ return;
+ }
+ handler(WKNavigationActionPolicyAllow);
+}
+
+- (nullable WKWebView *)webView:(WKWebView *)webView
+ createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration
+ forNavigationAction:(WKNavigationAction *)action
+ windowFeatures:(WKWindowFeatures *)features
+{
+ // "Open Link in New Window" (or target="_blank") ends up here.
+ NSURL *url = action.request.URL;
+ if (url) {
+ NSString *host = [url.host lowercaseString];
+ if ([host isEqualToString:@"localhost"] ||
+ [host isEqualToString:@"127.0.0.1"]) {
+ return nil;
+ }
+ [[NSWorkspace sharedWorkspace] openURL:url];
+ }
+ return nil;
+}
+
+// TODO (jmorganca): the confirm button is always "Confirm"
+// it should be customizable in the future
+- (void)webView:(WKWebView *)webView
+ runJavaScriptConfirmPanelWithMessage:(NSString *)message
+ initiatedByFrame:(WKFrameInfo *)frame
+ completionHandler:(void (^)(BOOL))completionHandler {
+
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText:message];
+ [alert addButtonWithTitle:@"Confirm"];
+ [alert addButtonWithTitle:@"Cancel"];
+
+ completionHandler([alert runModal] == NSAlertFirstButtonReturn);
+}
+
+// HACK (jmorganca): remove the "Copy Link with Highlight" item from the context menu by
+// swizzling the WKWebView's willOpenMenu:withEvent: method. In the future we should probably
+// subclass the WKWebView and override the context menu items, but this is a quick fix for now.
++ (void)load {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ [self swizzleWKWebViewContextMenu];
+ });
+}
+
++ (void)swizzleWKWebViewContextMenu {
+ Class class = [WKWebView class];
+
+ SEL originalSelector = @selector(willOpenMenu:withEvent:);
+ SEL swizzledSelector = @selector(ollama_willOpenMenu:withEvent:);
+
+ Method originalMethod = class_getInstanceMethod(class, originalSelector);
+ Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
+ BOOL didAddMethod = class_addMethod(class, originalSelector,
+ method_getImplementation(swizzledMethod),
+ method_getTypeEncoding(swizzledMethod));
+
+ if (didAddMethod) {
+ class_replaceMethod(class,
+ swizzledSelector,
+ method_getImplementation(originalMethod),
+ method_getTypeEncoding(originalMethod));
+ } else {
+ method_exchangeImplementations(originalMethod, swizzledMethod);
+ }
+}
+
+@end
+
+@implementation WKWebView (OllamaContextMenu)
+- (void)ollama_willOpenMenu:(NSMenu *)menu withEvent:(NSEvent *)event {
+ [self ollama_willOpenMenu:menu withEvent:event];
+ NSMutableArray *itemsToRemove = [NSMutableArray array];
+ for (NSMenuItem *item in menu.itemArray) {
+ if ([item.title containsString:@"Copy Link with Highlight"] ||
+ [item.title containsString:@"Open Link in New Window"] ||
+ [item.title containsString:@"Services"] ||
+ [item.title containsString:@"Download Linked File"] ||
+ [item.title containsString:@"Back"] ||
+ [item.title containsString:@"Reload"] ||
+ [item.title containsString:@"Refresh"] ||
+ [item.title containsString:@"Open Link"] ||
+ [item.title containsString:@"Copy Link"] ||
+ [item.title containsString:@"Share"]) {
+ [itemsToRemove addObject:item];
+ continue;
+ }
+ }
+
+ for (NSMenuItem *item in itemsToRemove) {
+ [menu removeItem:item];
+ }
+
+ int customItemCount = menu_get_item_count();
+ if (customItemCount > 0) {
+ menuItem* customItems = (menuItem*)menu_get_items();
+ if (customItems) {
+ NSInteger insertIndex = 0;
+
+ for (int i = 0; i < customItemCount; i++) {
+ if (customItems[i].separator) {
+ [menu insertItem:[NSMenuItem separatorItem] atIndex:insertIndex++];
+ } else if (customItems[i].label) {
+ NSString *label = [NSString stringWithUTF8String:customItems[i].label];
+ NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:label
+ action:@selector(handleCustomMenuItem:)
+ keyEquivalent:@""];
+ [item setTarget:self];
+ [item setRepresentedObject:label];
+ [item setEnabled:customItems[i].enabled];
+ [menu insertItem:item atIndex:insertIndex++];
+ }
+ }
+
+ // Add separator after custom items if there are remaining items
+ if (insertIndex > 0 && menu.itemArray.count > insertIndex) {
+ [menu insertItem:[NSMenuItem separatorItem] atIndex:insertIndex];
+ }
+ }
+ }
+}
+
+- (void)handleCustomMenuItem:(NSMenuItem *)sender {
+ NSString *label = [sender representedObject];
+ if (label) {
+ menu_handle_selection((char*)[label UTF8String]);
+ }
+}
+
+@end
+
+AppDelegate *appDelegate;
+void run(bool ftr, bool sh) {
+ [NSApplication sharedApplication];
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
+ appDelegate = [[AppDelegate alloc] init];
+ [NSApp setDelegate:appDelegate];
+ firstTimeRun = ftr;
+ startHidden = sh;
+ [NSApp run];
+ StopUI();
+}
+
+// killOtherInstances kills all other instances of the app currently
+// running. This way we can ensure that only the most recently started
+// instance of Ollama is running
+void killOtherInstances() {
+ pid_t myPid = getpid();
+ NSArray *apps = [[NSWorkspace sharedWorkspace] runningApplications];
+
+ for (NSRunningApplication *app in apps) {
+ NSString *bundleId = app.bundleIdentifier;
+
+ // Skip apps without bundle identifiers
+ if (!bundleId || [bundleId length] == 0) {
+ continue;
+ }
+
+ if ([bundleId isEqualToString:[[NSBundle mainBundle] bundleIdentifier]] ||
+ [bundleId isEqualToString:@"ai.ollama.ollama"] ||
+ [bundleId isEqualToString:@"com.electron.ollama"]) {
+
+ pid_t pid = app.processIdentifier;
+ if (pid != myPid && pid > 0) {
+ appLogInfo([NSString stringWithFormat:@"terminating other ollama instance %d", pid]);
+ kill(pid, SIGTERM);
+ } else if (pid == -1) {
+ appLogInfo([NSString stringWithFormat:@"skipping app with invalid pid: %@", bundleId]);
+ }
+ }
+ }
+}
+
+// Move the source bundle to the system-wide applications location
+// without prompting for additional authorization
+bool moveToApplications(const char *src) {
+ NSString *bundlePath = @(src);
+ appLogInfo([NSString
+ stringWithFormat:
+ @"trying move to /Applications without extra authorization"]);
+ NSFileManager *fileManager = [NSFileManager defaultManager];
+
+ // Check if the newPath already exists
+ if ([fileManager fileExistsAtPath:SystemWidePath]) {
+ appLogInfo([NSString stringWithFormat:@"existing install exists"]);
+ NSError *removeError = nil;
+ [fileManager removeItemAtPath:SystemWidePath error:&removeError];
+ if (removeError) {
+ appLogInfo([NSString
+ stringWithFormat:@"Error removing without authorization %@: %@",
+ SystemWidePath, removeError]);
+ return false;
+ }
+ }
+
+ // Move can be problematic, so use copy
+ NSError *err = nil;
+ [fileManager copyItemAtPath:bundlePath toPath:SystemWidePath error:&err];
+ if (err) {
+ appLogInfo(
+ [NSString stringWithFormat:
+ @"unable to copy without authorization %@ to %@: %@",
+ bundlePath, SystemWidePath, err]);
+ return false;
+ }
+
+ // Best effort attempt to remove old content
+ if ([fileManager isDeletableFileAtPath:bundlePath]) {
+ err = nil;
+ [fileManager trashItemAtURL:[NSURL fileURLWithPath:bundlePath]
+ resultingItemURL:nil
+ error:&err];
+ if (err) {
+ appLogInfo(
+ [NSString stringWithFormat:@"unable to clean up now stale "
+ @"bundle via file manager %@: %@",
+ bundlePath, err]);
+ }
+ } else {
+ appLogInfo([NSString stringWithFormat:@"unable to clean up now stale "
+ @"bundle via file manager %@",
+ bundlePath]);
+ }
+
+ appLogInfo([NSString stringWithFormat:@"app relocated %@ to %@", bundlePath,
+ SystemWidePath]);
+ return true;
+}
+
+AuthorizationRef getSymlinkAuthorization() {
+ return getAuthorization(@"Ollama is trying to install its command line "
+ @"interface (CLI) tool.",
+ @"symlink");
+}
+
+// Prompt the user for authorization and move to the system wide
+// location
+//
+// Note: this flow must not be executed from the old app instance
+// otherwise the malware scanner will trigger on subsequent
+// AuthorizationExecuteWithPrivileges calls as it can not
+// verify the calling app's signature on the filesystem
+// once the files are removed
+bool moveToApplicationsWithAuthorization(const char *src) {
+ int pid, status;
+ AuthorizationRef authRef = getAppInstallAuthorization();
+ if (authRef == NULL) {
+ return NO;
+ }
+
+ // Remove existing /Applications/Ollama.app (if any)
+ // - We do this via /bin/rm with elevated privileges
+ //
+ const char *rmTool = "/bin/rm";
+ const char *rmArgs[] = {"-rf", [SystemWidePath UTF8String], NULL};
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ OSStatus err = AuthorizationExecuteWithPrivileges(
+ authRef, rmTool, kAuthorizationFlagDefaults, (char *const *)rmArgs,
+ NULL);
+#pragma clang diagnostic pop
+
+ if (err != errAuthorizationSuccess) {
+ appLogInfo([NSString
+ stringWithFormat:@"Failed to remove existing %@. err = %d",
+ SystemWidePath, err]);
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return NO;
+ }
+
+ // wait for the command to finish
+ pid = wait(&status);
+ if (pid == -1 || !WIFEXITED(status)) {
+ appLogInfo([NSString stringWithFormat:@"rm of %@ failed pid=%d exit=%d",
+ SystemWidePath, pid,
+ WEXITSTATUS(status)]);
+ }
+ appLogDebug([NSString
+ stringWithFormat:@"finished cleaning up prior %@", SystemWidePath]);
+
+ // Copy bundle to /Applications
+ // We can't use mv as we may be denied if we're sandboxed
+ const char *cpTool = "/bin/cp";
+ const char *cpArgs[] = {"-pR", src, [SystemWidePath UTF8String], NULL};
+ appLogDebug([NSString stringWithFormat:@"running authorized cp -pR %s %@",
+ src, SystemWidePath]);
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ err = AuthorizationExecuteWithPrivileges(authRef, cpTool,
+ kAuthorizationFlagDefaults,
+ (char *const *)cpArgs, NULL);
+#pragma clang diagnostic pop
+
+ if (err != errAuthorizationSuccess) {
+ appLogInfo(
+ [NSString stringWithFormat:@"Failed to copy %s -> %@. err = %d",
+ src, SystemWidePath, err]);
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return NO;
+ }
+
+ // Wait for the command to finish
+ pid = wait(&status);
+ appLogInfo([NSString stringWithFormat:@"cp -pR %s %@ - pid=%d exit=%d", src,
+ SystemWidePath, pid,
+ WEXITSTATUS(status)]);
+
+ if (pid == -1 || !WIFEXITED(status) || WEXITSTATUS(status)) {
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return NO;
+ }
+
+ // Copy worked, now best effort try to clean up the source bundle
+ // Try file manager, then authorized rm -rf
+ NSFileManager *fileManager = [NSFileManager defaultManager];
+ NSString *bundlePath = @(src);
+ NSError *removeError = nil;
+ err = [fileManager trashItemAtURL:[NSURL fileURLWithPath:bundlePath]
+ resultingItemURL:nil
+ error:&removeError];
+ if (removeError) {
+ appLogInfo(
+ [NSString stringWithFormat:@"unable to clean up now stale "
+ @"bundle via NSFileManager %@: %@",
+ bundlePath, removeError]);
+ const char *rm2Args[] = {"-rf", src, NULL};
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ err = AuthorizationExecuteWithPrivileges(authRef, rmTool,
+ kAuthorizationFlagDefaults,
+ (char *const *)rm2Args, NULL);
+#pragma clang diagnostic pop
+ if (err != errAuthorizationSuccess) {
+ appLogInfo([NSString
+ stringWithFormat:@"Failed to remove existing %s. err = %d", src,
+ err]);
+ } else {
+ // wait for the command to finish
+ pid = wait(&status);
+ appLogInfo([NSString stringWithFormat:@"rm of %s pid=%d exit=%d",
+ src, pid,
+ WEXITSTATUS(status)]);
+ if (pid == -1 || !WIFEXITED(status) || WEXITSTATUS(status)) {
+ appLogInfo([NSString
+ stringWithFormat:@"rm of %s failed pid=%d exit=%d", src,
+ pid, WEXITSTATUS(status)]);
+ } else {
+ appLogDebug([NSString
+ stringWithFormat:@"finished cleaning up %s", src]);
+ }
+ }
+ }
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return YES;
+}
+
+enum AppMove askToMoveToApplications() {
+ NSAppleEventDescriptor *evt =
+ [[NSAppleEventManager sharedAppleEventManager] currentAppleEvent];
+ if (!evt || [evt eventID] != kAEOpenApplication) {
+ // This scenario triggers if we were launched from a double click,
+ // or the CLI spawns the app via open -a Ollama.app
+ appLogDebug([NSString
+ stringWithFormat:@"launched from double click or open -a"]);
+ }
+ NSAppleEventDescriptor *prop =
+ [evt paramDescriptorForKeyword:keyAEPropData];
+ if (prop && [prop enumCodeValue] == keyAELaunchedAsLogInItem) {
+ // For a login session launch, we don't want to prompt for moving if
+ // the user opted out
+ appLogDebug([NSString stringWithFormat:@"launched from login"]);
+ return LoginSession;
+ }
+ pid_t pid = getpid();
+ NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
+ appLogInfo(@"asking to move to system wide location");
+
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText:@"Move to Applications?"];
+ [alert setInformativeText:
+ @"Ollama works best when run from the Applications directory."];
+ [alert addButtonWithTitle:@"Move to Applications"];
+ [alert addButtonWithTitle:@"Don't move"];
+
+ [NSApp activateIgnoringOtherApps:YES];
+
+ if ([alert runModal] != NSAlertFirstButtonReturn) {
+ appLogInfo([NSString
+ stringWithFormat:@"user rejected moving to /Applications"]);
+ return UserDeclinedMove;
+ }
+
+ // move to applications
+ if (!moveToApplications([bundlePath UTF8String])) {
+ if (!moveToApplicationsWithAuthorization([bundlePath UTF8String])) {
+ appLogInfo([NSString
+ stringWithFormat:@"unable to move with authorization"]);
+ return PermissionDenied;
+ }
+ }
+
+ appLogInfo([NSString
+ stringWithFormat:@"Launching %@ from PID=%d", SystemWidePath, pid]);
+ NSError *error = nil;
+ NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ [workspace launchApplicationAtURL:[NSURL fileURLWithPath:SystemWidePath]
+ options:NSWorkspaceLaunchNewInstance |
+ NSWorkspaceLaunchDefault
+ configuration:@{}
+ error:&error];
+ return MoveCompleted;
+}
+
+void launchApp(const char *appPath) {
+ pid_t pid = getpid();
+ appLogInfo([NSString
+ stringWithFormat:@"Launching %@ from PID=%d", @(appPath), pid]);
+ NSError *error = nil;
+ NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ [workspace launchApplicationAtURL:[NSURL fileURLWithPath:@(appPath)]
+ options:NSWorkspaceLaunchNewInstance |
+ NSWorkspaceLaunchDefault
+ configuration:@{}
+ error:&error];
+}
+
+int installSymlink(const char *cliPath) {
+ NSString *linkPath = @"/usr/local/bin/ollama";
+ NSString *dirPath = @"/usr/local/bin";
+ NSError *error = nil;
+
+ NSFileManager *fileManager = [NSFileManager defaultManager];
+ NSString *symlinkPath =
+ [fileManager destinationOfSymbolicLinkAtPath:linkPath error:&error];
+ NSString *resPath = [NSString stringWithUTF8String:cliPath];
+
+ // if the symlink already exists and points to the right place, don't
+ // prompt
+ if ([symlinkPath isEqualToString:resPath]) {
+ appLogDebug(
+ @"symbolic link already exists and points to the right place");
+ return 0;
+ }
+
+ // Get authorization once for both operations
+ AuthorizationRef authRef = getSymlinkAuthorization();
+ if (authRef == NULL) {
+ return NO;
+ }
+
+ // Check if /usr/local/bin directory exists, create it if it doesn't
+ BOOL isDirectory;
+ if (![fileManager fileExistsAtPath:dirPath isDirectory:&isDirectory] || !isDirectory) {
+ appLogInfo(@"/usr/local/bin directory does not exist, creating it");
+
+ const char *mkdirTool = "/bin/mkdir";
+ const char *mkdirArgs[] = {"-p", [dirPath UTF8String], NULL};
+
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ OSStatus err = AuthorizationExecuteWithPrivileges(
+ authRef, mkdirTool, kAuthorizationFlagDefaults, (char *const *)mkdirArgs,
+ NULL);
+ if (err != errAuthorizationSuccess) {
+ appLogInfo(@"Failed to create /usr/local/bin directory");
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return -1;
+ }
+
+ // Wait for mkdir to complete
+ int status;
+ wait(&status);
+ }
+
+ // Create the symlink using the same authorization
+ const char *toolPath = "/bin/ln";
+ const char *args[] = {"-s", "-F", [resPath UTF8String],
+ "/usr/local/bin/ollama", NULL};
+ FILE *pipe = NULL;
+
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ OSStatus err = AuthorizationExecuteWithPrivileges(
+ authRef, toolPath, kAuthorizationFlagDefaults, (char *const *)args,
+ &pipe);
+ if (err != errAuthorizationSuccess) {
+ appLogInfo(@"Failed to create symlink");
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return -1;
+ }
+
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return 0;
+}
+
+void updateAvailable() {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [appDelegate showUpdateAvailable];
+ });
+}
+
+void quit() {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [appDelegate quit];
+ });
+}
+
+void uiRequest(char *path) {
+ NSString *p = [NSString stringWithFormat:@"%s", path];
+ appLogInfo([NSString stringWithFormat:@"XXX UI request for URL: %@", p]);
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [appDelegate uiRequest:p];
+ });
+}
+
+void registerSelfAsLoginItem(bool firstTimeRun) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [appDelegate registerSelfAsLoginItem:firstTimeRun];
+ });
+}
+
+void unregisterSelfFromLoginItem() {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [appDelegate unregisterSelfFromLoginItem];
+ });
+}
+
+static WKWebView *FindWKWebView(NSView *root) {
+ if ([root isKindOfClass:[WKWebView class]]) {
+ return (WKWebView *)root;
+ }
+ for (NSView *child in root.subviews) {
+ WKWebView *found = FindWKWebView(child);
+ if (found) {
+ return found;
+ }
+ }
+ return nil;
+}
+
+void setWindowDelegate(void* window) {
+ NSWindow *w = (__bridge NSWindow *)window;
+ [w setDelegate:appDelegate];
+ WKWebView *webView = FindWKWebView(w.contentView);
+ if (webView) {
+ webView.navigationDelegate = appDelegate;
+ webView.UIDelegate = appDelegate;
+ }
+}
+
+void hideWindow(uintptr_t wndPtr) {
+ NSWindow *w = (__bridge NSWindow *)wndPtr;
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
+ [w orderOut:nil];
+}
+
+void showWindow(uintptr_t wndPtr) {
+ NSWindow *w = (__bridge NSWindow *)wndPtr;
+
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [NSApp unhide:nil];
+ [NSApp activateIgnoringOtherApps:YES];
+ [w makeKeyAndOrderFront:nil];
+ });
+}
+
+void styleWindow(uintptr_t wndPtr) {
+ NSWindow *w = (__bridge NSWindow *)wndPtr;
+ if (!w) return;
+
+ // Define the desired style mask
+ NSWindowStyleMask desiredStyleMask = NSWindowStyleMaskTitled |
+ NSWindowStyleMaskClosable |
+ NSWindowStyleMaskMiniaturizable |
+ NSWindowStyleMaskResizable |
+ NSWindowStyleMaskFullSizeContentView |
+ NSWindowStyleMaskUnifiedTitleAndToolbar;
+
+ if (!(w.styleMask & NSWindowStyleMaskFullScreen)) {
+ w.styleMask = desiredStyleMask;
+ }
+
+ if (w.toolbar == nil) {
+ NSToolbar *tb = [[NSToolbar alloc] initWithIdentifier:@"OllamaToolbar"];
+ tb.displayMode = NSToolbarDisplayModeIconOnly;
+ tb.showsBaselineSeparator = NO;
+ w.toolbar = tb;
+ }
+
+ w.titleVisibility = NSWindowTitleHidden;
+ w.titlebarAppearsTransparent = YES;
+ w.toolbarStyle = NSWindowToolbarStyleUnified;
+ w.movableByWindowBackground = NO;
+ w.hasShadow = YES;
+
+ NSView *cv = w.contentView;
+ cv.wantsLayer = YES;
+ CALayer *L = cv.layer;
+ L.cornerRadius = 0.0;
+ L.masksToBounds = NO;
+ L.borderColor = nil;
+ L.borderWidth = 0.0;
+}
+
+void drag(uintptr_t wndPtr) {
+ NSWindow *w = (__bridge NSWindow *)wndPtr;
+ if (!w) return;
+ NSPoint mouseLoc = [NSEvent mouseLocation];
+ NSPoint locInWindow = [w convertPointFromScreen:mouseLoc];
+
+ NSEvent *e = [NSEvent mouseEventWithType:NSEventTypeLeftMouseDown
+ location:locInWindow
+ modifierFlags:0
+ timestamp:NSTimeIntervalSince1970
+ windowNumber:[w windowNumber]
+ context:nil
+ eventNumber:0
+ clickCount:1
+ pressure:1.0];
+ [w performWindowDragWithEvent:e];
+}
+
+void doubleClick(uintptr_t wndPtr) {
+ NSWindow *w = (__bridge NSWindow *)wndPtr;
+ if (!w) return;
+
+ // Respect the user's Dock preference
+ NSString *action =
+ [[NSUserDefaults standardUserDefaults] stringForKey:@"AppleActionOnDoubleClick"];
+
+ if ([action isEqualToString:@"Minimize"]) {
+ [w performMiniaturize:nil];
+ } else {
+ [w performZoom:nil];
+ }
+}
diff --git a/app/cmd/app/app_windows.go b/app/cmd/app/app_windows.go
new file mode 100644
index 000000000..9caeb178a
--- /dev/null
+++ b/app/cmd/app/app_windows.go
@@ -0,0 +1,436 @@
+//go:build windows || darwin
+
+package main
+
+import (
+ "errors"
+ "fmt"
+ "io"
+ "log"
+ "log/slog"
+ "os"
+ "os/exec"
+ "os/signal"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "syscall"
+ "unsafe"
+
+ "github.com/ollama/ollama/app/updater"
+ "github.com/ollama/ollama/app/version"
+ "github.com/ollama/ollama/app/wintray"
+ "golang.org/x/sys/windows"
+)
+
+var (
+ u32 = windows.NewLazySystemDLL("User32.dll")
+ pBringWindowToTop = u32.NewProc("BringWindowToTop")
+ pShowWindow = u32.NewProc("ShowWindow")
+ pSendMessage = u32.NewProc("SendMessageA")
+ pGetSystemMetrics = u32.NewProc("GetSystemMetrics")
+ pGetWindowRect = u32.NewProc("GetWindowRect")
+ pSetWindowPos = u32.NewProc("SetWindowPos")
+ pSetForegroundWindow = u32.NewProc("SetForegroundWindow")
+ pSetActiveWindow = u32.NewProc("SetActiveWindow")
+ pIsIconic = u32.NewProc("IsIconic")
+
+ appPath = filepath.Join(os.Getenv("LOCALAPPDATA"), "Programs", "Ollama")
+ appLogPath = filepath.Join(os.Getenv("LOCALAPPDATA"), "Ollama", "app.log")
+ startupShortcut = filepath.Join(os.Getenv("APPDATA"), "Microsoft", "Windows", "Start Menu", "Programs", "Startup", "Ollama.lnk")
+ ollamaPath string
+ DesktopAppName = "ollama app.exe"
+)
+
+func init() {
+ // With alternate install location use executable location
+ exe, err := os.Executable()
+ if err != nil {
+ slog.Warn("error discovering executable directory", "error", err)
+ } else {
+ appPath = filepath.Dir(exe)
+ }
+ ollamaPath = filepath.Join(appPath, "ollama.exe")
+
+ // Handle developer mode (go run ./cmd/app)
+ if _, err := os.Stat(ollamaPath); err != nil {
+ pwd, err := os.Getwd()
+ if err != nil {
+ slog.Warn("missing ollama.exe and failed to get pwd", "error", err)
+ return
+ }
+ distAppPath := filepath.Join(pwd, "dist", "windows-"+runtime.GOARCH)
+ distOllamaPath := filepath.Join(distAppPath, "ollama.exe")
+ if _, err := os.Stat(distOllamaPath); err == nil {
+ slog.Info("detected developer mode")
+ appPath = distAppPath
+ ollamaPath = distOllamaPath
+ }
+ }
+}
+
+func maybeMoveAndRestart() appMove {
+ return 0
+}
+
+// handleExistingInstance checks for existing instances and optionally focuses them
+func handleExistingInstance(startHidden bool) {
+ if wintray.CheckAndFocusExistingInstance(!startHidden) {
+ slog.Info("existing instance found, exiting")
+ os.Exit(0)
+ }
+}
+
+func installSymlink() {}
+
+type appCallbacks struct {
+ t wintray.TrayCallbacks
+ shutdown func()
+}
+
+var app = &appCallbacks{}
+
+func (ac *appCallbacks) UIRun(path string) {
+ wv.Run(path)
+}
+
+func (*appCallbacks) UIShow() {
+ if wv.webview != nil {
+ showWindow(wv.webview.Window())
+ } else {
+ wv.Run("/")
+ }
+}
+
+func (*appCallbacks) UITerminate() {
+ wv.Terminate()
+}
+
+func (*appCallbacks) UIRunning() bool {
+ return wv.IsRunning()
+}
+
+func (app *appCallbacks) Quit() {
+ app.t.Quit()
+ wv.Terminate()
+}
+
+// TODO - reconcile with above for consistency between mac/windows
+func quit() {
+ wv.Terminate()
+}
+
+func (app *appCallbacks) DoUpdate() {
+ // Safeguard in case we have requests in flight that need to drain...
+ slog.Info("Waiting for server to shutdown")
+
+ app.shutdown()
+
+ if err := updater.DoUpgrade(true); err != nil {
+ slog.Warn(fmt.Sprintf("upgrade attempt failed: %s", err))
+ }
+}
+
+// HandleURLScheme implements the URLSchemeHandler interface
+func (app *appCallbacks) HandleURLScheme(urlScheme string) {
+ handleURLSchemeRequest(urlScheme)
+}
+
+// handleURLSchemeRequest processes URL scheme requests from other instances
+func handleURLSchemeRequest(urlScheme string) {
+ isConnect, err := parseURLScheme(urlScheme)
+ if err != nil {
+ slog.Error("failed to parse URL scheme request", "url", urlScheme, "error", err)
+ return
+ }
+
+ if isConnect {
+ handleConnectURLScheme()
+ } else {
+ if wv.webview != nil {
+ showWindow(wv.webview.Window())
+ }
+ }
+}
+
+func UpdateAvailable(ver string) error {
+ return app.t.UpdateAvailable(ver)
+}
+
+func osRun(shutdown func(), hasCompletedFirstRun, startHidden bool) {
+ var err error
+ app.shutdown = shutdown
+ app.t, err = wintray.NewTray(app)
+ if err != nil {
+ log.Fatalf("Failed to start: %s", err)
+ }
+
+ signals := make(chan os.Signal, 1)
+ signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
+
+ // TODO - can this be generalized?
+ go func() {
+ <-signals
+ slog.Debug("shutting down due to signal")
+ app.t.Quit()
+ wv.Terminate()
+ }()
+
+ // On windows, we run the final tasks in the main thread
+ // before starting the tray event loop. These final tasks
+ // may trigger the UI, and must do that from the main thread.
+ if !startHidden {
+ // Determine if the process was started from a shortcut
+ // ~\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Ollama
+ const STARTF_TITLEISLINKNAME = 0x00000800
+ var info windows.StartupInfo
+ if err := windows.GetStartupInfo(&info); err != nil {
+ slog.Debug("unable to retrieve startup info", "error", err)
+ } else if info.Flags&STARTF_TITLEISLINKNAME == STARTF_TITLEISLINKNAME {
+ linkPath := windows.UTF16PtrToString(info.Title)
+ if strings.Contains(linkPath, "Startup") {
+ startHidden = true
+ }
+ }
+ }
+ if startHidden {
+ startHiddenTasks()
+ } else {
+ ptr := wv.Run("/")
+
+ // Set the window icon using the tray icon
+ if ptr != nil {
+ iconHandle := app.t.GetIconHandle()
+ if iconHandle != 0 {
+ hwnd := uintptr(ptr)
+ const ICON_SMALL = 0
+ const ICON_BIG = 1
+ const WM_SETICON = 0x0080
+
+ pSendMessage.Call(hwnd, uintptr(WM_SETICON), uintptr(ICON_SMALL), uintptr(iconHandle))
+ pSendMessage.Call(hwnd, uintptr(WM_SETICON), uintptr(ICON_BIG), uintptr(iconHandle))
+ }
+ }
+
+ centerWindow(ptr)
+ }
+
+ if !hasCompletedFirstRun {
+ // Only create the login shortcut on first start
+ // so we can respect users deletion of the link
+ err = createLoginShortcut()
+ if err != nil {
+ slog.Warn("unable to create login shortcut", "error", err)
+ }
+ }
+
+ app.t.TrayRun() // This will block the main thread
+}
+
+func createLoginShortcut() error {
+ // The installer lays down a shortcut for us so we can copy it without
+ // having to resort to calling COM APIs to establish the shortcut
+ shortcutOrigin := filepath.Join(appPath, "lib", "Ollama.lnk")
+
+ _, err := os.Stat(startupShortcut)
+ if err != nil {
+ if errors.Is(err, os.ErrNotExist) {
+ in, err := os.Open(shortcutOrigin)
+ if err != nil {
+ return fmt.Errorf("unable to open shortcut %s : %w", shortcutOrigin, err)
+ }
+ defer in.Close()
+ out, err := os.Create(startupShortcut)
+ if err != nil {
+ return fmt.Errorf("unable to open startup link %s : %w", startupShortcut, err)
+ }
+ defer out.Close()
+ _, err = io.Copy(out, in)
+ if err != nil {
+ return fmt.Errorf("unable to copy shortcut %s : %w", startupShortcut, err)
+ }
+ err = out.Sync()
+ if err != nil {
+ return fmt.Errorf("unable to sync shortcut %s : %w", startupShortcut, err)
+ }
+ slog.Info("Created Startup shortcut", "shortcut", startupShortcut)
+ } else {
+ slog.Warn("unexpected error looking up Startup shortcut", "error", err)
+ }
+ } else {
+ slog.Debug("Startup link already exists", "shortcut", startupShortcut)
+ }
+ return nil
+}
+
+func LaunchNewApp() {
+}
+
+func logStartup() {
+ slog.Info("starting Ollama", "app", appPath, "version", version.Version, "OS", updater.UserAgentOS)
+}
+
+const (
+ SW_HIDE = 0 // Hides the window
+ SW_SHOW = 5 // Shows window in its current size/position
+ SW_SHOWNA = 8 // Shows without activating
+ SW_MINIMIZE = 6 // Minimizes the window
+ SW_RESTORE = 9 // Restores to previous size/position
+ SW_SHOWDEFAULT = 10 // Sets show state based on program state
+ SM_CXSCREEN = 0
+ SM_CYSCREEN = 1
+ HWND_TOP = 0
+ SWP_NOSIZE = 0x0001
+ SWP_NOMOVE = 0x0002
+ SWP_NOZORDER = 0x0004
+ SWP_SHOWWINDOW = 0x0040
+
+ // Menu constants
+ MF_STRING = 0x00000000
+ MF_SEPARATOR = 0x00000800
+ MF_GRAYED = 0x00000001
+ TPM_RETURNCMD = 0x0100
+)
+
+// POINT structure for cursor position
+type POINT struct {
+ X int32
+ Y int32
+}
+
+// Rect structure for GetWindowRect
+type Rect struct {
+ Left int32
+ Top int32
+ Right int32
+ Bottom int32
+}
+
+func centerWindow(ptr unsafe.Pointer) {
+ hwnd := uintptr(ptr)
+ if hwnd == 0 {
+ return
+ }
+
+ var rect Rect
+ pGetWindowRect.Call(hwnd, uintptr(unsafe.Pointer(&rect)))
+
+ screenWidth, _, _ := pGetSystemMetrics.Call(uintptr(SM_CXSCREEN))
+ screenHeight, _, _ := pGetSystemMetrics.Call(uintptr(SM_CYSCREEN))
+
+ windowWidth := rect.Right - rect.Left
+ windowHeight := rect.Bottom - rect.Top
+
+ x := (int32(screenWidth) - windowWidth) / 2
+ y := (int32(screenHeight) - windowHeight) / 2
+
+ // Ensure the window is not positioned off-screen
+ if x < 0 {
+ x = 0
+ }
+ if y < 0 {
+ y = 0
+ }
+
+ pSetWindowPos.Call(
+ hwnd,
+ uintptr(HWND_TOP),
+ uintptr(x),
+ uintptr(y),
+ uintptr(windowWidth), // Keep original width
+ uintptr(windowHeight), // Keep original height
+ uintptr(SWP_SHOWWINDOW),
+ )
+}
+
+func showWindow(ptr unsafe.Pointer) {
+ hwnd := uintptr(ptr)
+ if hwnd != 0 {
+ iconHandle := app.t.GetIconHandle()
+ if iconHandle != 0 {
+ const ICON_SMALL = 0
+ const ICON_BIG = 1
+ const WM_SETICON = 0x0080
+
+ pSendMessage.Call(hwnd, uintptr(WM_SETICON), uintptr(ICON_SMALL), uintptr(iconHandle))
+ pSendMessage.Call(hwnd, uintptr(WM_SETICON), uintptr(ICON_BIG), uintptr(iconHandle))
+ }
+
+ // Check if window is minimized
+ isMinimized, _, _ := pIsIconic.Call(hwnd)
+ if isMinimized != 0 {
+ // Restore the window if it's minimized
+ pShowWindow.Call(hwnd, uintptr(SW_RESTORE))
+ }
+
+ // Show the window
+ pShowWindow.Call(hwnd, uintptr(SW_SHOW))
+
+ // Bring window to top
+ pBringWindowToTop.Call(hwnd)
+
+ // Force window to foreground
+ pSetForegroundWindow.Call(hwnd)
+
+ // Make it the active window
+ pSetActiveWindow.Call(hwnd)
+
+ // Ensure window is positioned on top
+ pSetWindowPos.Call(
+ hwnd,
+ uintptr(HWND_TOP),
+ 0, 0, 0, 0,
+ uintptr(SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW),
+ )
+ }
+}
+
+// HideWindow hides the application window
+func hideWindow(ptr unsafe.Pointer) {
+ hwnd := uintptr(ptr)
+ if hwnd != 0 {
+ pShowWindow.Call(
+ hwnd,
+ uintptr(SW_HIDE),
+ )
+ }
+}
+
+func runInBackground() {
+ exe, err := os.Executable()
+ if err != nil {
+ slog.Error("failed to get executable path", "error", err)
+ os.Exit(1)
+ }
+ cmd := exec.Command(exe, "hidden")
+ if cmd != nil {
+ err = cmd.Run()
+ if err != nil {
+ slog.Error("failed to run Ollama", "exe", exe, "error", err)
+ os.Exit(1)
+ }
+ } else {
+ slog.Error("failed to start Ollama", "exe", exe)
+ os.Exit(1)
+ }
+}
+
+func drag(ptr unsafe.Pointer) {}
+
+func doubleClick(ptr unsafe.Pointer) {}
+
+// checkAndHandleExistingInstance checks if another instance is running and sends the URL to it
+func checkAndHandleExistingInstance(urlSchemeRequest string) bool {
+ if urlSchemeRequest == "" {
+ return false
+ }
+
+ // Try to send URL to existing instance using wintray messaging
+ if wintray.CheckAndSendToExistingInstance(urlSchemeRequest) {
+ os.Exit(0)
+ return true
+ }
+
+ // No existing instance, we'll handle it ourselves
+ return false
+}
diff --git a/app/cmd/app/menu.h b/app/cmd/app/menu.h
new file mode 100644
index 000000000..1ff94cbbd
--- /dev/null
+++ b/app/cmd/app/menu.h
@@ -0,0 +1,27 @@
+#ifndef MENU_H
+#define MENU_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct
+{
+ char *label;
+ int enabled;
+ int separator;
+} menuItem;
+
+// TODO (jmorganca): these need to be forward declared in the webview.h file
+// for now but ideally they should be in this header file on windows too
+#ifndef WIN32
+int menu_get_item_count();
+void *menu_get_items();
+void menu_handle_selection(char *item);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/app/cmd/app/webview.go b/app/cmd/app/webview.go
new file mode 100644
index 000000000..9332f10b4
--- /dev/null
+++ b/app/cmd/app/webview.go
@@ -0,0 +1,528 @@
+//go:build windows || darwin
+
+package main
+
+// #include "menu.h"
+import "C"
+
+import (
+ "encoding/base64"
+ "encoding/json"
+ "fmt"
+ "log/slog"
+ "net/http"
+ "os"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "sync"
+ "time"
+ "unsafe"
+
+ "github.com/ollama/ollama/app/dialog"
+ "github.com/ollama/ollama/app/store"
+ "github.com/ollama/ollama/app/webview"
+)
+
+type Webview struct {
+ port int
+ token string
+ webview webview.WebView
+ mutex sync.Mutex
+
+ Store *store.Store
+}
+
+// Run initializes the webview and starts its event loop.
+// Note: this must be called from the primary app thread
+// This returns the OS native window handle to the caller
+func (w *Webview) Run(path string) unsafe.Pointer {
+ var url string
+ if devMode {
+ // In development mode, use the local dev server
+ url = fmt.Sprintf("http://localhost:5173%s", path)
+ } else {
+ url = fmt.Sprintf("http://127.0.0.1:%d%s", w.port, path)
+ }
+ w.mutex.Lock()
+ defer w.mutex.Unlock()
+
+ if w.webview == nil {
+ // Note: turning on debug on macos throws errors but is marginally functional for debugging
+ // TODO (jmorganca): we should pre-create the window and then provide it here to
+ // webview so we can hide it from the start and make other modifications
+ wv := webview.New(debug)
+ // start the window hidden
+ hideWindow(wv.Window())
+ wv.SetTitle("Ollama")
+
+ // TODO (jmorganca): this isn't working yet since it needs to be set
+ // on the first page load, ideally in an interstitial page like `/token`
+ // that exists only to set the cookie and redirect to /
+ // wv.Init(fmt.Sprintf(`document.cookie = "token=%s; path=/"`, w.token))
+ init := `
+ // Disable reload
+ document.addEventListener('keydown', function(e) {
+ if ((e.ctrlKey || e.metaKey) && e.key === 'r') {
+ e.preventDefault();
+ return false;
+ }
+ });
+
+ // Prevent back/forward navigation
+ window.addEventListener('popstate', function(e) {
+ e.preventDefault();
+ history.pushState(null, '', window.location.pathname);
+ return false;
+ });
+
+ // Clear history on load
+ window.addEventListener('load', function() {
+ history.pushState(null, '', window.location.pathname);
+ window.history.replaceState(null, '', window.location.pathname);
+ });
+
+ // Set token cookie
+ document.cookie = "token=` + w.token + `; path=/";
+ `
+ // Windows-specific scrollbar styling
+ if runtime.GOOS == "windows" {
+ init += `
+ // Fix scrollbar styling for Edge WebView2 on Windows only
+ function updateScrollbarStyles() {
+ const isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
+ const existingStyle = document.getElementById('scrollbar-style');
+ if (existingStyle) existingStyle.remove();
+
+ const style = document.createElement('style');
+ style.id = 'scrollbar-style';
+
+ if (isDark) {
+ style.textContent = ` + "`" + `
+ ::-webkit-scrollbar { width: 6px !important; height: 6px !important; }
+ ::-webkit-scrollbar-track { background: #1a1a1a !important; }
+ ::-webkit-scrollbar-thumb { background: #404040 !important; border-radius: 6px !important; }
+ ::-webkit-scrollbar-thumb:hover { background: #505050 !important; }
+ ::-webkit-scrollbar-corner { background: #1a1a1a !important; }
+ ::-webkit-scrollbar-button {
+ background: transparent !important;
+ border: none !important;
+ width: 0px !important;
+ height: 0px !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ }
+ ::-webkit-scrollbar-button:vertical:start:decrement {
+ background: transparent !important;
+ height: 0px !important;
+ }
+ ::-webkit-scrollbar-button:vertical:end:increment {
+ background: transparent !important;
+ height: 0px !important;
+ }
+ ::-webkit-scrollbar-button:horizontal:start:decrement {
+ background: transparent !important;
+ width: 0px !important;
+ }
+ ::-webkit-scrollbar-button:horizontal:end:increment {
+ background: transparent !important;
+ width: 0px !important;
+ }
+ ` + "`" + `;
+ } else {
+ style.textContent = ` + "`" + `
+ ::-webkit-scrollbar { width: 6px !important; height: 6px !important; }
+ ::-webkit-scrollbar-track { background: #f0f0f0 !important; }
+ ::-webkit-scrollbar-thumb { background: #c0c0c0 !important; border-radius: 6px !important; }
+ ::-webkit-scrollbar-thumb:hover { background: #a0a0a0 !important; }
+ ::-webkit-scrollbar-corner { background: #f0f0f0 !important; }
+ ::-webkit-scrollbar-button {
+ background: transparent !important;
+ border: none !important;
+ width: 0px !important;
+ height: 0px !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ }
+ ::-webkit-scrollbar-button:vertical:start:decrement {
+ background: transparent !important;
+ height: 0px !important;
+ }
+ ::-webkit-scrollbar-button:vertical:end:increment {
+ background: transparent !important;
+ height: 0px !important;
+ }
+ ::-webkit-scrollbar-button:horizontal:start:decrement {
+ background: transparent !important;
+ width: 0px !important;
+ }
+ ::-webkit-scrollbar-button:horizontal:end:increment {
+ background: transparent !important;
+ width: 0px !important;
+ }
+ ` + "`" + `;
+ }
+ document.head.appendChild(style);
+ }
+
+ window.addEventListener('load', updateScrollbarStyles);
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', updateScrollbarStyles);
+ `
+ }
+ // on windows make ctrl+n open new chat
+ // TODO (jmorganca): later we should use proper accelerators
+ // once we introduce a native menu for the window
+ // this is only used on windows since macOS uses the proper accelerators
+ if runtime.GOOS == "windows" {
+ init += `
+ document.addEventListener('keydown', function(e) {
+ if ((e.ctrlKey || e.metaKey) && e.key === 'n') {
+ e.preventDefault();
+ // Use the existing navigation method
+ history.pushState({}, '', '/c/new');
+ window.dispatchEvent(new PopStateEvent('popstate'));
+ return false;
+ }
+ });
+ `
+ }
+
+ init += `
+ window.OLLAMA_WEBSEARCH = true;
+ `
+
+ wv.Init(init)
+
+ // Add keyboard handler for zoom
+ wv.Init(`
+ window.addEventListener('keydown', function(e) {
+ // CMD/Ctrl + Plus/Equals (zoom in)
+ if ((e.metaKey || e.ctrlKey) && (e.key === '+' || e.key === '=')) {
+ e.preventDefault();
+ window.zoomIn && window.zoomIn();
+ return false;
+ }
+
+ // CMD/Ctrl + Minus (zoom out)
+ if ((e.metaKey || e.ctrlKey) && e.key === '-') {
+ e.preventDefault();
+ window.zoomOut && window.zoomOut();
+ return false;
+ }
+
+ // CMD/Ctrl + 0 (reset zoom)
+ if ((e.metaKey || e.ctrlKey) && e.key === '0') {
+ e.preventDefault();
+ window.zoomReset && window.zoomReset();
+ return false;
+ }
+ }, true);
+ `)
+
+ wv.Bind("zoomIn", func() {
+ current := wv.GetZoom()
+ wv.SetZoom(current + 0.1)
+ })
+
+ wv.Bind("zoomOut", func() {
+ current := wv.GetZoom()
+ wv.SetZoom(current - 0.1)
+ })
+
+ wv.Bind("zoomReset", func() {
+ wv.SetZoom(1.0)
+ })
+
+ wv.Bind("ready", func() {
+ showWindow(wv.Window())
+ })
+
+ wv.Bind("close", func() {
+ hideWindow(wv.Window())
+ })
+
+ // Webviews do not allow access to the file system by default, so we need to
+ // bind file system operations here
+ wv.Bind("selectModelsDirectory", func() {
+ go func() {
+ // Helper function to call the JavaScript callback with data or null
+ callCallback := func(data interface{}) {
+ dataJSON, _ := json.Marshal(data)
+ wv.Dispatch(func() {
+ wv.Eval(fmt.Sprintf("window.__selectModelsDirectoryCallback && window.__selectModelsDirectoryCallback(%s)", dataJSON))
+ })
+ }
+
+ directory, err := dialog.Directory().Title("Select Model Directory").ShowHidden(true).Browse()
+ if err != nil {
+ slog.Debug("Directory selection cancelled or failed", "error", err)
+ callCallback(nil)
+ return
+ }
+ slog.Debug("Directory selected", "path", directory)
+ callCallback(directory)
+ }()
+ })
+
+ // Bind selectFiles function for selecting multiple files at once
+ wv.Bind("selectFiles", func() {
+ go func() {
+ // Helper function to call the JavaScript callback with data or null
+ callCallback := func(data interface{}) {
+ dataJSON, _ := json.Marshal(data)
+ wv.Dispatch(func() {
+ wv.Eval(fmt.Sprintf("window.__selectFilesCallback && window.__selectFilesCallback(%s)", dataJSON))
+ })
+ }
+
+ // Define allowed extensions for native dialog filtering
+ textExts := []string{
+ "pdf", "docx", "txt", "md", "csv", "json", "xml", "html", "htm",
+ "js", "jsx", "ts", "tsx", "py", "java", "cpp", "c", "cc", "h", "cs", "php", "rb",
+ "go", "rs", "swift", "kt", "scala", "sh", "bat", "yaml", "yml", "toml", "ini",
+ "cfg", "conf", "log", "rtf",
+ }
+ imageExts := []string{"png", "jpg", "jpeg", "webp"}
+ allowedExts := append(textExts, imageExts...)
+
+ // Use native multiple file selection with extension filtering
+ filenames, err := dialog.File().
+ Filter("Supported Files", allowedExts...).
+ Title("Select Files").
+ LoadMultiple()
+ if err != nil {
+ slog.Debug("Multiple file selection cancelled or failed", "error", err)
+ callCallback(nil)
+ return
+ }
+
+ if len(filenames) == 0 {
+ callCallback(nil)
+ return
+ }
+
+ var files []map[string]string
+ maxFileSize := int64(10 * 1024 * 1024) // 10MB
+
+ for _, filename := range filenames {
+ // Check file extension (double-check after native dialog filtering)
+ ext := strings.ToLower(strings.TrimPrefix(filepath.Ext(filename), "."))
+ validExt := false
+ for _, allowedExt := range allowedExts {
+ if ext == allowedExt {
+ validExt = true
+ break
+ }
+ }
+ if !validExt {
+ slog.Warn("file extension not allowed, skipping", "filename", filepath.Base(filename), "extension", ext)
+ continue
+ }
+
+ // Check file size before reading (pre-filter large files)
+ fileStat, err := os.Stat(filename)
+ if err != nil {
+ slog.Error("failed to get file info", "error", err, "filename", filename)
+ continue
+ }
+
+ if fileStat.Size() > maxFileSize {
+ slog.Warn("file too large, skipping", "filename", filepath.Base(filename), "size", fileStat.Size())
+ continue
+ }
+
+ fileBytes, err := os.ReadFile(filename)
+ if err != nil {
+ slog.Error("failed to read file", "error", err, "filename", filename)
+ continue
+ }
+
+ mimeType := http.DetectContentType(fileBytes)
+ dataURL := fmt.Sprintf("data:%s;base64,%s", mimeType, base64.StdEncoding.EncodeToString(fileBytes))
+
+ fileResult := map[string]string{
+ "filename": filepath.Base(filename),
+ "path": filename,
+ "dataURL": dataURL,
+ }
+
+ files = append(files, fileResult)
+ }
+
+ if len(files) == 0 {
+ callCallback(nil)
+ } else {
+ callCallback(files)
+ }
+ }()
+ })
+
+ wv.Bind("drag", func() {
+ wv.Dispatch(func() {
+ drag(wv.Window())
+ })
+ })
+
+ wv.Bind("doubleClick", func() {
+ wv.Dispatch(func() {
+ doubleClick(wv.Window())
+ })
+ })
+
+ // Add binding for working directory selection
+ wv.Bind("selectWorkingDirectory", func() {
+ go func() {
+ // Helper function to call the JavaScript callback with data or null
+ callCallback := func(data interface{}) {
+ dataJSON, _ := json.Marshal(data)
+ wv.Dispatch(func() {
+ wv.Eval(fmt.Sprintf("window.__selectWorkingDirectoryCallback && window.__selectWorkingDirectoryCallback(%s)", dataJSON))
+ })
+ }
+
+ directory, err := dialog.Directory().Title("Select Working Directory").ShowHidden(true).Browse()
+ if err != nil {
+ slog.Debug("Directory selection cancelled or failed", "error", err)
+ callCallback(nil)
+ return
+ }
+ slog.Debug("Directory selected", "path", directory)
+ callCallback(directory)
+ }()
+ })
+
+ wv.Bind("setContextMenuItems", func(items []map[string]interface{}) error {
+ menuMutex.Lock()
+ defer menuMutex.Unlock()
+
+ if len(menuItems) > 0 {
+ pinner.Unpin()
+ }
+
+ menuItems = nil
+ for _, item := range items {
+ menuItem := C.menuItem{
+ label: C.CString(item["label"].(string)),
+ enabled: 0,
+ separator: 0,
+ }
+
+ if item["enabled"] != nil {
+ menuItem.enabled = 1
+ }
+
+ if item["separator"] != nil {
+ menuItem.separator = 1
+ }
+ menuItems = append(menuItems, menuItem)
+ }
+ return nil
+ })
+
+ // Debounce resize events
+ var resizeTimer *time.Timer
+ var resizeMutex sync.Mutex
+
+ wv.Bind("resize", func(width, height int) {
+ if w.Store != nil {
+ resizeMutex.Lock()
+ if resizeTimer != nil {
+ resizeTimer.Stop()
+ }
+ resizeTimer = time.AfterFunc(100*time.Millisecond, func() {
+ err := w.Store.SetWindowSize(width, height)
+ if err != nil {
+ slog.Error("failed to set window size", "error", err)
+ }
+ })
+ resizeMutex.Unlock()
+ }
+ })
+
+ // On Darwin, we can't have 2 threads both running global event loops
+ // but on Windows, the event loops are tied to the window, so we're
+ // able to run in both the tray and webview
+ if runtime.GOOS != "darwin" {
+ slog.Debug("starting webview event loop")
+ go func() {
+ wv.Run()
+ slog.Debug("webview event loop exited")
+ }()
+ }
+
+ if w.Store != nil {
+ width, height, err := w.Store.WindowSize()
+ if err != nil {
+ slog.Error("failed to get window size", "error", err)
+ }
+ if width > 0 && height > 0 {
+ wv.SetSize(width, height, webview.HintNone)
+ } else {
+ wv.SetSize(800, 600, webview.HintNone)
+ }
+ }
+ wv.SetSize(800, 600, webview.HintMin)
+
+ w.webview = wv
+ w.webview.Navigate(url)
+ } else {
+ w.webview.Eval(fmt.Sprintf(`
+ history.pushState({}, '', '%s');
+ `, path))
+ showWindow(w.webview.Window())
+ }
+
+ return w.webview.Window()
+}
+
+func (w *Webview) Terminate() {
+ w.mutex.Lock()
+ if w.webview == nil {
+ w.mutex.Unlock()
+ return
+ }
+
+ wv := w.webview
+ w.webview = nil
+ w.mutex.Unlock()
+ wv.Terminate()
+ wv.Destroy()
+}
+
+func (w *Webview) IsRunning() bool {
+ w.mutex.Lock()
+ defer w.mutex.Unlock()
+ return w.webview != nil
+}
+
+var (
+ menuItems []C.menuItem
+ menuMutex sync.RWMutex
+ pinner runtime.Pinner
+)
+
+//export menu_get_item_count
+func menu_get_item_count() C.int {
+ menuMutex.RLock()
+ defer menuMutex.RUnlock()
+ return C.int(len(menuItems))
+}
+
+//export menu_get_items
+func menu_get_items() unsafe.Pointer {
+ menuMutex.RLock()
+ defer menuMutex.RUnlock()
+
+ if len(menuItems) == 0 {
+ return nil
+ }
+
+ // Return pointer to the slice data
+ pinner.Pin(&menuItems[0])
+ return unsafe.Pointer(&menuItems[0])
+}
+
+//export menu_handle_selection
+func menu_handle_selection(item *C.char) {
+ wv.webview.Eval(fmt.Sprintf("window.handleContextMenuResult('%s')", C.GoString(item)))
+}
diff --git a/app/cmd/squirrel/Info.plist b/app/cmd/squirrel/Info.plist
new file mode 100644
index 000000000..14de76d23
--- /dev/null
+++ b/app/cmd/squirrel/Info.plist
@@ -0,0 +1,40 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ Squirrel
+ CFBundleIconFile
+
+ CFBundleIdentifier
+ com.github.Squirrel
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ Squirrel
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ DTCompiler
+ com.apple.compilers.llvm.clang.1_0
+ DTSDKBuild
+ 22E245
+ DTSDKName
+ macosx13.3
+ DTXcode
+ 1431
+ DTXcodeBuild
+ 14E300c
+ NSHumanReadableCopyright
+ Copyright © 2013 GitHub. All rights reserved.
+ NSPrincipalClass
+
+
+
\ No newline at end of file
diff --git a/app/darwin/Ollama.app/Contents/Info.plist b/app/darwin/Ollama.app/Contents/Info.plist
new file mode 100644
index 000000000..5d9b4ca66
--- /dev/null
+++ b/app/darwin/Ollama.app/Contents/Info.plist
@@ -0,0 +1,51 @@
+
+
+
+
+ CFBundleDisplayName
+ Ollama
+ CFBundleExecutable
+ Ollama
+ CFBundleIconFile
+ icon.icns
+ CFBundleIdentifier
+ com.electron.ollama
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ Ollama
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 0.0.0
+ CFBundleVersion
+ 0.0.0
+ DTCompiler
+ com.apple.compilers.llvm.clang.1_0
+ DTSDKBuild
+ 22E245
+ DTSDKName
+ macosx14.0
+ DTXcode
+ 1431
+ DTXcodeBuild
+ 14E300c
+ LSApplicationCategoryType
+ public.app-category.developer-tools
+ LSMinimumSystemVersion
+ 14.0
+ LSUIElement
+
+ CFBundleURLTypes
+
+
+ CFBundleURLName
+ Ollama URL
+ CFBundleURLSchemes
+
+ ollama
+
+
+
+
+
diff --git a/app/darwin/Ollama.app/Contents/Library/LaunchAgents/com.ollama.ollama.plist b/app/darwin/Ollama.app/Contents/Library/LaunchAgents/com.ollama.ollama.plist
new file mode 100644
index 000000000..563f7bd92
--- /dev/null
+++ b/app/darwin/Ollama.app/Contents/Library/LaunchAgents/com.ollama.ollama.plist
@@ -0,0 +1,25 @@
+
+
+
+
+ Label
+ com.ollama.ollama
+ BundleProgram
+ Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel
+ ProgramArguments
+
+ Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel
+ background
+
+ RunAtLoad
+
+ LimitLoadToSessionType
+ Aqua
+ POSIXSpawnType
+ Interactive
+ LSUIElement
+
+ LSBackgroundOnly
+
+
+
\ No newline at end of file
diff --git a/app/darwin/Ollama.app/Contents/Resources/icon.icns b/app/darwin/Ollama.app/Contents/Resources/icon.icns
new file mode 100644
index 000000000..e25734dc9
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/icon.icns differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollama.png b/app/darwin/Ollama.app/Contents/Resources/ollama.png
new file mode 100644
index 000000000..8daa97607
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollama.png differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollama@2x.png b/app/darwin/Ollama.app/Contents/Resources/ollama@2x.png
new file mode 100644
index 000000000..d226d0f16
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollama@2x.png differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollamaDark.png b/app/darwin/Ollama.app/Contents/Resources/ollamaDark.png
new file mode 100644
index 000000000..34a8f898e
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollamaDark.png differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollamaDark@2x.png b/app/darwin/Ollama.app/Contents/Resources/ollamaDark@2x.png
new file mode 100644
index 000000000..f2436e4d1
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollamaDark@2x.png differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollamaUpdate.png b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdate.png
new file mode 100644
index 000000000..2e9aab35c
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdate.png differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollamaUpdate@2x.png b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdate@2x.png
new file mode 100644
index 000000000..471fe130d
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdate@2x.png differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollamaUpdateDark.png b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdateDark.png
new file mode 100644
index 000000000..b7f3fd619
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdateDark.png differ
diff --git a/app/darwin/Ollama.app/Contents/Resources/ollamaUpdateDark@2x.png b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdateDark@2x.png
new file mode 100644
index 000000000..5672c1aa4
Binary files /dev/null and b/app/darwin/Ollama.app/Contents/Resources/ollamaUpdateDark@2x.png differ
diff --git a/app/dialog/LICENSE b/app/dialog/LICENSE
new file mode 100644
index 000000000..75bff9f67
--- /dev/null
+++ b/app/dialog/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2018, the dialog authors.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
\ No newline at end of file
diff --git a/app/dialog/cocoa/dlg.h b/app/dialog/cocoa/dlg.h
new file mode 100644
index 000000000..302cd2e2b
--- /dev/null
+++ b/app/dialog/cocoa/dlg.h
@@ -0,0 +1,43 @@
+#include
+
+typedef enum {
+ MSG_YESNO,
+ MSG_ERROR,
+ MSG_INFO,
+} AlertStyle;
+
+typedef struct {
+ char* msg;
+ char* title;
+ AlertStyle style;
+} AlertDlgParams;
+
+#define LOADDLG 0
+#define SAVEDLG 1
+#define DIRDLG 2 // browse for directory
+
+typedef struct {
+ int mode; /* which dialog style to invoke (see earlier defines) */
+ char* buf; /* buffer to store selected file */
+ int nbuf; /* number of bytes allocated at buf */
+ char* title; /* title for dialog box (can be nil) */
+ void** exts; /* list of valid extensions (elements actual type is NSString*) */
+ int numext; /* number of items in exts */
+ int relaxext; /* allow other extensions? */
+ char* startDir; /* directory to start in (can be nil) */
+ char* filename; /* default filename for dialog box (can be nil) */
+ int showHidden; /* show hidden files? */
+ int allowMultiple; /* allow multiple file selection? */
+} FileDlgParams;
+
+typedef enum {
+ DLG_OK,
+ DLG_CANCEL,
+ DLG_URLFAIL,
+} DlgResult;
+
+DlgResult alertDlg(AlertDlgParams*);
+DlgResult fileDlg(FileDlgParams*);
+
+void* NSStr(void* buf, int len);
+void NSRelease(void* obj);
diff --git a/app/dialog/cocoa/dlg.m b/app/dialog/cocoa/dlg.m
new file mode 100644
index 000000000..35851978d
--- /dev/null
+++ b/app/dialog/cocoa/dlg.m
@@ -0,0 +1,218 @@
+#import
+#include "dlg.h"
+#include
+#include
+
+// Import UniformTypeIdentifiers for macOS 11+
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 110000
+#import
+#endif
+
+void* NSStr(void* buf, int len) {
+ return (void*)[[NSString alloc] initWithBytes:buf length:len encoding:NSUTF8StringEncoding];
+}
+
+void checkActivationPolicy() {
+ NSApplicationActivationPolicy policy = [NSApp activationPolicy];
+ // prohibited NSApp will not show the panel at all.
+ // It probably means that this is not run in a GUI app, that would set the policy on its own,
+ // but in a terminal app - setting it to accessory will allow dialogs to show
+ if (policy == NSApplicationActivationPolicyProhibited) {
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyAccessory];
+ }
+}
+
+void NSRelease(void* obj) {
+ [(NSObject*)obj release];
+}
+
+@interface AlertDlg : NSObject {
+ AlertDlgParams* params;
+ DlgResult result;
+}
++ (AlertDlg*)init:(AlertDlgParams*)params;
+- (DlgResult)run;
+@end
+
+DlgResult alertDlg(AlertDlgParams* params) {
+ return [[AlertDlg init:params] run];
+}
+
+@implementation AlertDlg
++ (AlertDlg*)init:(AlertDlgParams*)params {
+ AlertDlg* d = [AlertDlg alloc];
+ d->params = params;
+ return d;
+}
+
+- (DlgResult)run {
+ if(![NSThread isMainThread]) {
+ [self performSelectorOnMainThread:@selector(run) withObject:nil waitUntilDone:YES];
+ return self->result;
+ }
+ NSAlert* alert = [[NSAlert alloc] init];
+ if(self->params->title != nil) {
+ [[alert window] setTitle:[[NSString alloc] initWithUTF8String:self->params->title]];
+ }
+ [alert setMessageText:[[NSString alloc] initWithUTF8String:self->params->msg]];
+ switch (self->params->style) {
+ case MSG_YESNO:
+ [alert addButtonWithTitle:@"Yes"];
+ [alert addButtonWithTitle:@"No"];
+ break;
+ case MSG_ERROR:
+ [alert setIcon:[NSImage imageNamed:NSImageNameCaution]];
+ [alert addButtonWithTitle:@"OK"];
+ break;
+ case MSG_INFO:
+ [alert setIcon:[NSImage imageNamed:NSImageNameInfo]];
+ [alert addButtonWithTitle:@"OK"];
+ break;
+ }
+
+ checkActivationPolicy();
+
+ self->result = [alert runModal] == NSAlertFirstButtonReturn ? DLG_OK : DLG_CANCEL;
+ return self->result;
+}
+@end
+
+@interface FileDlg : NSObject {
+ FileDlgParams* params;
+ DlgResult result;
+}
++ (FileDlg*)init:(FileDlgParams*)params;
+- (DlgResult)run;
+@end
+
+DlgResult fileDlg(FileDlgParams* params) {
+ return [[FileDlg init:params] run];
+}
+
+@implementation FileDlg
++ (FileDlg*)init:(FileDlgParams*)params {
+ FileDlg* d = [FileDlg alloc];
+ d->params = params;
+ return d;
+}
+
+- (DlgResult)run {
+ if(![NSThread isMainThread]) {
+ [self performSelectorOnMainThread:@selector(run) withObject:nil waitUntilDone:YES];
+ } else if(self->params->mode == SAVEDLG) {
+ self->result = [self save];
+ } else {
+ self->result = [self load];
+ }
+ return self->result;
+}
+
+- (NSInteger)runPanel:(NSSavePanel*)panel {
+ [panel setFloatingPanel:YES];
+ [panel setShowsHiddenFiles:self->params->showHidden ? YES : NO];
+ [panel setCanCreateDirectories:YES];
+ if(self->params->title != nil) {
+ [panel setTitle:[[NSString alloc] initWithUTF8String:self->params->title]];
+ }
+ // Use modern allowedContentTypes API for better file type support (especially video files)
+ if(self->params->numext > 0) {
+ NSMutableArray *utTypes = [NSMutableArray arrayWithCapacity:self->params->numext];
+ NSString** exts = (NSString**)self->params->exts;
+ for(int i = 0; i < self->params->numext; i++) {
+ UTType *type = [UTType typeWithFilenameExtension:exts[i]];
+ if(type) {
+ [utTypes addObject:type];
+ }
+ }
+ if([utTypes count] > 0) {
+ [panel setAllowedContentTypes:utTypes];
+ }
+ }
+ if(self->params->relaxext) {
+ [panel setAllowsOtherFileTypes:YES];
+ }
+ if(self->params->startDir) {
+ [panel setDirectoryURL:[NSURL URLWithString:[[NSString alloc] initWithUTF8String:self->params->startDir]]];
+ }
+ if(self->params->filename != nil) {
+ [panel setNameFieldStringValue:[[NSString alloc] initWithUTF8String:self->params->filename]];
+ }
+
+ checkActivationPolicy();
+
+ return [panel runModal];
+}
+
+- (DlgResult)save {
+ NSSavePanel* panel = [NSSavePanel savePanel];
+ if(![self runPanel:panel]) {
+ return DLG_CANCEL;
+ } else if(![[panel URL] getFileSystemRepresentation:self->params->buf maxLength:self->params->nbuf]) {
+ return DLG_URLFAIL;
+ }
+ return DLG_OK;
+}
+
+- (DlgResult)load {
+ NSOpenPanel* panel = [NSOpenPanel openPanel];
+ if(self->params->mode == DIRDLG) {
+ [panel setCanChooseDirectories:YES];
+ [panel setCanChooseFiles:NO];
+ }
+
+ if(self->params->allowMultiple) {
+ [panel setAllowsMultipleSelection:YES];
+ }
+
+ if(![self runPanel:panel]) {
+ return DLG_CANCEL;
+ }
+
+ NSArray* urls = [panel URLs];
+ if([urls count] == 0) {
+ return DLG_CANCEL;
+ }
+
+ if(self->params->allowMultiple) {
+ // For multiple files, we need to return all paths separated by null bytes
+ char* bufPtr = self->params->buf;
+ int remainingBuf = self->params->nbuf;
+
+ // Calculate total required buffer size first
+ int totalSize = 0;
+ for(NSURL* url in urls) {
+ char tempBuf[PATH_MAX];
+ if(![url getFileSystemRepresentation:tempBuf maxLength:PATH_MAX]) {
+ return DLG_URLFAIL;
+ }
+ totalSize += strlen(tempBuf) + 1; // +1 for null terminator
+ }
+ totalSize += 1; // Final null terminator
+
+ if(totalSize > self->params->nbuf) {
+ // Not enough buffer space
+ return DLG_URLFAIL;
+ }
+
+ // Now actually copy the paths (we know we have space)
+ bufPtr = self->params->buf;
+ for(NSURL* url in urls) {
+ char tempBuf[PATH_MAX];
+ [url getFileSystemRepresentation:tempBuf maxLength:PATH_MAX];
+ int pathLen = strlen(tempBuf);
+ strcpy(bufPtr, tempBuf);
+ bufPtr += pathLen + 1;
+ }
+ *bufPtr = '\0'; // Final null terminator
+ } else {
+ // Single file/directory selection - write path to buffer
+ NSURL* url = [urls firstObject];
+ if(![url getFileSystemRepresentation:self->params->buf maxLength:self->params->nbuf]) {
+ return DLG_URLFAIL;
+ }
+ }
+
+ return DLG_OK;
+}
+
+@end
diff --git a/app/dialog/cocoa/dlg_darwin.go b/app/dialog/cocoa/dlg_darwin.go
new file mode 100644
index 000000000..6bfae5a1a
--- /dev/null
+++ b/app/dialog/cocoa/dlg_darwin.go
@@ -0,0 +1,183 @@
+package cocoa
+
+// #cgo darwin LDFLAGS: -framework Cocoa -framework UniformTypeIdentifiers
+// #include
+// #include
+// #include "dlg.h"
+import "C"
+
+import (
+ "bytes"
+ "errors"
+ "unsafe"
+)
+
+type AlertParams struct {
+ p C.AlertDlgParams
+}
+
+func mkAlertParams(msg, title string, style C.AlertStyle) *AlertParams {
+ a := AlertParams{C.AlertDlgParams{msg: C.CString(msg), style: style}}
+ if title != "" {
+ a.p.title = C.CString(title)
+ }
+ return &a
+}
+
+func (a *AlertParams) run() C.DlgResult {
+ return C.alertDlg(&a.p)
+}
+
+func (a *AlertParams) free() {
+ C.free(unsafe.Pointer(a.p.msg))
+ if a.p.title != nil {
+ C.free(unsafe.Pointer(a.p.title))
+ }
+}
+
+func nsStr(s string) unsafe.Pointer {
+ return C.NSStr(unsafe.Pointer(&[]byte(s)[0]), C.int(len(s)))
+}
+
+func YesNoDlg(msg, title string) bool {
+ a := mkAlertParams(msg, title, C.MSG_YESNO)
+ defer a.free()
+ return a.run() == C.DLG_OK
+}
+
+func InfoDlg(msg, title string) {
+ a := mkAlertParams(msg, title, C.MSG_INFO)
+ defer a.free()
+ a.run()
+}
+
+func ErrorDlg(msg, title string) {
+ a := mkAlertParams(msg, title, C.MSG_ERROR)
+ defer a.free()
+ a.run()
+}
+
+const (
+ BUFSIZE = C.PATH_MAX
+ MULTI_FILE_BUF_SIZE = 32768
+)
+
+// MultiFileDlg opens a file dialog that allows multiple file selection
+func MultiFileDlg(title string, exts []string, relaxExt bool, startDir string, showHidden bool) ([]string, error) {
+ return fileDlgWithOptions(C.LOADDLG, title, exts, relaxExt, startDir, "", showHidden, true)
+}
+
+// FileDlg opens a file dialog for single file selection (kept for compatibility)
+func FileDlg(save bool, title string, exts []string, relaxExt bool, startDir string, filename string, showHidden bool) (string, error) {
+ mode := C.LOADDLG
+ if save {
+ mode = C.SAVEDLG
+ }
+ files, err := fileDlgWithOptions(mode, title, exts, relaxExt, startDir, filename, showHidden, false)
+ if err != nil {
+ return "", err
+ }
+ if len(files) == 0 {
+ return "", nil
+ }
+ return files[0], nil
+}
+
+func DirDlg(title string, startDir string, showHidden bool) (string, error) {
+ files, err := fileDlgWithOptions(C.DIRDLG, title, nil, false, startDir, "", showHidden, false)
+ if err != nil {
+ return "", err
+ }
+ if len(files) == 0 {
+ return "", nil
+ }
+ return files[0], nil
+}
+
+// fileDlgWithOptions is the unified file dialog function that handles both single and multiple selection
+func fileDlgWithOptions(mode int, title string, exts []string, relaxExt bool, startDir, filename string, showHidden, allowMultiple bool) ([]string, error) {
+ // Use larger buffer for multiple files, smaller for single
+ bufSize := BUFSIZE
+ if allowMultiple {
+ bufSize = MULTI_FILE_BUF_SIZE
+ }
+
+ p := C.FileDlgParams{
+ mode: C.int(mode),
+ nbuf: C.int(bufSize),
+ }
+
+ if allowMultiple {
+ p.allowMultiple = C.int(1) // Enable multiple selection //nolint:structcheck
+ }
+ if showHidden {
+ p.showHidden = 1
+ }
+
+ p.buf = (*C.char)(C.malloc(C.size_t(bufSize)))
+ defer C.free(unsafe.Pointer(p.buf))
+ buf := (*(*[MULTI_FILE_BUF_SIZE]byte)(unsafe.Pointer(p.buf)))[:bufSize]
+
+ if title != "" {
+ p.title = C.CString(title)
+ defer C.free(unsafe.Pointer(p.title))
+ }
+ if startDir != "" {
+ p.startDir = C.CString(startDir)
+ defer C.free(unsafe.Pointer(p.startDir))
+ }
+ if filename != "" {
+ p.filename = C.CString(filename)
+ defer C.free(unsafe.Pointer(p.filename))
+ }
+
+ if len(exts) > 0 {
+ if len(exts) > 999 {
+ panic("more than 999 extensions not supported")
+ }
+ ptrSize := int(unsafe.Sizeof(&title))
+ p.exts = (*unsafe.Pointer)(C.malloc(C.size_t(ptrSize * len(exts))))
+ defer C.free(unsafe.Pointer(p.exts))
+ cext := (*(*[999]unsafe.Pointer)(unsafe.Pointer(p.exts)))[:]
+ for i, ext := range exts {
+ cext[i] = nsStr(ext)
+ defer C.NSRelease(cext[i])
+ }
+ p.numext = C.int(len(exts))
+ if relaxExt {
+ p.relaxext = 1
+ }
+ }
+
+ // Execute dialog and parse results
+ switch C.fileDlg(&p) {
+ case C.DLG_OK:
+ if allowMultiple {
+ // Parse multiple null-terminated strings from buffer
+ var files []string
+ start := 0
+ for i := range len(buf) - 1 {
+ if buf[i] == 0 {
+ if i > start {
+ files = append(files, string(buf[start:i]))
+ }
+ start = i + 1
+ // Check for double null (end of list)
+ if i+1 < len(buf) && buf[i+1] == 0 {
+ break
+ }
+ }
+ }
+ return files, nil
+ } else {
+ // Single file - return as array for consistency
+ filename := string(buf[:bytes.Index(buf, []byte{0})])
+ return []string{filename}, nil
+ }
+ case C.DLG_CANCEL:
+ return nil, nil
+ case C.DLG_URLFAIL:
+ return nil, errors.New("failed to get file-system representation for selected URL")
+ }
+ panic("unhandled case")
+}
diff --git a/app/dialog/dlgs.go b/app/dialog/dlgs.go
new file mode 100644
index 000000000..700f79fc4
--- /dev/null
+++ b/app/dialog/dlgs.go
@@ -0,0 +1,182 @@
+//go:build windows || darwin
+
+// Package dialog provides a simple cross-platform common dialog API.
+// Eg. to prompt the user with a yes/no dialog:
+//
+// if dialog.MsgDlg("%s", "Do you want to continue?").YesNo() {
+// // user pressed Yes
+// }
+//
+// The general usage pattern is to call one of the toplevel *Dlg functions
+// which return a *Builder structure. From here you can optionally call
+// configuration functions (eg. Title) to customise the dialog, before
+// using a launcher function to run the dialog.
+package dialog
+
+import (
+ "errors"
+ "fmt"
+)
+
+// ErrCancelled is an error returned when a user cancels/closes a dialog.
+var ErrCancelled = errors.New("Cancelled")
+
+// Cancelled refers to ErrCancelled.
+// Deprecated: Use ErrCancelled instead.
+var Cancelled = ErrCancelled
+
+// Dlg is the common type for dialogs.
+type Dlg struct {
+ Title string
+}
+
+// MsgBuilder is used for creating message boxes.
+type MsgBuilder struct {
+ Dlg
+ Msg string
+}
+
+// Message initialises a MsgBuilder with the provided message.
+func Message(format string, args ...interface{}) *MsgBuilder {
+ return &MsgBuilder{Msg: fmt.Sprintf(format, args...)}
+}
+
+// Title specifies what the title of the message dialog will be.
+func (b *MsgBuilder) Title(title string) *MsgBuilder {
+ b.Dlg.Title = title
+ return b
+}
+
+// YesNo spawns the message dialog with two buttons, "Yes" and "No".
+// Returns true iff the user selected "Yes".
+func (b *MsgBuilder) YesNo() bool {
+ return b.yesNo()
+}
+
+// Info spawns the message dialog with an information icon and single button, "Ok".
+func (b *MsgBuilder) Info() {
+ b.info()
+}
+
+// Error spawns the message dialog with an error icon and single button, "Ok".
+func (b *MsgBuilder) Error() {
+ b.error()
+}
+
+// FileFilter represents a category of files (eg. audio files, spreadsheets).
+type FileFilter struct {
+ Desc string
+ Extensions []string
+}
+
+// FileBuilder is used for creating file browsing dialogs.
+type FileBuilder struct {
+ Dlg
+ StartDir string
+ StartFile string
+ Filters []FileFilter
+ ShowHiddenFiles bool
+}
+
+// File initialises a FileBuilder using the default configuration.
+func File() *FileBuilder {
+ return &FileBuilder{}
+}
+
+// Title specifies the title to be used for the dialog.
+func (b *FileBuilder) Title(title string) *FileBuilder {
+ b.Dlg.Title = title
+ return b
+}
+
+// Filter adds a category of files to the types allowed by the dialog. Multiple
+// calls to Filter are cumulative - any of the provided categories will be allowed.
+// By default all files can be selected.
+//
+// The special extension '*' allows all files to be selected when the Filter is active.
+func (b *FileBuilder) Filter(desc string, extensions ...string) *FileBuilder {
+ filt := FileFilter{desc, extensions}
+ if len(filt.Extensions) == 0 {
+ filt.Extensions = append(filt.Extensions, "*")
+ }
+ b.Filters = append(b.Filters, filt)
+ return b
+}
+
+// SetStartDir specifies the initial directory of the dialog.
+func (b *FileBuilder) SetStartDir(startDir string) *FileBuilder {
+ b.StartDir = startDir
+ return b
+}
+
+// SetStartFile specifies the initial file name of the dialog.
+func (b *FileBuilder) SetStartFile(startFile string) *FileBuilder {
+ b.StartFile = startFile
+ return b
+}
+
+// ShowHiddenFiles sets whether hidden files should be visible in the dialog.
+func (b *FileBuilder) ShowHidden(show bool) *FileBuilder {
+ b.ShowHiddenFiles = show
+ return b
+}
+
+// Load spawns the file selection dialog using the configured settings,
+// asking the user to select a single file. Returns ErrCancelled as the error
+// if the user cancels or closes the dialog.
+func (b *FileBuilder) Load() (string, error) {
+ return b.load()
+}
+
+// LoadMultiple spawns the file selection dialog using the configured settings,
+// asking the user to select multiple files. Returns ErrCancelled as the error
+// if the user cancels or closes the dialog.
+func (b *FileBuilder) LoadMultiple() ([]string, error) {
+ return b.loadMultiple()
+}
+
+// Save spawns the file selection dialog using the configured settings,
+// asking the user for a filename to save as. If the chosen file exists, the
+// user is prompted whether they want to overwrite the file. Returns
+// ErrCancelled as the error if the user cancels/closes the dialog, or selects
+// not to overwrite the file.
+func (b *FileBuilder) Save() (string, error) {
+ return b.save()
+}
+
+// DirectoryBuilder is used for directory browse dialogs.
+type DirectoryBuilder struct {
+ Dlg
+ StartDir string
+ ShowHiddenFiles bool
+}
+
+// Directory initialises a DirectoryBuilder using the default configuration.
+func Directory() *DirectoryBuilder {
+ return &DirectoryBuilder{}
+}
+
+// Browse spawns the directory selection dialog using the configured settings,
+// asking the user to select a single folder. Returns ErrCancelled as the error
+// if the user cancels or closes the dialog.
+func (b *DirectoryBuilder) Browse() (string, error) {
+ return b.browse()
+}
+
+// Title specifies the title to be used for the dialog.
+func (b *DirectoryBuilder) Title(title string) *DirectoryBuilder {
+ b.Dlg.Title = title
+ return b
+}
+
+// StartDir specifies the initial directory to be used for the dialog.
+func (b *DirectoryBuilder) SetStartDir(dir string) *DirectoryBuilder {
+ b.StartDir = dir
+ return b
+}
+
+// ShowHiddenFiles sets whether hidden files should be visible in the dialog.
+func (b *DirectoryBuilder) ShowHidden(show bool) *DirectoryBuilder {
+ b.ShowHiddenFiles = show
+ return b
+}
diff --git a/app/dialog/dlgs_darwin.go b/app/dialog/dlgs_darwin.go
new file mode 100644
index 000000000..8d0f08d65
--- /dev/null
+++ b/app/dialog/dlgs_darwin.go
@@ -0,0 +1,82 @@
+package dialog
+
+import (
+ "github.com/ollama/ollama/app/dialog/cocoa"
+)
+
+func (b *MsgBuilder) yesNo() bool {
+ return cocoa.YesNoDlg(b.Msg, b.Dlg.Title)
+}
+
+func (b *MsgBuilder) info() {
+ cocoa.InfoDlg(b.Msg, b.Dlg.Title)
+}
+
+func (b *MsgBuilder) error() {
+ cocoa.ErrorDlg(b.Msg, b.Dlg.Title)
+}
+
+func (b *FileBuilder) load() (string, error) {
+ return b.run(false)
+}
+
+func (b *FileBuilder) loadMultiple() ([]string, error) {
+ return b.runMultiple()
+}
+
+func (b *FileBuilder) save() (string, error) {
+ return b.run(true)
+}
+
+func (b *FileBuilder) run(save bool) (string, error) {
+ star := false
+ var exts []string
+ for _, filt := range b.Filters {
+ for _, ext := range filt.Extensions {
+ if ext == "*" {
+ star = true
+ } else {
+ exts = append(exts, ext)
+ }
+ }
+ }
+ if star && save {
+ /* OSX doesn't allow the user to switch visible file types/extensions. Also
+ ** NSSavePanel's allowsOtherFileTypes property has no effect for an open
+ ** dialog, so if "*" is a possible extension we must always show all files. */
+ exts = nil
+ }
+ f, err := cocoa.FileDlg(save, b.Dlg.Title, exts, star, b.StartDir, b.StartFile, b.ShowHiddenFiles)
+ if f == "" && err == nil {
+ return "", ErrCancelled
+ }
+ return f, err
+}
+
+func (b *FileBuilder) runMultiple() ([]string, error) {
+ star := false
+ var exts []string
+ for _, filt := range b.Filters {
+ for _, ext := range filt.Extensions {
+ if ext == "*" {
+ star = true
+ } else {
+ exts = append(exts, ext)
+ }
+ }
+ }
+
+ files, err := cocoa.MultiFileDlg(b.Dlg.Title, exts, star, b.StartDir, b.ShowHiddenFiles)
+ if len(files) == 0 && err == nil {
+ return nil, ErrCancelled
+ }
+ return files, err
+}
+
+func (b *DirectoryBuilder) browse() (string, error) {
+ f, err := cocoa.DirDlg(b.Dlg.Title, b.StartDir, b.ShowHiddenFiles)
+ if f == "" && err == nil {
+ return "", ErrCancelled
+ }
+ return f, err
+}
diff --git a/app/dialog/dlgs_windows.go b/app/dialog/dlgs_windows.go
new file mode 100644
index 000000000..51ba9ee69
--- /dev/null
+++ b/app/dialog/dlgs_windows.go
@@ -0,0 +1,241 @@
+package dialog
+
+import (
+ "fmt"
+ "reflect"
+ "syscall"
+ "unicode/utf16"
+ "unsafe"
+
+ "github.com/TheTitanrain/w32"
+)
+
+const multiFileBufferSize = w32.MAX_PATH * 10
+
+type WinDlgError int
+
+func (e WinDlgError) Error() string {
+ return fmt.Sprintf("CommDlgExtendedError: %#x", int(e))
+}
+
+func err() error {
+ e := w32.CommDlgExtendedError()
+ if e == 0 {
+ return ErrCancelled
+ }
+ return WinDlgError(e)
+}
+
+func (b *MsgBuilder) yesNo() bool {
+ r := w32.MessageBox(w32.HWND(0), b.Msg, firstOf(b.Dlg.Title, "Confirm?"), w32.MB_YESNO)
+ return r == w32.IDYES
+}
+
+func (b *MsgBuilder) info() {
+ w32.MessageBox(w32.HWND(0), b.Msg, firstOf(b.Dlg.Title, "Information"), w32.MB_OK|w32.MB_ICONINFORMATION)
+}
+
+func (b *MsgBuilder) error() {
+ w32.MessageBox(w32.HWND(0), b.Msg, firstOf(b.Dlg.Title, "Error"), w32.MB_OK|w32.MB_ICONERROR)
+}
+
+type filedlg struct {
+ buf []uint16
+ filters []uint16
+ opf *w32.OPENFILENAME
+}
+
+func (d filedlg) Filename() string {
+ i := 0
+ for i < len(d.buf) && d.buf[i] != 0 {
+ i++
+ }
+ return string(utf16.Decode(d.buf[:i]))
+}
+
+func (d filedlg) parseMultipleFilenames() []string {
+ var files []string
+ i := 0
+
+ // Find first null terminator (directory path)
+ for i < len(d.buf) && d.buf[i] != 0 {
+ i++
+ }
+
+ if i >= len(d.buf) {
+ return files
+ }
+
+ // Get directory path
+ dirPath := string(utf16.Decode(d.buf[:i]))
+ i++ // Skip null terminator
+
+ // Check if there are more files (multiple selection)
+ if i < len(d.buf) && d.buf[i] != 0 {
+ // Multiple files selected - parse filenames
+ for i < len(d.buf) {
+ start := i
+ // Find next null terminator
+ for i < len(d.buf) && d.buf[i] != 0 {
+ i++
+ }
+ if i >= len(d.buf) {
+ break
+ }
+
+ if start < i {
+ filename := string(utf16.Decode(d.buf[start:i]))
+ if dirPath != "" {
+ files = append(files, dirPath+"\\"+filename)
+ } else {
+ files = append(files, filename)
+ }
+ }
+ i++ // Skip null terminator
+ if i >= len(d.buf) || d.buf[i] == 0 {
+ break // End of list
+ }
+ }
+ } else {
+ // Single file selected
+ files = append(files, dirPath)
+ }
+
+ return files
+}
+
+func (b *FileBuilder) load() (string, error) {
+ d := openfile(w32.OFN_FILEMUSTEXIST|w32.OFN_NOCHANGEDIR, b)
+ if w32.GetOpenFileName(d.opf) {
+ return d.Filename(), nil
+ }
+ return "", err()
+}
+
+func (b *FileBuilder) loadMultiple() ([]string, error) {
+ d := openfile(w32.OFN_FILEMUSTEXIST|w32.OFN_NOCHANGEDIR|w32.OFN_ALLOWMULTISELECT|w32.OFN_EXPLORER, b)
+ d.buf = make([]uint16, multiFileBufferSize)
+ d.opf.File = utf16ptr(d.buf)
+ d.opf.MaxFile = uint32(len(d.buf))
+
+ if w32.GetOpenFileName(d.opf) {
+ return d.parseMultipleFilenames(), nil
+ }
+ return nil, err()
+}
+
+func (b *FileBuilder) save() (string, error) {
+ d := openfile(w32.OFN_OVERWRITEPROMPT|w32.OFN_NOCHANGEDIR, b)
+ if w32.GetSaveFileName(d.opf) {
+ return d.Filename(), nil
+ }
+ return "", err()
+}
+
+/* syscall.UTF16PtrFromString not sufficient because we need to encode embedded NUL bytes */
+func utf16ptr(utf16 []uint16) *uint16 {
+ if utf16[len(utf16)-1] != 0 {
+ panic("refusing to make ptr to non-NUL terminated utf16 slice")
+ }
+ h := (*reflect.SliceHeader)(unsafe.Pointer(&utf16))
+ return (*uint16)(unsafe.Pointer(h.Data))
+}
+
+func utf16slice(ptr *uint16) []uint16 { //nolint:unused
+ hdr := reflect.SliceHeader{Data: uintptr(unsafe.Pointer(ptr)), Len: 1, Cap: 1}
+ slice := *((*[]uint16)(unsafe.Pointer(&hdr))) //nolint:govet
+ i := 0
+ for slice[len(slice)-1] != 0 {
+ i++
+ }
+ hdr.Len = i
+ slice = *((*[]uint16)(unsafe.Pointer(&hdr))) //nolint:govet
+ return slice
+}
+
+func openfile(flags uint32, b *FileBuilder) (d filedlg) {
+ d.buf = make([]uint16, w32.MAX_PATH)
+ if b.StartFile != "" {
+ initialName, _ := syscall.UTF16FromString(b.StartFile)
+ for i := 0; i < len(initialName) && i < w32.MAX_PATH; i++ {
+ d.buf[i] = initialName[i]
+ }
+ }
+ d.opf = &w32.OPENFILENAME{
+ File: utf16ptr(d.buf),
+ MaxFile: uint32(len(d.buf)),
+ Flags: flags,
+ }
+ d.opf.StructSize = uint32(unsafe.Sizeof(*d.opf))
+ if b.StartDir != "" {
+ d.opf.InitialDir, _ = syscall.UTF16PtrFromString(b.StartDir)
+ }
+ if b.Dlg.Title != "" {
+ d.opf.Title, _ = syscall.UTF16PtrFromString(b.Dlg.Title)
+ }
+ for _, filt := range b.Filters {
+ /* build utf16 string of form "Music File\0*.mp3;*.ogg;*.wav;\0" */
+ d.filters = append(d.filters, utf16.Encode([]rune(filt.Desc))...)
+ d.filters = append(d.filters, 0)
+ for _, ext := range filt.Extensions {
+ s := fmt.Sprintf("*.%s;", ext)
+ d.filters = append(d.filters, utf16.Encode([]rune(s))...)
+ }
+ d.filters = append(d.filters, 0)
+ }
+ if d.filters != nil {
+ d.filters = append(d.filters, 0, 0) // two extra NUL chars to terminate the list
+ d.opf.Filter = utf16ptr(d.filters)
+ }
+ return d
+}
+
+type dirdlg struct {
+ bi *w32.BROWSEINFO
+}
+
+const (
+ bffm_INITIALIZED = 1
+ bffm_SELCHANGED = 2
+ bffm_VALIDATEFAILEDA = 3
+ bffm_VALIDATEFAILEDW = 4
+ bffm_SETSTATUSTEXTA = (w32.WM_USER + 100)
+ bffm_SETSTATUSTEXTW = (w32.WM_USER + 104)
+ bffm_ENABLEOK = (w32.WM_USER + 101)
+ bffm_SETSELECTIONA = (w32.WM_USER + 102)
+ bffm_SETSELECTIONW = (w32.WM_USER + 103)
+ bffm_SETOKTEXT = (w32.WM_USER + 105)
+ bffm_SETEXPANDED = (w32.WM_USER + 106)
+ bffm_SETSTATUSTEXT = bffm_SETSTATUSTEXTW
+ bffm_SETSELECTION = bffm_SETSELECTIONW
+ bffm_VALIDATEFAILED = bffm_VALIDATEFAILEDW
+)
+
+func callbackDefaultDir(hwnd w32.HWND, msg uint, lParam, lpData uintptr) int {
+ if msg == bffm_INITIALIZED {
+ _ = w32.SendMessage(hwnd, bffm_SETSELECTION, w32.TRUE, lpData)
+ }
+ return 0
+}
+
+func selectdir(b *DirectoryBuilder) (d dirdlg) {
+ d.bi = &w32.BROWSEINFO{Flags: w32.BIF_RETURNONLYFSDIRS | w32.BIF_NEWDIALOGSTYLE}
+ if b.Dlg.Title != "" {
+ d.bi.Title, _ = syscall.UTF16PtrFromString(b.Dlg.Title)
+ }
+ if b.StartDir != "" {
+ s16, _ := syscall.UTF16PtrFromString(b.StartDir)
+ d.bi.LParam = uintptr(unsafe.Pointer(s16))
+ d.bi.CallbackFunc = syscall.NewCallback(callbackDefaultDir)
+ }
+ return d
+}
+
+func (b *DirectoryBuilder) browse() (string, error) {
+ d := selectdir(b)
+ res := w32.SHBrowseForFolder(d.bi)
+ if res == 0 {
+ return "", ErrCancelled
+ }
+ return w32.SHGetPathFromIDList(res), nil
+}
diff --git a/app/dialog/util.go b/app/dialog/util.go
new file mode 100644
index 000000000..2848c4798
--- /dev/null
+++ b/app/dialog/util.go
@@ -0,0 +1,12 @@
+//go:build windows
+
+package dialog
+
+func firstOf(args ...string) string {
+ for _, arg := range args {
+ if arg != "" {
+ return arg
+ }
+ }
+ return ""
+}
diff --git a/app/format/field.go b/app/format/field.go
new file mode 100644
index 000000000..090bdf7dc
--- /dev/null
+++ b/app/format/field.go
@@ -0,0 +1,30 @@
+//go:build windows || darwin
+
+package format
+
+import (
+ "strings"
+ "unicode"
+)
+
+// KebabCase converts a string from camelCase or PascalCase to kebab-case.
+// (e.g. "camelCase" -> "camel-case")
+func KebabCase(str string) string {
+ var result strings.Builder
+
+ for i, char := range str {
+ if i > 0 {
+ prevChar := rune(str[i-1])
+
+ // Add hyphen before uppercase letters
+ if unicode.IsUpper(char) &&
+ (unicode.IsLower(prevChar) || unicode.IsDigit(prevChar) ||
+ (i < len(str)-1 && unicode.IsLower(rune(str[i+1])))) {
+ result.WriteRune('-')
+ }
+ }
+ result.WriteRune(unicode.ToLower(char))
+ }
+
+ return result.String()
+}
diff --git a/app/format/field_test.go b/app/format/field_test.go
new file mode 100644
index 000000000..9ea843183
--- /dev/null
+++ b/app/format/field_test.go
@@ -0,0 +1,34 @@
+//go:build windows || darwin
+
+package format
+
+import "testing"
+
+func TestKebabCase(t *testing.T) {
+ tests := []struct {
+ input string
+ expected string
+ }{
+ {"already-kebab-case", "already-kebab-case"},
+ {"simpleCamelCase", "simple-camel-case"},
+ {"PascalCase", "pascal-case"},
+ {"camelCaseWithNumber123", "camel-case-with-number123"},
+ {"APIResponse", "api-response"},
+ {"mixedCASE", "mixed-case"},
+ {"WithACRONYMS", "with-acronyms"},
+ {"ALLCAPS", "allcaps"},
+ {"camelCaseWITHMixedACRONYMS", "camel-case-with-mixed-acronyms"},
+ {"numbers123in456string", "numbers123in456string"},
+ {"5", "5"},
+ {"S", "s"},
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.input, func(t *testing.T) {
+ result := KebabCase(tt.input)
+ if result != tt.expected {
+ t.Errorf("toKebabCase(%q) = %q, want %q", tt.input, result, tt.expected)
+ }
+ })
+ }
+}
diff --git a/app/lifecycle/getstarted_nonwindows.go b/app/lifecycle/getstarted_nonwindows.go
deleted file mode 100644
index 2af87ab92..000000000
--- a/app/lifecycle/getstarted_nonwindows.go
+++ /dev/null
@@ -1,9 +0,0 @@
-//go:build !windows
-
-package lifecycle
-
-import "errors"
-
-func GetStarted() error {
- return errors.New("not implemented")
-}
diff --git a/app/lifecycle/getstarted_windows.go b/app/lifecycle/getstarted_windows.go
deleted file mode 100644
index f39dc31c0..000000000
--- a/app/lifecycle/getstarted_windows.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package lifecycle
-
-import (
- "fmt"
- "log/slog"
- "os"
- "os/exec"
- "path/filepath"
- "syscall"
-)
-
-func GetStarted() error {
- const CREATE_NEW_CONSOLE = 0x00000010
- var err error
- bannerScript := filepath.Join(AppDir, "ollama_welcome.ps1")
- args := []string{
- // TODO once we're signed, the execution policy bypass should be removed
- "powershell", "-noexit", "-ExecutionPolicy", "Bypass", "-nologo", "-file", bannerScript,
- }
- args[0], err = exec.LookPath(args[0])
- if err != nil {
- return err
- }
-
- // Make sure the script actually exists
- _, err = os.Stat(bannerScript)
- if err != nil {
- return fmt.Errorf("getting started banner script error %s", err)
- }
-
- slog.Info(fmt.Sprintf("opening getting started terminal with %v", args))
- attrs := &os.ProcAttr{
- Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
- Sys: &syscall.SysProcAttr{CreationFlags: CREATE_NEW_CONSOLE, HideWindow: false},
- }
- proc, err := os.StartProcess(args[0], args, attrs)
- if err != nil {
- return fmt.Errorf("unable to start getting started shell %w", err)
- }
-
- slog.Debug(fmt.Sprintf("getting started terminal PID: %d", proc.Pid))
- return proc.Release()
-}
diff --git a/app/lifecycle/lifecycle.go b/app/lifecycle/lifecycle.go
deleted file mode 100644
index c24fe6462..000000000
--- a/app/lifecycle/lifecycle.go
+++ /dev/null
@@ -1,94 +0,0 @@
-package lifecycle
-
-import (
- "context"
- "fmt"
- "log"
- "log/slog"
- "os"
- "os/signal"
- "syscall"
-
- "github.com/ollama/ollama/app/store"
- "github.com/ollama/ollama/app/tray"
- "github.com/ollama/ollama/envconfig"
-)
-
-func Run() {
- InitLogging()
- slog.Info("app config", "env", envconfig.Values())
-
- ctx, cancel := context.WithCancel(context.Background())
- var done chan int
-
- t, err := tray.NewTray()
- if err != nil {
- log.Fatalf("Failed to start: %s", err)
- }
- callbacks := t.GetCallbacks()
-
- signals := make(chan os.Signal, 1)
- signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
-
- go func() {
- slog.Debug("starting callback loop")
- for {
- select {
- case <-callbacks.Quit:
- slog.Debug("quit called")
- t.Quit()
- case <-signals:
- slog.Debug("shutting down due to signal")
- t.Quit()
- case <-callbacks.Update:
- err := DoUpgrade(cancel, done)
- if err != nil {
- slog.Warn(fmt.Sprintf("upgrade attempt failed: %s", err))
- }
- case <-callbacks.ShowLogs:
- ShowLogs()
- case <-callbacks.DoFirstUse:
- err := GetStarted()
- if err != nil {
- slog.Warn(fmt.Sprintf("Failed to launch getting started shell: %s", err))
- }
- }
- }
- }()
-
- // Are we first use?
- if !store.GetFirstTimeRun() {
- slog.Debug("First time run")
- err = t.DisplayFirstUseNotification()
- if err != nil {
- slog.Debug(fmt.Sprintf("XXX failed to display first use notification %v", err))
- }
- store.SetFirstTimeRun(true)
- } else {
- slog.Debug("Not first time, skipping first run notification")
- }
-
- if IsServerRunning(ctx) {
- slog.Info("Detected another instance of ollama running, exiting")
- os.Exit(1)
- } else {
- done, err = SpawnServer(ctx, CLIName)
- if err != nil {
- // TODO - should we retry in a backoff loop?
- // TODO - should we pop up a warning and maybe add a menu item to view application logs?
- slog.Error(fmt.Sprintf("Failed to spawn ollama server %s", err))
- done = make(chan int, 1)
- done <- 1
- }
- }
-
- StartBackgroundUpdaterChecker(ctx, t.UpdateAvailable)
-
- t.Run()
- cancel()
- slog.Info("Waiting for ollama server to shutdown...")
- if done != nil {
- <-done
- }
- slog.Info("Ollama app exiting")
-}
diff --git a/app/lifecycle/logging.go b/app/lifecycle/logging.go
deleted file mode 100644
index 22e3de194..000000000
--- a/app/lifecycle/logging.go
+++ /dev/null
@@ -1,62 +0,0 @@
-package lifecycle
-
-import (
- "fmt"
- "log/slog"
- "os"
- "strconv"
- "strings"
-
- "github.com/ollama/ollama/envconfig"
- "github.com/ollama/ollama/logutil"
-)
-
-func InitLogging() {
- var logFile *os.File
- var err error
- // Detect if we're a GUI app on windows, and if not, send logs to console
- if os.Stderr.Fd() != 0 {
- // Console app detected
- logFile = os.Stderr
- // TODO - write one-line to the app.log file saying we're running in console mode to help avoid confusion
- } else {
- rotateLogs(AppLogFile)
- logFile, err = os.OpenFile(AppLogFile, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o755)
- if err != nil {
- slog.Error(fmt.Sprintf("failed to create server log %v", err))
- return
- }
- }
-
- slog.SetDefault(logutil.NewLogger(logFile, envconfig.LogLevel()))
- slog.Info("ollama app started")
-}
-
-func rotateLogs(logFile string) {
- if _, err := os.Stat(logFile); os.IsNotExist(err) {
- return
- }
- index := strings.LastIndex(logFile, ".")
- pre := logFile[:index]
- post := "." + logFile[index+1:]
- for i := LogRotationCount; i > 0; i-- {
- older := pre + "-" + strconv.Itoa(i) + post
- newer := pre + "-" + strconv.Itoa(i-1) + post
- if i == 1 {
- newer = pre + post
- }
- if _, err := os.Stat(newer); err == nil {
- if _, err := os.Stat(older); err == nil {
- err := os.Remove(older)
- if err != nil {
- slog.Warn("Failed to remove older log", "older", older, "error", err)
- continue
- }
- }
- err := os.Rename(newer, older)
- if err != nil {
- slog.Warn("Failed to rotate log", "older", older, "newer", newer, "error", err)
- }
- }
- }
-}
diff --git a/app/lifecycle/logging_nonwindows.go b/app/lifecycle/logging_nonwindows.go
deleted file mode 100644
index 205e47d77..000000000
--- a/app/lifecycle/logging_nonwindows.go
+++ /dev/null
@@ -1,9 +0,0 @@
-//go:build !windows
-
-package lifecycle
-
-import "log/slog"
-
-func ShowLogs() {
- slog.Warn("not implemented")
-}
diff --git a/app/lifecycle/logging_test.go b/app/lifecycle/logging_test.go
deleted file mode 100644
index 8d5cdf6e7..000000000
--- a/app/lifecycle/logging_test.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package lifecycle
-
-import (
- "os"
- "path/filepath"
- "strconv"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-)
-
-func TestRotateLogs(t *testing.T) {
- logDir := t.TempDir()
- logFile := filepath.Join(logDir, "testlog.log")
-
- // No log exists
- rotateLogs(logFile)
-
- require.NoError(t, os.WriteFile(logFile, []byte("1"), 0o644))
- assert.FileExists(t, logFile)
- // First rotation
- rotateLogs(logFile)
- assert.FileExists(t, filepath.Join(logDir, "testlog-1.log"))
- assert.NoFileExists(t, filepath.Join(logDir, "testlog-2.log"))
- assert.NoFileExists(t, logFile)
-
- // Should be a no-op without a new log
- rotateLogs(logFile)
- assert.FileExists(t, filepath.Join(logDir, "testlog-1.log"))
- assert.NoFileExists(t, filepath.Join(logDir, "testlog-2.log"))
- assert.NoFileExists(t, logFile)
-
- for i := 2; i <= LogRotationCount+1; i++ {
- require.NoError(t, os.WriteFile(logFile, []byte(strconv.Itoa(i)), 0o644))
- assert.FileExists(t, logFile)
- rotateLogs(logFile)
- assert.NoFileExists(t, logFile)
- for j := 1; j < i; j++ {
- assert.FileExists(t, filepath.Join(logDir, "testlog-"+strconv.Itoa(j)+".log"))
- }
- assert.NoFileExists(t, filepath.Join(logDir, "testlog-"+strconv.Itoa(i+1)+".log"))
- }
-}
diff --git a/app/lifecycle/logging_windows.go b/app/lifecycle/logging_windows.go
deleted file mode 100644
index 8f20337f5..000000000
--- a/app/lifecycle/logging_windows.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package lifecycle
-
-import (
- "fmt"
- "log/slog"
- "os/exec"
- "syscall"
-)
-
-func ShowLogs() {
- cmd_path := "c:\\Windows\\system32\\cmd.exe"
- slog.Debug(fmt.Sprintf("viewing logs with start %s", AppDataDir))
- cmd := exec.Command(cmd_path, "/c", "start", AppDataDir)
- cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: false, CreationFlags: 0x08000000}
- err := cmd.Start()
- if err != nil {
- slog.Error(fmt.Sprintf("Failed to open log dir: %s", err))
- }
-}
diff --git a/app/lifecycle/paths.go b/app/lifecycle/paths.go
deleted file mode 100644
index 42ae8267a..000000000
--- a/app/lifecycle/paths.go
+++ /dev/null
@@ -1,84 +0,0 @@
-package lifecycle
-
-import (
- "errors"
- "fmt"
- "log/slog"
- "os"
- "path/filepath"
- "runtime"
- "strings"
-)
-
-var (
- AppName = "ollama app"
- CLIName = "ollama"
- AppDir = "/opt/Ollama"
- AppDataDir = "/opt/Ollama"
- // TODO - should there be a distinct log dir?
- UpdateStageDir = "/tmp"
- AppLogFile = "/tmp/ollama_app.log"
- ServerLogFile = "/tmp/ollama.log"
- UpgradeLogFile = "/tmp/ollama_update.log"
- Installer = "OllamaSetup.exe"
- LogRotationCount = 5
-)
-
-func init() {
- if runtime.GOOS == "windows" {
- AppName += ".exe"
- CLIName += ".exe"
- // Logs, configs, downloads go to LOCALAPPDATA
- localAppData := os.Getenv("LOCALAPPDATA")
- AppDataDir = filepath.Join(localAppData, "Ollama")
- UpdateStageDir = filepath.Join(AppDataDir, "updates")
- AppLogFile = filepath.Join(AppDataDir, "app.log")
- ServerLogFile = filepath.Join(AppDataDir, "server.log")
- UpgradeLogFile = filepath.Join(AppDataDir, "upgrade.log")
-
- exe, err := os.Executable()
- if err != nil {
- slog.Warn("error discovering executable directory", "error", err)
- AppDir = filepath.Join(localAppData, "Programs", "Ollama")
- } else {
- AppDir = filepath.Dir(exe)
- }
-
- // Make sure we have PATH set correctly for any spawned children
- paths := strings.Split(os.Getenv("PATH"), ";")
- // Start with whatever we find in the PATH/LD_LIBRARY_PATH
- found := false
- for _, path := range paths {
- d, err := filepath.Abs(path)
- if err != nil {
- continue
- }
- if strings.EqualFold(AppDir, d) {
- found = true
- }
- }
- if !found {
- paths = append(paths, AppDir)
-
- pathVal := strings.Join(paths, ";")
- slog.Debug("setting PATH=" + pathVal)
- err := os.Setenv("PATH", pathVal)
- if err != nil {
- slog.Error(fmt.Sprintf("failed to update PATH: %s", err))
- }
- }
-
- // Make sure our logging dir exists
- _, err = os.Stat(AppDataDir)
- if errors.Is(err, os.ErrNotExist) {
- if err := os.MkdirAll(AppDataDir, 0o755); err != nil {
- slog.Error(fmt.Sprintf("create ollama dir %s: %v", AppDataDir, err))
- }
- }
- } else if runtime.GOOS == "darwin" {
- // TODO
- AppName += ".app"
- // } else if runtime.GOOS == "linux" {
- // TODO
- }
-}
diff --git a/app/lifecycle/server.go b/app/lifecycle/server.go
deleted file mode 100644
index f7aa20264..000000000
--- a/app/lifecycle/server.go
+++ /dev/null
@@ -1,186 +0,0 @@
-package lifecycle
-
-import (
- "context"
- "errors"
- "fmt"
- "io"
- "log/slog"
- "os"
- "os/exec"
- "path/filepath"
- "time"
-
- "github.com/ollama/ollama/api"
-)
-
-func getCLIFullPath(command string) string {
- var cmdPath string
- appExe, err := os.Executable()
- if err == nil {
- // Check both the same location as the tray app, as well as ./bin
- cmdPath = filepath.Join(filepath.Dir(appExe), command)
- _, err := os.Stat(cmdPath)
- if err == nil {
- return cmdPath
- }
- cmdPath = filepath.Join(filepath.Dir(appExe), "bin", command)
- _, err = os.Stat(cmdPath)
- if err == nil {
- return cmdPath
- }
- }
- cmdPath, err = exec.LookPath(command)
- if err == nil {
- _, err := os.Stat(cmdPath)
- if err == nil {
- return cmdPath
- }
- }
- pwd, err := os.Getwd()
- if err == nil {
- cmdPath = filepath.Join(pwd, command)
- _, err = os.Stat(cmdPath)
- if err == nil {
- return cmdPath
- }
- }
-
- return command
-}
-
-func start(ctx context.Context, command string) (*exec.Cmd, error) {
- cmd := getCmd(ctx, getCLIFullPath(command))
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- return nil, fmt.Errorf("failed to spawn server stdout pipe: %w", err)
- }
- stderr, err := cmd.StderrPipe()
- if err != nil {
- return nil, fmt.Errorf("failed to spawn server stderr pipe: %w", err)
- }
-
- rotateLogs(ServerLogFile)
- logFile, err := os.OpenFile(ServerLogFile, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o755)
- if err != nil {
- return nil, fmt.Errorf("failed to create server log: %w", err)
- }
-
- logDir := filepath.Dir(ServerLogFile)
- _, err = os.Stat(logDir)
- if err != nil {
- if !errors.Is(err, os.ErrNotExist) {
- return nil, fmt.Errorf("stat ollama server log dir %s: %v", logDir, err)
- }
-
- if err := os.MkdirAll(logDir, 0o755); err != nil {
- return nil, fmt.Errorf("create ollama server log dir %s: %v", logDir, err)
- }
- }
-
- go func() {
- defer logFile.Close()
- io.Copy(logFile, stdout) //nolint:errcheck
- }()
- go func() {
- defer logFile.Close()
- io.Copy(logFile, stderr) //nolint:errcheck
- }()
-
- // Re-wire context done behavior to attempt a graceful shutdown of the server
- cmd.Cancel = func() error {
- if cmd.Process != nil {
- err := terminate(cmd)
- if err != nil {
- slog.Warn("error trying to gracefully terminate server", "err", err)
- return cmd.Process.Kill()
- }
-
- tick := time.NewTicker(10 * time.Millisecond)
- defer tick.Stop()
-
- for {
- select {
- case <-tick.C:
- exited, err := isProcessExited(cmd.Process.Pid)
- if err != nil {
- return err
- }
-
- if exited {
- return nil
- }
- case <-time.After(5 * time.Second):
- slog.Warn("graceful server shutdown timeout, killing", "pid", cmd.Process.Pid)
- return cmd.Process.Kill()
- }
- }
- }
- return nil
- }
-
- // run the command and wait for it to finish
- if err := cmd.Start(); err != nil {
- return nil, fmt.Errorf("failed to start server %w", err)
- }
- if cmd.Process != nil {
- slog.Info(fmt.Sprintf("started ollama server with pid %d", cmd.Process.Pid))
- }
- slog.Info(fmt.Sprintf("ollama server logs %s", ServerLogFile))
-
- return cmd, nil
-}
-
-func SpawnServer(ctx context.Context, command string) (chan int, error) {
- done := make(chan int)
-
- go func() {
- // Keep the server running unless we're shuttind down the app
- crashCount := 0
- for {
- slog.Info("starting server...")
- cmd, err := start(ctx, command)
- if err != nil {
- crashCount++
- slog.Error(fmt.Sprintf("failed to start server %s", err))
- time.Sleep(500 * time.Millisecond * time.Duration(crashCount))
- continue
- }
-
- cmd.Wait() //nolint:errcheck
- var code int
- if cmd.ProcessState != nil {
- code = cmd.ProcessState.ExitCode()
- }
-
- select {
- case <-ctx.Done():
- slog.Info(fmt.Sprintf("server shutdown with exit code %d", code))
- done <- code
- return
- default:
- crashCount++
- slog.Warn(fmt.Sprintf("server crash %d - exit code %d - respawning", crashCount, code))
- time.Sleep(500 * time.Millisecond * time.Duration(crashCount))
- break
- }
- }
- }()
-
- return done, nil
-}
-
-func IsServerRunning(ctx context.Context) bool {
- client, err := api.ClientFromEnvironment()
- if err != nil {
- slog.Info("unable to connect to server")
- return false
- }
- err = client.Heartbeat(ctx)
- if err != nil {
- slog.Debug(fmt.Sprintf("heartbeat from server: %s", err))
- slog.Info("unable to connect to server")
- return false
- }
- return true
-}
diff --git a/app/lifecycle/server_unix.go b/app/lifecycle/server_unix.go
deleted file mode 100644
index 705739134..000000000
--- a/app/lifecycle/server_unix.go
+++ /dev/null
@@ -1,38 +0,0 @@
-//go:build !windows
-
-package lifecycle
-
-import (
- "context"
- "errors"
- "fmt"
- "os"
- "os/exec"
- "syscall"
-)
-
-func getCmd(ctx context.Context, cmd string) *exec.Cmd {
- return exec.CommandContext(ctx, cmd, "serve")
-}
-
-func terminate(cmd *exec.Cmd) error {
- return cmd.Process.Signal(os.Interrupt)
-}
-
-func isProcessExited(pid int) (bool, error) {
- proc, err := os.FindProcess(pid)
- if err != nil {
- return false, fmt.Errorf("failed to find process: %v", err)
- }
-
- err = proc.Signal(syscall.Signal(0))
- if err != nil {
- if errors.Is(err, os.ErrProcessDone) || errors.Is(err, syscall.ESRCH) {
- return true, nil
- }
-
- return false, fmt.Errorf("error signaling process: %v", err)
- }
-
- return false, nil
-}
diff --git a/app/lifecycle/server_windows.go b/app/lifecycle/server_windows.go
deleted file mode 100644
index 5f9fe1246..000000000
--- a/app/lifecycle/server_windows.go
+++ /dev/null
@@ -1,91 +0,0 @@
-package lifecycle
-
-import (
- "context"
- "fmt"
- "os/exec"
- "syscall"
-
- "golang.org/x/sys/windows"
-)
-
-func getCmd(ctx context.Context, exePath string) *exec.Cmd {
- cmd := exec.CommandContext(ctx, exePath, "serve")
- cmd.SysProcAttr = &syscall.SysProcAttr{
- HideWindow: true,
- CreationFlags: windows.CREATE_NEW_PROCESS_GROUP,
- }
-
- return cmd
-}
-
-func terminate(cmd *exec.Cmd) error {
- dll, err := windows.LoadDLL("kernel32.dll")
- if err != nil {
- return err
- }
- //nolint:errcheck
- defer dll.Release()
-
- pid := cmd.Process.Pid
-
- f, err := dll.FindProc("AttachConsole")
- if err != nil {
- return err
- }
-
- r1, _, err := f.Call(uintptr(pid))
- if r1 == 0 && err != syscall.ERROR_ACCESS_DENIED {
- return err
- }
-
- f, err = dll.FindProc("SetConsoleCtrlHandler")
- if err != nil {
- return err
- }
-
- r1, _, err = f.Call(0, 1)
- if r1 == 0 {
- return err
- }
-
- f, err = dll.FindProc("GenerateConsoleCtrlEvent")
- if err != nil {
- return err
- }
-
- r1, _, err = f.Call(windows.CTRL_BREAK_EVENT, uintptr(pid))
- if r1 == 0 {
- return err
- }
-
- r1, _, err = f.Call(windows.CTRL_C_EVENT, uintptr(pid))
- if r1 == 0 {
- return err
- }
-
- return nil
-}
-
-const STILL_ACTIVE = 259
-
-func isProcessExited(pid int) (bool, error) {
- hProcess, err := windows.OpenProcess(windows.PROCESS_QUERY_INFORMATION, false, uint32(pid))
- if err != nil {
- return false, fmt.Errorf("failed to open process: %v", err)
- }
- //nolint:errcheck
- defer windows.CloseHandle(hProcess)
-
- var exitCode uint32
- err = windows.GetExitCodeProcess(hProcess, &exitCode)
- if err != nil {
- return false, fmt.Errorf("failed to get exit code: %v", err)
- }
-
- if exitCode == STILL_ACTIVE {
- return false, nil
- }
-
- return true, nil
-}
diff --git a/app/lifecycle/updater_nonwindows.go b/app/lifecycle/updater_nonwindows.go
deleted file mode 100644
index 1d2dda801..000000000
--- a/app/lifecycle/updater_nonwindows.go
+++ /dev/null
@@ -1,12 +0,0 @@
-//go:build !windows
-
-package lifecycle
-
-import (
- "context"
- "errors"
-)
-
-func DoUpgrade(cancel context.CancelFunc, done chan int) error {
- return errors.New("not implemented")
-}
diff --git a/app/lifecycle/updater_windows.go b/app/lifecycle/updater_windows.go
deleted file mode 100644
index 293dd6038..000000000
--- a/app/lifecycle/updater_windows.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package lifecycle
-
-import (
- "context"
- "errors"
- "fmt"
- "log/slog"
- "os"
- "os/exec"
- "path/filepath"
-)
-
-func DoUpgrade(cancel context.CancelFunc, done chan int) error {
- files, err := filepath.Glob(filepath.Join(UpdateStageDir, "*", "*.exe")) // TODO generalize for multiplatform
- if err != nil {
- return fmt.Errorf("failed to lookup downloads: %s", err)
- }
- if len(files) == 0 {
- return errors.New("no update downloads found")
- } else if len(files) > 1 {
- // Shouldn't happen
- slog.Warn(fmt.Sprintf("multiple downloads found, using first one %v", files))
- }
- installerExe := files[0]
-
- slog.Info("starting upgrade with " + installerExe)
- slog.Info("upgrade log file " + UpgradeLogFile)
-
- // make the upgrade show progress, but non interactive
- installArgs := []string{
- "/CLOSEAPPLICATIONS", // Quit the tray app if it's still running
- "/LOG=" + filepath.Base(UpgradeLogFile), // Only relative seems reliable, so set pwd
- "/FORCECLOSEAPPLICATIONS", // Force close the tray app - might be needed
- "/SP", // Skip the "This will install... Do you wish to continue" prompt
- "/NOCANCEL", // Disable the ability to cancel upgrade mid-flight to avoid partially installed upgrades
- "/SILENT",
- }
-
- // Safeguard in case we have requests in flight that need to drain...
- slog.Info("Waiting for server to shutdown")
- cancel()
- if done != nil {
- <-done
- } else {
- // Shouldn't happen
- slog.Warn("done chan was nil, not actually waiting")
- }
-
- slog.Debug(fmt.Sprintf("starting installer: %s %v", installerExe, installArgs))
- os.Chdir(filepath.Dir(UpgradeLogFile)) //nolint:errcheck
- cmd := exec.Command(installerExe, installArgs...)
-
- if err := cmd.Start(); err != nil {
- return fmt.Errorf("unable to start ollama app %w", err)
- }
-
- if cmd.Process != nil {
- err = cmd.Process.Release()
- if err != nil {
- slog.Error(fmt.Sprintf("failed to release server process: %s", err))
- }
- } else {
- // TODO - some details about why it didn't start, or is this a pedantic error case?
- return errors.New("installer process did not start")
- }
-
- // TODO should we linger for a moment and check to make sure it's actually running by checking the pid?
-
- slog.Info("Installer started in background, exiting")
-
- os.Exit(0)
- // Not reached
- return nil
-}
diff --git a/app/logrotate/logrotate.go b/app/logrotate/logrotate.go
new file mode 100644
index 000000000..df8ba9c01
--- /dev/null
+++ b/app/logrotate/logrotate.go
@@ -0,0 +1,45 @@
+//go:build windows || darwin
+
+// package logrotate provides utilities for rotating logs
+// TODO (jmorgan): this most likely doesn't need it's own
+// package and can be moved to app where log files are created
+package logrotate
+
+import (
+ "log/slog"
+ "os"
+ "strconv"
+ "strings"
+)
+
+const MaxLogFiles = 5
+
+func Rotate(filename string) {
+ if _, err := os.Stat(filename); os.IsNotExist(err) {
+ return
+ }
+
+ index := strings.LastIndex(filename, ".")
+ pre := filename[:index]
+ post := "." + filename[index+1:]
+ for i := MaxLogFiles; i > 0; i-- {
+ older := pre + "-" + strconv.Itoa(i) + post
+ newer := pre + "-" + strconv.Itoa(i-1) + post
+ if i == 1 {
+ newer = pre + post
+ }
+ if _, err := os.Stat(newer); err == nil {
+ if _, err := os.Stat(older); err == nil {
+ err := os.Remove(older)
+ if err != nil {
+ slog.Warn("Failed to remove older log", "older", older, "error", err)
+ continue
+ }
+ }
+ err := os.Rename(newer, older)
+ if err != nil {
+ slog.Warn("Failed to rotate log", "older", older, "newer", newer, "error", err)
+ }
+ }
+ }
+}
diff --git a/app/logrotate/logrotate_test.go b/app/logrotate/logrotate_test.go
new file mode 100644
index 000000000..5eef5b4f1
--- /dev/null
+++ b/app/logrotate/logrotate_test.go
@@ -0,0 +1,70 @@
+//go:build windows || darwin
+
+package logrotate
+
+import (
+ "os"
+ "path/filepath"
+ "strconv"
+ "testing"
+)
+
+func TestRotate(t *testing.T) {
+ logDir := t.TempDir()
+ logFile := filepath.Join(logDir, "testlog.log")
+
+ // No log exists
+ Rotate(logFile)
+
+ if err := os.WriteFile(logFile, []byte("1"), 0o644); err != nil {
+ t.Fatal(err)
+ }
+ if _, err := os.Stat(logFile); os.IsNotExist(err) {
+ t.Fatal("expected log file to exist")
+ }
+
+ // First rotation
+ Rotate(logFile)
+ if _, err := os.Stat(filepath.Join(logDir, "testlog-1.log")); os.IsNotExist(err) {
+ t.Fatal("expected rotated log file to exist")
+ }
+ if _, err := os.Stat(filepath.Join(logDir, "testlog-2.log")); !os.IsNotExist(err) {
+ t.Fatal("expected no second rotated log file")
+ }
+ if _, err := os.Stat(logFile); !os.IsNotExist(err) {
+ t.Fatal("expected original log file to be moved")
+ }
+
+ // Should be a no-op without a new log
+ Rotate(logFile)
+ if _, err := os.Stat(filepath.Join(logDir, "testlog-1.log")); os.IsNotExist(err) {
+ t.Fatal("expected rotated log file to still exist")
+ }
+ if _, err := os.Stat(filepath.Join(logDir, "testlog-2.log")); !os.IsNotExist(err) {
+ t.Fatal("expected no second rotated log file")
+ }
+ if _, err := os.Stat(logFile); !os.IsNotExist(err) {
+ t.Fatal("expected no original log file")
+ }
+
+ for i := 2; i <= MaxLogFiles+1; i++ {
+ if err := os.WriteFile(logFile, []byte(strconv.Itoa(i)), 0o644); err != nil {
+ t.Fatal(err)
+ }
+ if _, err := os.Stat(logFile); os.IsNotExist(err) {
+ t.Fatal("expected log file to exist")
+ }
+ Rotate(logFile)
+ if _, err := os.Stat(logFile); !os.IsNotExist(err) {
+ t.Fatal("expected log file to be moved")
+ }
+ for j := 1; j < i; j++ {
+ if _, err := os.Stat(filepath.Join(logDir, "testlog-"+strconv.Itoa(j)+".log")); os.IsNotExist(err) {
+ t.Fatalf("expected rotated log file %d to exist", j)
+ }
+ }
+ if _, err := os.Stat(filepath.Join(logDir, "testlog-"+strconv.Itoa(i+1)+".log")); !os.IsNotExist(err) {
+ t.Fatalf("expected no rotated log file %d", i+1)
+ }
+ }
+}
diff --git a/app/main.go b/app/main.go
deleted file mode 100644
index db8297954..000000000
--- a/app/main.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package main
-
-// Compile with the following to get rid of the cmd pop up on windows
-// go build -ldflags="-H windowsgui" .
-
-import (
- "github.com/ollama/ollama/app/lifecycle"
-)
-
-func main() {
- lifecycle.Run()
-}
diff --git a/app/ollama.iss b/app/ollama.iss
index d575fc7f6..2f2aa230d 100644
--- a/app/ollama.iss
+++ b/app/ollama.iss
@@ -37,8 +37,10 @@ PrivilegesRequired=lowest
OutputBaseFilename="OllamaSetup"
SetupIconFile={#MyIcon}
UninstallDisplayIcon={uninstallexe}
-Compression=lzma2
-SolidCompression=no
+Compression=lzma2/ultra64
+LZMAUseSeparateProcess=yes
+LZMANumBlockThreads=8
+SolidCompression=yes
WizardStyle=modern
ChangesEnvironment=yes
OutputDir=..\dist\
@@ -46,7 +48,7 @@ OutputDir=..\dist\
; Disable logging once everything's battle tested
; Filename will be %TEMP%\Setup Log*.txt
SetupLogging=yes
-CloseApplications=yes
+CloseApplications=no
RestartApplications=no
RestartIfNeededByRun=no
@@ -68,7 +70,6 @@ DisableFinishedPage=yes
DisableReadyMemo=yes
DisableReadyPage=yes
DisableStartupPrompt=yes
-DisableWelcomePage=yes
; TODO - percentage can't be set less than 100, so how to make it shorter?
; WizardSizePercent=100,80
@@ -87,30 +88,42 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
DialogFontSize=12
[Files]
-#if DirExists("..\dist\windows-amd64")
-Source: "..\dist\windows-amd64-app.exe"; DestDir: "{app}"; DestName: "{#MyAppExeName}" ;Check: not IsArm64(); Flags: ignoreversion 64bit
-Source: "..\dist\windows-amd64\ollama.exe"; DestDir: "{app}"; Check: not IsArm64(); Flags: ignoreversion 64bit
+#if FileExists("..\dist\windows-ollama-app-amd64.exe")
+Source: "..\dist\windows-ollama-app-amd64.exe"; DestDir: "{app}"; DestName: "{#MyAppExeName}" ;Check: not IsArm64(); Flags: ignoreversion 64bit; BeforeInstall: TaskKill('{#MyAppExeName}')
+Source: "..\dist\windows-amd64\vc_redist.x64.exe"; DestDir: "{tmp}"; Check: not IsArm64() and vc_redist_needed(); Flags: deleteafterinstall
+Source: "..\dist\windows-amd64\ollama.exe"; DestDir: "{app}"; Check: not IsArm64(); Flags: ignoreversion 64bit; BeforeInstall: TaskKill('ollama.exe')
Source: "..\dist\windows-amd64\lib\ollama\*"; DestDir: "{app}\lib\ollama\"; Check: not IsArm64(); Flags: ignoreversion 64bit recursesubdirs
#endif
-#if DirExists("..\dist\windows-arm64")
-Source: "..\dist\windows-arm64\vc_redist.arm64.exe"; DestDir: "{tmp}"; Check: IsArm64() and vc_redist_needed(); Flags: deleteafterinstall
-Source: "..\dist\windows-arm64-app.exe"; DestDir: "{app}"; DestName: "{#MyAppExeName}" ;Check: IsArm64(); Flags: ignoreversion 64bit
-Source: "..\dist\windows-arm64\ollama.exe"; DestDir: "{app}"; Check: IsArm64(); Flags: ignoreversion 64bit
+; For local development, rely on binary compatibility at runtime since we can't cross compile
+#if FileExists("..\dist\windows-ollama-app-arm64.exe")
+Source: "..\dist\windows-ollama-app-arm64.exe"; DestDir: "{app}"; DestName: "{#MyAppExeName}" ;Check: IsArm64(); Flags: ignoreversion 64bit; BeforeInstall: TaskKill('{#MyAppExeName}')
+#else
+Source: "..\dist\windows-ollama-app-amd64.exe"; DestDir: "{app}"; DestName: "{#MyAppExeName}" ;Check: IsArm64(); Flags: ignoreversion 64bit; BeforeInstall: TaskKill('{#MyAppExeName}')
+#endif
+
+#if FileExists("..\dist\windows-arm64\ollama.exe")
+Source: "..\dist\windows-arm64\vc_redist.arm64.exe"; DestDir: "{tmp}"; Check: IsArm64() and vc_redist_needed(); Flags: deleteafterinstall
+Source: "..\dist\windows-arm64\ollama.exe"; DestDir: "{app}"; Check: IsArm64(); Flags: ignoreversion 64bit; BeforeInstall: TaskKill('ollama.exe')
#endif
-Source: "..\dist\ollama_welcome.ps1"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\assets\app.ico"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
-Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
+Name: "{app}\lib\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
Name: "{userprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
+[InstallDelete]
+Type: files; Name: "{%LOCALAPPDATA}\Ollama\updates"
+
[Run]
#if DirExists("..\dist\windows-arm64")
Filename: "{tmp}\vc_redist.arm64.exe"; Parameters: "/install /passive /norestart"; Check: IsArm64() and vc_redist_needed(); StatusMsg: "Installing VC++ Redistributables..."; Flags: waituntilterminated
#endif
+#if DirExists("..\dist\windows-amd64")
+Filename: "{tmp}\vc_redist.x64.exe"; Parameters: "/install /passive /norestart"; Check: not IsArm64() and vc_redist_needed(); StatusMsg: "Installing VC++ Redistributables..."; Flags: waituntilterminated
+#endif
Filename: "{cmd}"; Parameters: "/C set PATH={app};%PATH% & ""{app}\{#MyAppExeName}"""; Flags: postinstall nowait runhidden
[UninstallRun]
@@ -126,13 +139,13 @@ Filename: "{cmd}"; Parameters: "/c timeout 5"; Flags: runhidden
Type: filesandordirs; Name: "{%TEMP}\ollama*"
Type: filesandordirs; Name: "{%LOCALAPPDATA}\Ollama"
Type: filesandordirs; Name: "{%LOCALAPPDATA}\Programs\Ollama"
-Type: filesandordirs; Name: "{%USERPROFILE}\.ollama\models"
Type: filesandordirs; Name: "{%USERPROFILE}\.ollama\history"
+Type: filesandordirs; Name: "{userstartup}\{#MyAppName}.lnk"
; NOTE: if the user has a custom OLLAMA_MODELS it will be preserved
[InstallDelete]
Type: filesandordirs; Name: "{%TEMP}\ollama*"
-Type: filesandordirs; Name: "{%LOCALAPPDATA}\Programs\Ollama"
+Type: filesandordirs; Name: "{app}\lib\ollama"
[Messages]
WizardReady=Ollama
@@ -148,6 +161,10 @@ SetupAppRunningError=Another Ollama installer is running.%n%nPlease cancel or fi
Root: HKCU; Subkey: "Environment"; \
ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}"; \
Check: NeedsAddPath('{app}')
+; Register ollama:// URL protocol
+Root: HKCU; Subkey: "Software\Classes\ollama"; ValueType: string; ValueName: ""; ValueData: "URL:Ollama Protocol"; Flags: uninsdeletekey
+Root: HKCU; Subkey: "Software\Classes\ollama"; ValueType: string; ValueName: "URL Protocol"; ValueData: ""; Flags: uninsdeletekey
+Root: HKCU; Subkey: "Software\Classes\ollama\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
[Code]
@@ -182,7 +199,11 @@ var
v3: Cardinal;
v4: Cardinal;
begin
- sRegKey := 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\arm64';
+ if (IsArm64()) then begin
+ sRegKey := 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\arm64';
+ end else begin
+ sRegKey := 'SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64';
+ end;
if (RegQueryDWordValue (HKEY_LOCAL_MACHINE, sRegKey, 'Major', v1) and
RegQueryDWordValue (HKEY_LOCAL_MACHINE, sRegKey, 'Minor', v2) and
RegQueryDWordValue (HKEY_LOCAL_MACHINE, sRegKey, 'Bld', v3) and
@@ -202,3 +223,152 @@ begin
else
Result := TRUE;
end;
+
+function GetDirSize(Path: String): Int64;
+var
+ FindRec: TFindRec;
+ FilePath: string;
+ Size: Int64;
+begin
+ if FindFirst(Path + '\*', FindRec) then begin
+ Result := 0;
+ try
+ repeat
+ if (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin
+ FilePath := Path + '\' + FindRec.Name;
+ if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then begin
+ Size := GetDirSize(FilePath);
+ end else begin
+ Size := Int64(FindRec.SizeHigh) shl 32 + FindRec.SizeLow;
+ end;
+ Result := Result + Size;
+ end;
+ until not FindNext(FindRec);
+ finally
+ FindClose(FindRec);
+ end;
+ end else begin
+ Log(Format('Failed to list %s', [Path]));
+ Result := -1;
+ end;
+end;
+
+var
+ DeleteModelsChecked: Boolean;
+ ModelsDir: string;
+
+procedure InitializeUninstallProgressForm();
+var
+ UninstallPage: TNewNotebookPage;
+ UninstallButton: TNewButton;
+ DeleteModelsCheckbox: TNewCheckBox;
+ OriginalPageNameLabel: string;
+ OriginalPageDescriptionLabel: string;
+ OriginalCancelButtonEnabled: Boolean;
+ OriginalCancelButtonModalResult: Integer;
+ ctrl: TWinControl;
+ ModelDirA: AnsiString;
+ ModelsSize: Int64;
+begin
+ if not UninstallSilent then begin
+ ctrl := UninstallProgressForm.CancelButton;
+ UninstallButton := TNewButton.Create(UninstallProgressForm);
+ UninstallButton.Parent := UninstallProgressForm;
+ UninstallButton.Left := ctrl.Left - ctrl.Width - ScaleX(10);
+ UninstallButton.Top := ctrl.Top;
+ UninstallButton.Width := ctrl.Width;
+ UninstallButton.Height := ctrl.Height;
+ UninstallButton.TabOrder := ctrl.TabOrder;
+ UninstallButton.Caption := 'Uninstall';
+ UninstallButton.ModalResult := mrOK;
+ UninstallProgressForm.CancelButton.TabOrder := UninstallButton.TabOrder + 1;
+ UninstallPage := TNewNotebookPage.Create(UninstallProgressForm);
+ UninstallPage.Notebook := UninstallProgressForm.InnerNotebook;
+ UninstallPage.Parent := UninstallProgressForm.InnerNotebook;
+ UninstallPage.Align := alClient;
+ UninstallProgressForm.InnerNotebook.ActivePage := UninstallPage;
+
+ ctrl := UninstallProgressForm.StatusLabel;
+ with TNewStaticText.Create(UninstallProgressForm) do begin
+ Parent := UninstallPage;
+ Top := ctrl.Top;
+ Left := ctrl.Left;
+ Width := ctrl.Width;
+ Height := ctrl.Height;
+ AutoSize := False;
+ ShowAccelChar := False;
+ Caption := '';
+ end;
+
+ if (DirExists(GetEnv('USERPROFILE') + '\.ollama\models\blobs')) then begin
+ ModelsDir := GetEnv('USERPROFILE') + '\.ollama\models';
+ ModelsSize := GetDirSize(ModelsDir);
+ end;
+
+ DeleteModelsCheckbox := TNewCheckBox.Create(UninstallProgressForm);
+ DeleteModelsCheckbox.Parent := UninstallPage;
+ DeleteModelsCheckbox.Top := ctrl.Top + ScaleY(30);
+ DeleteModelsCheckbox.Left := ctrl.Left;
+ DeleteModelsCheckbox.Width := ScaleX(300);
+ if ModelsSize > 1024*1024*1024 then begin
+ DeleteModelsCheckbox.Caption := 'Remove models (' + IntToStr(ModelsSize/(1024*1024*1024)) + ' GB) ' + ModelsDir;
+ end else if ModelsSize > 1024*1024 then begin
+ DeleteModelsCheckbox.Caption := 'Remove models (' + IntToStr(ModelsSize/(1024*1024)) + ' MB) ' + ModelsDir;
+ end else begin
+ DeleteModelsCheckbox.Caption := 'Remove models ' + ModelsDir;
+ end;
+ DeleteModelsCheckbox.Checked := True;
+
+ OriginalPageNameLabel := UninstallProgressForm.PageNameLabel.Caption;
+ OriginalPageDescriptionLabel := UninstallProgressForm.PageDescriptionLabel.Caption;
+ OriginalCancelButtonEnabled := UninstallProgressForm.CancelButton.Enabled;
+ OriginalCancelButtonModalResult := UninstallProgressForm.CancelButton.ModalResult;
+
+ UninstallProgressForm.PageNameLabel.Caption := '';
+ UninstallProgressForm.PageDescriptionLabel.Caption := '';
+ UninstallProgressForm.CancelButton.Enabled := True;
+ UninstallProgressForm.CancelButton.ModalResult := mrCancel;
+
+ if UninstallProgressForm.ShowModal = mrCancel then Abort;
+
+ UninstallButton.Visible := False;
+ UninstallProgressForm.PageNameLabel.Caption := OriginalPageNameLabel;
+ UninstallProgressForm.PageDescriptionLabel.Caption := OriginalPageDescriptionLabel;
+ UninstallProgressForm.CancelButton.Enabled := OriginalCancelButtonEnabled;
+ UninstallProgressForm.CancelButton.ModalResult := OriginalCancelButtonModalResult;
+
+ UninstallProgressForm.InnerNotebook.ActivePage := UninstallProgressForm.InstallingPage;
+
+ if DeleteModelsCheckbox.Checked then begin
+ DeleteModelsChecked:=True;
+ end else begin
+ DeleteModelsChecked:=False;
+ end;
+ end;
+end;
+
+procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
+begin
+ if CurUninstallStep = usDone then begin
+ if DeleteModelsChecked then begin
+ Log('user requested model cleanup');
+ if (VarIsEmpty(ModelsDir)) then begin
+ Log('cleaning up home directory models')
+ DelTree(GetEnv('USERPROFILE') + '\.ollama\models', True, True, True);
+ end else begin
+ Log('cleaning up custom directory models ' + ModelsDir)
+ DelTree(ModelsDir + '\blobs', True, True, True);
+ DelTree(ModelsDir + '\manifests', True, True, True);
+ end;
+ end else begin
+ Log('user requested to preserve model dir');
+ end;
+ end;
+end;
+
+procedure TaskKill(FileName: String);
+var
+ ResultCode: Integer;
+begin
+ Exec('taskkill.exe', '/f /im ' + '"' + FileName + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
+end;
diff --git a/app/ollama_welcome.ps1 b/app/ollama_welcome.ps1
deleted file mode 100644
index e96957486..000000000
--- a/app/ollama_welcome.ps1
+++ /dev/null
@@ -1,8 +0,0 @@
-# TODO - consider ANSI colors and maybe ASCII art...
-write-host ""
-write-host "Welcome to Ollama!"
-write-host ""
-write-host "Run your first model:"
-write-host ""
-write-host "`tollama run llama3.2"
-write-host ""
\ No newline at end of file
diff --git a/app/server/server.go b/app/server/server.go
new file mode 100644
index 000000000..2e0c2d1ed
--- /dev/null
+++ b/app/server/server.go
@@ -0,0 +1,355 @@
+//go:build windows || darwin
+
+package server
+
+import (
+ "bufio"
+ "context"
+ "errors"
+ "fmt"
+ "io"
+ "log/slog"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "regexp"
+ "runtime"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/ollama/ollama/app/logrotate"
+ "github.com/ollama/ollama/app/store"
+)
+
+const restartDelay = time.Second
+
+// Server is a managed ollama server process
+type Server struct {
+ store *store.Store
+ bin string // resolved path to `ollama`
+ log io.WriteCloser
+ dev bool // true if running with the dev flag
+}
+
+type InferenceCompute struct {
+ Library string
+ Variant string
+ Compute string
+ Driver string
+ Name string
+ VRAM string
+}
+
+func New(s *store.Store, devMode bool) *Server {
+ p := resolvePath("ollama")
+ return &Server{store: s, bin: p, dev: devMode}
+}
+
+func resolvePath(name string) string {
+ // look in the app bundle first
+ if exe, _ := os.Executable(); exe != "" {
+ var dir string
+ if runtime.GOOS == "windows" {
+ dir = filepath.Dir(exe)
+ } else {
+ dir = filepath.Join(filepath.Dir(exe), "..", "Resources")
+ }
+ if _, err := os.Stat(filepath.Join(dir, name)); err == nil {
+ return filepath.Join(dir, name)
+ }
+ }
+
+ // check the development dist path
+ for _, path := range []string{
+ filepath.Join("dist", runtime.GOOS, name),
+ filepath.Join("dist", runtime.GOOS+"-"+runtime.GOARCH, name),
+ } {
+ if _, err := os.Stat(path); err == nil {
+ return path
+ }
+ }
+
+ // fallback to system path
+ if p, _ := exec.LookPath(name); p != "" {
+ return p
+ }
+
+ return name
+}
+
+// cleanup checks the pid file for a running ollama process
+// and shuts it down gracefully if it is running
+func cleanup() error {
+ data, err := os.ReadFile(pidFile)
+ if err != nil {
+ if os.IsNotExist(err) {
+ return nil
+ }
+ return err
+ }
+ defer os.Remove(pidFile)
+
+ pid, err := strconv.Atoi(strings.TrimSpace(string(data)))
+ if err != nil {
+ return err
+ }
+
+ proc, err := os.FindProcess(pid)
+ if err != nil {
+ return nil
+ }
+
+ ok, err := terminated(pid)
+ if err != nil {
+ slog.Debug("cleanup: error checking if terminated", "pid", pid, "err", err)
+ }
+ if ok {
+ return nil
+ }
+
+ slog.Info("detected previous ollama process, cleaning up", "pid", pid)
+ return stop(proc)
+}
+
+// stop waits for a process with the provided pid to exit by polling
+// `terminated(pid)`. If the process has not exited within 5 seconds, it logs a
+// warning and kills the process.
+func stop(proc *os.Process) error {
+ if proc == nil {
+ return nil
+ }
+
+ if err := terminate(proc); err != nil {
+ slog.Warn("graceful terminate failed, killing", "err", err)
+ return proc.Kill()
+ }
+
+ deadline := time.NewTimer(5 * time.Second)
+ defer deadline.Stop()
+
+ for {
+ select {
+ case <-deadline.C:
+ slog.Warn("timeout waiting for graceful shutdown; killing", "pid", proc.Pid)
+ return proc.Kill()
+ default:
+ ok, err := terminated(proc.Pid)
+ if err != nil {
+ slog.Error("error checking if ollama process is terminated", "err", err)
+ return err
+ }
+ if ok {
+ return nil
+ }
+ time.Sleep(10 * time.Millisecond)
+ }
+ }
+}
+
+func (s *Server) Run(ctx context.Context) error {
+ l, err := openRotatingLog()
+ if err != nil {
+ return err
+ }
+ s.log = l
+ defer s.log.Close()
+
+ if err := cleanup(); err != nil {
+ slog.Warn("failed to cleanup previous ollama process", "err", err)
+ }
+
+ reaped := false
+ for ctx.Err() == nil {
+ select {
+ case <-ctx.Done():
+ return ctx.Err()
+ case <-time.After(restartDelay):
+ }
+
+ cmd, err := s.cmd(ctx)
+ if err != nil {
+ return err
+ }
+
+ if err := cmd.Start(); err != nil {
+ return err
+ }
+
+ err = os.WriteFile(pidFile, []byte(strconv.Itoa(cmd.Process.Pid)), 0o644)
+ if err != nil {
+ slog.Warn("failed to write pid file", "file", pidFile, "err", err)
+ }
+
+ if err = cmd.Wait(); err != nil && !errors.Is(err, context.Canceled) {
+ var exitErr *exec.ExitError
+ if errors.As(err, &exitErr) && exitErr.ExitCode() == 1 && !s.dev && !reaped {
+ reaped = true
+ // This could be a port conflict, try to kill any existing ollama processes
+ if err := reapServers(); err != nil {
+ slog.Warn("failed to stop existing ollama server", "err", err)
+ } else {
+ slog.Debug("conflicting server stopped, waiting for port to be released")
+ continue
+ }
+ }
+ slog.Error("ollama exited", "err", err)
+ }
+ }
+ return ctx.Err()
+}
+
+func (s *Server) cmd(ctx context.Context) (*exec.Cmd, error) {
+ settings, err := s.store.Settings()
+ if err != nil {
+ return nil, err
+ }
+
+ cmd := commandContext(ctx, s.bin, "serve")
+ cmd.Stdout, cmd.Stderr = s.log, s.log
+
+ // Copy and mutate the environment to merge in settings the user has specified without dups
+ env := map[string]string{}
+ for _, kv := range os.Environ() {
+ s := strings.SplitN(kv, "=", 2)
+ env[s[0]] = s[1]
+ }
+ if settings.Expose {
+ env["OLLAMA_HOST"] = "0.0.0.0"
+ }
+ if settings.Browser {
+ env["OLLAMA_ORIGINS"] = "*"
+ }
+ if settings.Models != "" {
+ if _, err := os.Stat(settings.Models); err == nil {
+ env["OLLAMA_MODELS"] = settings.Models
+ } else {
+ slog.Warn("models path not accessible, using default", "path", settings.Models, "err", err)
+ }
+ }
+ if settings.ContextLength > 0 {
+ env["OLLAMA_CONTEXT_LENGTH"] = strconv.Itoa(settings.ContextLength)
+ }
+ cmd.Env = []string{}
+ for k, v := range env {
+ cmd.Env = append(cmd.Env, k+"="+v)
+ }
+
+ cmd.Cancel = func() error {
+ if cmd.Process == nil {
+ return nil
+ }
+ return stop(cmd.Process)
+ }
+
+ return cmd, nil
+}
+
+func openRotatingLog() (io.WriteCloser, error) {
+ // TODO consider rotation based on size or time, not just every server invocation
+ dir := filepath.Dir(serverLogPath)
+ if err := os.MkdirAll(dir, 0o755); err != nil {
+ return nil, fmt.Errorf("create log directory: %w", err)
+ }
+
+ logrotate.Rotate(serverLogPath)
+ f, err := os.OpenFile(serverLogPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o644)
+ if err != nil {
+ return nil, fmt.Errorf("open log file: %w", err)
+ }
+ return f, nil
+}
+
+// Attempt to retrieve inference compute information from the server
+// log. Set ctx to timeout to control how long to wait for the logs to appear
+func GetInferenceComputer(ctx context.Context) ([]InferenceCompute, error) {
+ inference := []InferenceCompute{}
+ marker := regexp.MustCompile(`inference compute.*library=`)
+ q := `inference compute.*%s=["]([^"]*)["]`
+ nq := `inference compute.*%s=(\S+)\s`
+ type regex struct {
+ q *regexp.Regexp
+ nq *regexp.Regexp
+ }
+ regexes := map[string]regex{
+ "library": {
+ q: regexp.MustCompile(fmt.Sprintf(q, "library")),
+ nq: regexp.MustCompile(fmt.Sprintf(nq, "library")),
+ },
+ "variant": {
+ q: regexp.MustCompile(fmt.Sprintf(q, "variant")),
+ nq: regexp.MustCompile(fmt.Sprintf(nq, "variant")),
+ },
+ "compute": {
+ q: regexp.MustCompile(fmt.Sprintf(q, "compute")),
+ nq: regexp.MustCompile(fmt.Sprintf(nq, "compute")),
+ },
+ "driver": {
+ q: regexp.MustCompile(fmt.Sprintf(q, "driver")),
+ nq: regexp.MustCompile(fmt.Sprintf(nq, "driver")),
+ },
+ "name": {
+ q: regexp.MustCompile(fmt.Sprintf(q, "name")),
+ nq: regexp.MustCompile(fmt.Sprintf(nq, "name")),
+ },
+ "total": {
+ q: regexp.MustCompile(fmt.Sprintf(q, "total")),
+ nq: regexp.MustCompile(fmt.Sprintf(nq, "total")),
+ },
+ }
+ get := func(field, line string) string {
+ regex, ok := regexes[field]
+ if !ok {
+ slog.Warn("missing field", "field", field)
+ return ""
+ }
+ match := regex.q.FindStringSubmatch(line)
+
+ if len(match) > 1 {
+ return match[1]
+ }
+ match = regex.nq.FindStringSubmatch(line)
+ if len(match) > 1 {
+ return match[1]
+ }
+ return ""
+ }
+ for {
+ select {
+ case <-ctx.Done():
+ return nil, fmt.Errorf("timeout scanning server log for inference compute details")
+ default:
+ }
+ file, err := os.Open(serverLogPath)
+ if err != nil {
+ slog.Debug("failed to open server log", "log", serverLogPath, "error", err)
+ time.Sleep(time.Second)
+ continue
+ }
+ defer file.Close()
+ scanner := bufio.NewScanner(file)
+ for scanner.Scan() {
+ line := scanner.Text()
+ match := marker.FindStringSubmatch(line)
+ if len(match) > 0 {
+ ic := InferenceCompute{
+ Library: get("library", line),
+ Variant: get("variant", line),
+ Compute: get("compute", line),
+ Driver: get("driver", line),
+ Name: get("name", line),
+ VRAM: get("total", line),
+ }
+
+ slog.Info("Matched", "inference compute", ic)
+ inference = append(inference, ic)
+ } else {
+ // Break out on first non matching line after we start matching
+ if len(inference) > 0 {
+ return inference, nil
+ }
+ }
+ }
+ time.Sleep(100 * time.Millisecond)
+ }
+}
diff --git a/app/server/server_test.go b/app/server/server_test.go
new file mode 100644
index 000000000..f533073d3
--- /dev/null
+++ b/app/server/server_test.go
@@ -0,0 +1,249 @@
+//go:build windows || darwin
+
+package server
+
+import (
+ "context"
+ "os"
+ "path/filepath"
+ "reflect"
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/ollama/ollama/app/store"
+)
+
+func TestNew(t *testing.T) {
+ tmpDir := t.TempDir()
+ st := &store.Store{DBPath: filepath.Join(tmpDir, "db.sqlite")}
+ defer st.Close() // Ensure database is closed before cleanup
+ s := New(st, false)
+
+ if s == nil {
+ t.Fatal("expected non-nil server")
+ }
+
+ if s.bin == "" {
+ t.Error("expected non-empty bin path")
+ }
+}
+
+func TestServerCmd(t *testing.T) {
+ os.Unsetenv("OLLAMA_HOST")
+ os.Unsetenv("OLLAMA_ORIGINS")
+ os.Unsetenv("OLLAMA_MODELS")
+ var defaultModels string
+ home, err := os.UserHomeDir()
+ if err == nil {
+ defaultModels = filepath.Join(home, ".ollama", "models")
+ os.MkdirAll(defaultModels, 0o755)
+ }
+
+ tmpModels := t.TempDir()
+ tests := []struct {
+ name string
+ settings store.Settings
+ want []string
+ dont []string
+ }{
+ {
+ name: "default",
+ settings: store.Settings{},
+ want: []string{"OLLAMA_MODELS=" + defaultModels},
+ dont: []string{"OLLAMA_HOST=", "OLLAMA_ORIGINS="},
+ },
+ {
+ name: "expose",
+ settings: store.Settings{Expose: true},
+ want: []string{"OLLAMA_HOST=0.0.0.0", "OLLAMA_MODELS=" + defaultModels},
+ dont: []string{"OLLAMA_ORIGINS="},
+ },
+ {
+ name: "browser",
+ settings: store.Settings{Browser: true},
+ want: []string{"OLLAMA_ORIGINS=*", "OLLAMA_MODELS=" + defaultModels},
+ dont: []string{"OLLAMA_HOST="},
+ },
+ {
+ name: "models",
+ settings: store.Settings{Models: tmpModels},
+ want: []string{"OLLAMA_MODELS=" + tmpModels},
+ dont: []string{"OLLAMA_HOST=", "OLLAMA_ORIGINS="},
+ },
+ {
+ name: "inaccessible_models",
+ settings: store.Settings{Models: "/nonexistent/external/drive/models"},
+ want: []string{},
+ dont: []string{"OLLAMA_MODELS="},
+ },
+ {
+ name: "all",
+ settings: store.Settings{
+ Expose: true,
+ Browser: true,
+ Models: tmpModels,
+ },
+ want: []string{
+ "OLLAMA_HOST=0.0.0.0",
+ "OLLAMA_ORIGINS=*",
+ "OLLAMA_MODELS=" + tmpModels,
+ },
+ dont: []string{},
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ tmpDir := t.TempDir()
+ st := &store.Store{DBPath: filepath.Join(tmpDir, "db.sqlite")}
+ defer st.Close() // Ensure database is closed before cleanup
+ st.SetSettings(tt.settings)
+ s := &Server{
+ store: st,
+ }
+
+ cmd, err := s.cmd(t.Context())
+ if err != nil {
+ t.Fatalf("s.cmd() error = %v", err)
+ }
+
+ for _, want := range tt.want {
+ found := false
+ for _, env := range cmd.Env {
+ if strings.Contains(env, want) {
+ found = true
+ break
+ }
+ }
+ if !found {
+ t.Errorf("expected environment variable containing %s", want)
+ }
+ }
+
+ for _, dont := range tt.dont {
+ for _, env := range cmd.Env {
+ if strings.Contains(env, dont) {
+ t.Errorf("unexpected environment variable: %s", env)
+ }
+ }
+ }
+
+ if cmd.Cancel == nil {
+ t.Error("expected non-nil cancel function")
+ }
+ })
+ }
+}
+
+func TestGetInferenceComputer(t *testing.T) {
+ tests := []struct {
+ name string
+ log string
+ exp []InferenceCompute
+ }{
+ {
+ name: "metal",
+ log: `time=2025-06-30T09:23:07.374-07:00 level=DEBUG source=sched.go:108 msg="starting llm scheduler"
+time=2025-06-30T09:23:07.416-07:00 level=INFO source=types.go:130 msg="inference compute" id=0 library=metal variant="" compute="" driver=0.0 name="" total="96.0 GiB" available="96.0 GiB"
+time=2025-06-30T09:25:56.197-07:00 level=DEBUG source=ggml.go:155 msg="key not found" key=general.alignment default=32
+`,
+ exp: []InferenceCompute{{
+ Library: "metal",
+ Driver: "0.0",
+ VRAM: "96.0 GiB",
+ }},
+ },
+ {
+ name: "cpu",
+ log: `time=2025-07-01T17:59:51.470Z level=INFO source=gpu.go:377 msg="no compatible GPUs were discovered"
+time=2025-07-01T17:59:51.470Z level=INFO source=types.go:130 msg="inference compute" id=0 library=cpu variant="" compute="" driver=0.0 name="" total="31.3 GiB" available="30.4 GiB"
+[GIN] 2025/07/01 - 18:00:09 | 200 | 50.263µs | 100.126.204.152 | HEAD "/"
+`,
+ exp: []InferenceCompute{{
+ Library: "cpu",
+ Driver: "0.0",
+ VRAM: "31.3 GiB",
+ }},
+ },
+ {
+ name: "cuda1",
+ log: `time=2025-07-01T19:33:43.162Z level=DEBUG source=amd_linux.go:419 msg="amdgpu driver not detected /sys/module/amdgpu"
+releasing cuda driver library
+time=2025-07-01T19:33:43.162Z level=INFO source=types.go:130 msg="inference compute" id=GPU-452cac9f-6960-839c-4fb3-0cec83699196 library=cuda variant=v12 compute=6.1 driver=12.7 name="NVIDIA GeForce GT 1030" total="3.9 GiB" available="3.9 GiB"
+[GIN] 2025/07/01 - 18:00:09 | 200 | 50.263µs | 100.126.204.152 | HEAD "/"
+`,
+ exp: []InferenceCompute{{
+ Library: "cuda",
+ Variant: "v12",
+ Compute: "6.1",
+ Driver: "12.7",
+ Name: "NVIDIA GeForce GT 1030",
+ VRAM: "3.9 GiB",
+ }},
+ },
+ {
+ name: "frank",
+ log: `time=2025-07-01T19:36:13.315Z level=INFO source=amd_linux.go:386 msg="amdgpu is supported" gpu=GPU-9abb57639fa80c50 gpu_type=gfx1030
+ releasing cuda driver library
+ time=2025-07-01T19:36:13.315Z level=INFO source=types.go:130 msg="inference compute" id=GPU-d6de3398-9932-6902-11ec-fee8e424c8a2 library=cuda variant=v12 compute=7.5 driver=12.8 name="NVIDIA GeForce RTX 2080 Ti" total="10.6 GiB" available="10.4 GiB"
+ time=2025-07-01T19:36:13.315Z level=INFO source=types.go:130 msg="inference compute" id=GPU-9abb57639fa80c50 library=rocm variant="" compute=gfx1030 driver=6.3 name=1002:73bf total="16.0 GiB" available="1.3 GiB"
+ [GIN] 2025/07/01 - 18:00:09 | 200 | 50.263µs | 100.126.204.152 | HEAD "/"
+ `,
+ exp: []InferenceCompute{
+ {
+ Library: "cuda",
+ Variant: "v12",
+ Compute: "7.5",
+ Driver: "12.8",
+ Name: "NVIDIA GeForce RTX 2080 Ti",
+ VRAM: "10.6 GiB",
+ },
+ {
+ Library: "rocm",
+ Compute: "gfx1030",
+ Driver: "6.3",
+ Name: "1002:73bf",
+ VRAM: "16.0 GiB",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ tmpDir := t.TempDir()
+ serverLogPath = filepath.Join(tmpDir, "server.log")
+ err := os.WriteFile(serverLogPath, []byte(tt.log), 0o644)
+ if err != nil {
+ t.Fatalf("failed to write log file %s: %s", serverLogPath, err)
+ }
+ ctx, cancel := context.WithTimeout(t.Context(), 10*time.Millisecond)
+ defer cancel()
+ ics, err := GetInferenceComputer(ctx)
+ if err != nil {
+ t.Fatalf(" failed to get inference compute: %v", err)
+ }
+ if !reflect.DeepEqual(ics, tt.exp) {
+ t.Fatalf("got:\n%#v\nwant:\n%#v", ics, tt.exp)
+ }
+ })
+ }
+}
+
+func TestGetInferenceComputerTimeout(t *testing.T) {
+ ctx, cancel := context.WithTimeout(t.Context(), 10*time.Millisecond)
+ defer cancel()
+ tmpDir := t.TempDir()
+ serverLogPath = filepath.Join(tmpDir, "server.log")
+ err := os.WriteFile(serverLogPath, []byte("foo\nbar\nbaz\n"), 0o644)
+ if err != nil {
+ t.Fatalf("failed to write log file %s: %s", serverLogPath, err)
+ }
+ _, err = GetInferenceComputer(ctx)
+ if err == nil {
+ t.Fatal("expected timeout")
+ }
+ if !strings.Contains(err.Error(), "timeout") {
+ t.Fatalf("unexpected error: %s", err)
+ }
+}
diff --git a/app/server/server_unix.go b/app/server/server_unix.go
new file mode 100644
index 000000000..2c50716b2
--- /dev/null
+++ b/app/server/server_unix.go
@@ -0,0 +1,104 @@
+//go:build darwin
+
+package server
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "log/slog"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strconv"
+ "strings"
+ "syscall"
+)
+
+var (
+ pidFile = filepath.Join(os.Getenv("HOME"), "Library", "Application Support", "Ollama", "ollama.pid")
+ serverLogPath = filepath.Join(os.Getenv("HOME"), ".ollama", "logs", "server.log")
+)
+
+func commandContext(ctx context.Context, name string, arg ...string) *exec.Cmd {
+ return exec.CommandContext(ctx, name, arg...)
+}
+
+func terminate(proc *os.Process) error {
+ return proc.Signal(os.Interrupt)
+}
+
+func terminated(pid int) (bool, error) {
+ proc, err := os.FindProcess(pid)
+ if err != nil {
+ return false, fmt.Errorf("failed to find process: %v", err)
+ }
+
+ err = proc.Signal(syscall.Signal(0))
+ if err != nil {
+ if errors.Is(err, os.ErrProcessDone) || errors.Is(err, syscall.ESRCH) {
+ return true, nil
+ }
+
+ return false, fmt.Errorf("error signaling process: %v", err)
+ }
+
+ return false, nil
+}
+
+// reapServers kills all ollama processes except our own
+func reapServers() error {
+ // Get our own PID to avoid killing ourselves
+ currentPID := os.Getpid()
+
+ // Use pkill to kill ollama processes
+ // -x matches the whole command name exactly
+ // We'll get the list first, then kill selectively
+ cmd := exec.Command("pgrep", "-x", "ollama")
+ output, err := cmd.Output()
+ if err != nil {
+ // No ollama processes found
+ slog.Debug("no ollama processes found")
+ return nil //nolint:nilerr
+ }
+
+ pidsStr := strings.TrimSpace(string(output))
+ if pidsStr == "" {
+ return nil
+ }
+
+ pids := strings.Split(pidsStr, "\n")
+ for _, pidStr := range pids {
+ pidStr = strings.TrimSpace(pidStr)
+ if pidStr == "" {
+ continue
+ }
+
+ pid, err := strconv.Atoi(pidStr)
+ if err != nil {
+ slog.Debug("failed to parse PID", "pidStr", pidStr, "err", err)
+ continue
+ }
+ if pid == currentPID {
+ continue
+ }
+
+ proc, err := os.FindProcess(pid)
+ if err != nil {
+ slog.Debug("failed to find process", "pid", pid, "err", err)
+ continue
+ }
+
+ if err := proc.Signal(syscall.SIGTERM); err != nil {
+ // Try SIGKILL if SIGTERM fails
+ if err := proc.Signal(syscall.SIGKILL); err != nil {
+ slog.Warn("failed to stop external ollama process", "pid", pid, "err", err)
+ continue
+ }
+ }
+
+ slog.Info("stopped external ollama process", "pid", pid)
+ }
+
+ return nil
+}
diff --git a/app/server/server_windows.go b/app/server/server_windows.go
new file mode 100644
index 000000000..c2e7f4b9e
--- /dev/null
+++ b/app/server/server_windows.go
@@ -0,0 +1,149 @@
+package server
+
+import (
+ "context"
+ "fmt"
+ "log/slog"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strconv"
+ "strings"
+ "syscall"
+
+ "golang.org/x/sys/windows"
+)
+
+var (
+ pidFile = filepath.Join(os.Getenv("LOCALAPPDATA"), "Ollama", "ollama.pid")
+ serverLogPath = filepath.Join(os.Getenv("LOCALAPPDATA"), "Ollama", "server.log")
+)
+
+func commandContext(ctx context.Context, name string, arg ...string) *exec.Cmd {
+ cmd := exec.CommandContext(ctx, name, arg...)
+ cmd.SysProcAttr = &syscall.SysProcAttr{
+ HideWindow: true,
+ CreationFlags: windows.CREATE_NEW_PROCESS_GROUP,
+ }
+
+ return cmd
+}
+
+func terminate(proc *os.Process) error {
+ dll, err := windows.LoadDLL("kernel32.dll")
+ if err != nil {
+ return err
+ }
+ defer dll.Release()
+
+ pid := proc.Pid
+
+ f, err := dll.FindProc("AttachConsole")
+ if err != nil {
+ return err
+ }
+
+ r1, _, err := f.Call(uintptr(pid))
+ if r1 == 0 && err != syscall.ERROR_ACCESS_DENIED {
+ return err
+ }
+
+ f, err = dll.FindProc("SetConsoleCtrlHandler")
+ if err != nil {
+ return err
+ }
+
+ r1, _, err = f.Call(0, 1)
+ if r1 == 0 {
+ return err
+ }
+
+ f, err = dll.FindProc("GenerateConsoleCtrlEvent")
+ if err != nil {
+ return err
+ }
+
+ r1, _, err = f.Call(windows.CTRL_BREAK_EVENT, uintptr(pid))
+ if r1 == 0 {
+ return err
+ }
+
+ r1, _, err = f.Call(windows.CTRL_C_EVENT, uintptr(pid))
+ if r1 == 0 {
+ return err
+ }
+
+ return nil
+}
+
+const STILL_ACTIVE = 259
+
+func terminated(pid int) (bool, error) {
+ hProcess, err := windows.OpenProcess(windows.PROCESS_QUERY_INFORMATION, false, uint32(pid))
+ if err != nil {
+ if errno, ok := err.(windows.Errno); ok && errno == windows.ERROR_INVALID_PARAMETER {
+ return true, nil
+ }
+ return false, fmt.Errorf("failed to open process: %v", err)
+ }
+ defer windows.CloseHandle(hProcess)
+
+ var exitCode uint32
+ err = windows.GetExitCodeProcess(hProcess, &exitCode)
+ if err != nil {
+ return false, fmt.Errorf("failed to get exit code: %v", err)
+ }
+
+ if exitCode == STILL_ACTIVE {
+ return false, nil
+ }
+
+ return true, nil
+}
+
+// reapServers kills all ollama processes except our own
+func reapServers() error {
+ // Get current process ID to avoid killing ourselves
+ currentPID := os.Getpid()
+
+ // Use wmic to find ollama processes
+ cmd := exec.Command("wmic", "process", "where", "name='ollama.exe'", "get", "ProcessId")
+ cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
+ output, err := cmd.Output()
+ if err != nil {
+ // No ollama processes found
+ slog.Debug("no ollama processes found")
+ return nil //nolint:nilerr
+ }
+
+ lines := strings.Split(string(output), "\n")
+ var pids []string
+ for _, line := range lines {
+ line = strings.TrimSpace(line)
+ if line == "" || line == "ProcessId" {
+ continue
+ }
+
+ if _, err := strconv.Atoi(line); err == nil {
+ pids = append(pids, line)
+ }
+ }
+
+ for _, pidStr := range pids {
+ pid, err := strconv.Atoi(pidStr)
+ if err != nil {
+ continue
+ }
+
+ if pid == currentPID {
+ continue
+ }
+
+ cmd := exec.Command("taskkill", "/F", "/PID", pidStr)
+ if err := cmd.Run(); err != nil {
+ slog.Warn("failed to kill ollama process", "pid", pid, "err", err)
+ }
+ }
+
+ return nil
+}
diff --git a/app/store/database.go b/app/store/database.go
new file mode 100644
index 000000000..0f268c6fa
--- /dev/null
+++ b/app/store/database.go
@@ -0,0 +1,1222 @@
+//go:build windows || darwin
+
+package store
+
+import (
+ "database/sql"
+ "encoding/json"
+ "fmt"
+ "strings"
+ "time"
+
+ sqlite3 "github.com/mattn/go-sqlite3"
+)
+
+// currentSchemaVersion defines the current database schema version.
+// Increment this when making schema changes that require migrations.
+const currentSchemaVersion = 12
+
+// database wraps the SQLite connection.
+// SQLite handles its own locking for concurrent access:
+// - Multiple readers can access the database simultaneously
+// - Writers are serialized (only one writer at a time)
+// - WAL mode allows readers to not block writers
+// This means we don't need application-level locks for database operations.
+type database struct {
+ conn *sql.DB
+}
+
+func newDatabase(dbPath string) (*database, error) {
+ // Open database connection
+ conn, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=on&_journal_mode=WAL&_busy_timeout=5000&_txlock=immediate")
+ if err != nil {
+ return nil, fmt.Errorf("open database: %w", err)
+ }
+
+ // Test the connection
+ if err := conn.Ping(); err != nil {
+ conn.Close()
+ return nil, fmt.Errorf("ping database: %w", err)
+ }
+
+ db := &database{conn: conn}
+
+ // Initialize schema
+ if err := db.init(); err != nil {
+ conn.Close()
+ return nil, fmt.Errorf("initialize database: %w", err)
+ }
+
+ return db, nil
+}
+
+func (db *database) Close() error {
+ _, _ = db.conn.Exec("PRAGMA wal_checkpoint(TRUNCATE);")
+
+ return db.conn.Close()
+}
+
+func (db *database) init() error {
+ if _, err := db.conn.Exec("PRAGMA foreign_keys = ON"); err != nil {
+ return fmt.Errorf("enable foreign keys: %w", err)
+ }
+
+ schema := fmt.Sprintf(`
+ CREATE TABLE IF NOT EXISTS settings (
+ id INTEGER PRIMARY KEY CHECK (id = 1),
+ device_id TEXT NOT NULL DEFAULT '',
+ has_completed_first_run BOOLEAN NOT NULL DEFAULT 0,
+ expose BOOLEAN NOT NULL DEFAULT 0,
+ survey BOOLEAN NOT NULL DEFAULT TRUE,
+ browser BOOLEAN NOT NULL DEFAULT 0,
+ models TEXT NOT NULL DEFAULT '',
+ agent BOOLEAN NOT NULL DEFAULT 0,
+ tools BOOLEAN NOT NULL DEFAULT 0,
+ working_dir TEXT NOT NULL DEFAULT '',
+ context_length INTEGER NOT NULL DEFAULT 4096,
+ window_width INTEGER NOT NULL DEFAULT 0,
+ window_height INTEGER NOT NULL DEFAULT 0,
+ config_migrated BOOLEAN NOT NULL DEFAULT 0,
+ airplane_mode BOOLEAN NOT NULL DEFAULT 0,
+ turbo_enabled BOOLEAN NOT NULL DEFAULT 0,
+ websearch_enabled BOOLEAN NOT NULL DEFAULT 0,
+ selected_model TEXT NOT NULL DEFAULT '',
+ sidebar_open BOOLEAN NOT NULL DEFAULT 0,
+ think_enabled BOOLEAN NOT NULL DEFAULT 0,
+ think_level TEXT NOT NULL DEFAULT '',
+ remote TEXT NOT NULL DEFAULT '', -- deprecated
+ schema_version INTEGER NOT NULL DEFAULT %d
+ );
+
+ -- Insert default settings row if it doesn't exist
+ INSERT OR IGNORE INTO settings (id) VALUES (1);
+
+ CREATE TABLE IF NOT EXISTS chats (
+ id TEXT PRIMARY KEY,
+ title TEXT NOT NULL DEFAULT '',
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ browser_state TEXT
+ );
+
+ CREATE TABLE IF NOT EXISTS messages (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ chat_id TEXT NOT NULL,
+ role TEXT NOT NULL,
+ content TEXT NOT NULL DEFAULT '',
+ thinking TEXT NOT NULL DEFAULT '',
+ stream BOOLEAN NOT NULL DEFAULT 0,
+ model_name TEXT,
+ model_cloud BOOLEAN, -- deprecated
+ model_ollama_host BOOLEAN, -- deprecated
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ thinking_time_start TIMESTAMP,
+ thinking_time_end TIMESTAMP,
+ tool_result TEXT,
+ FOREIGN KEY (chat_id) REFERENCES chats(id) ON DELETE CASCADE
+ );
+
+ CREATE INDEX IF NOT EXISTS idx_messages_chat_id ON messages(chat_id);
+
+ CREATE TABLE IF NOT EXISTS tool_calls (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ message_id INTEGER NOT NULL,
+ type TEXT NOT NULL,
+ function_name TEXT NOT NULL,
+ function_arguments TEXT NOT NULL,
+ function_result TEXT,
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
+ );
+
+ CREATE INDEX IF NOT EXISTS idx_tool_calls_message_id ON tool_calls(message_id);
+
+ CREATE TABLE IF NOT EXISTS attachments (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ message_id INTEGER NOT NULL,
+ filename TEXT NOT NULL,
+ data BLOB NOT NULL,
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
+ );
+
+ CREATE INDEX IF NOT EXISTS idx_attachments_message_id ON attachments(message_id);
+
+ CREATE TABLE IF NOT EXISTS users (
+ name TEXT NOT NULL DEFAULT '',
+ email TEXT NOT NULL DEFAULT '',
+ plan TEXT NOT NULL DEFAULT '',
+ cached_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+ );
+ `, currentSchemaVersion)
+
+ _, err := db.conn.Exec(schema)
+ if err != nil {
+ return err
+ }
+
+ // Check and upgrade schema version if needed
+ if err := db.migrate(); err != nil {
+ return fmt.Errorf("migrate schema: %w", err)
+ }
+
+ // Clean up orphaned records created before foreign key constraints were properly enforced
+ // TODO: Can eventually be removed - cleans up data from foreign key bug (ollama/ollama#11785, ollama/app#476)
+ if err := db.cleanupOrphanedData(); err != nil {
+ return fmt.Errorf("cleanup orphaned data: %w", err)
+ }
+
+ return nil
+}
+
+// migrate handles database schema migrations
+func (db *database) migrate() error {
+ // Get current schema version
+ version, err := db.getSchemaVersion()
+ if err != nil {
+ return fmt.Errorf("get schema version after migration attempt: %w", err)
+ }
+
+ // Run migrations for each version
+ for version < currentSchemaVersion {
+ switch version {
+ case 1:
+ // Migrate from version 1 to 2: add context_length column
+ if err := db.migrateV1ToV2(); err != nil {
+ return fmt.Errorf("migrate v1 to v2: %w", err)
+ }
+ version = 2
+ case 2:
+ // Migrate from version 2 to 3: create attachments table
+ if err := db.migrateV2ToV3(); err != nil {
+ return fmt.Errorf("migrate v2 to v3: %w", err)
+ }
+ version = 3
+ case 3:
+ // Migrate from version 3 to 4: add tool_result column to messages table
+ if err := db.migrateV3ToV4(); err != nil {
+ return fmt.Errorf("migrate v3 to v4: %w", err)
+ }
+ version = 4
+ case 4:
+ // add airplane_mode column to settings table
+ if err := db.migrateV4ToV5(); err != nil {
+ return fmt.Errorf("migrate v4 to v5: %w", err)
+ }
+ version = 5
+ case 5:
+ // add turbo_enabled column to settings table
+ if err := db.migrateV5ToV6(); err != nil {
+ return fmt.Errorf("migrate v5 to v6: %w", err)
+ }
+ version = 6
+ case 6:
+ // add missing index for attachments table
+ if err := db.migrateV6ToV7(); err != nil {
+ return fmt.Errorf("migrate v6 to v7: %w", err)
+ }
+ version = 7
+ case 7:
+ // add think_enabled and think_level columns to settings table
+ if err := db.migrateV7ToV8(); err != nil {
+ return fmt.Errorf("migrate v7 to v8: %w", err)
+ }
+ version = 8
+ case 8:
+ // add browser_state column to chats table
+ if err := db.migrateV8ToV9(); err != nil {
+ return fmt.Errorf("migrate v8 to v9: %w", err)
+ }
+ version = 9
+ case 9:
+ // add cached user table
+ if err := db.migrateV9ToV10(); err != nil {
+ return fmt.Errorf("migrate v9 to v10: %w", err)
+ }
+ version = 10
+ case 10:
+ // remove remote column from settings table
+ if err := db.migrateV10ToV11(); err != nil {
+ return fmt.Errorf("migrate v10 to v11: %w", err)
+ }
+ version = 11
+ case 11:
+ // bring back remote column for backwards compatibility (deprecated)
+ if err := db.migrateV11ToV12(); err != nil {
+ return fmt.Errorf("migrate v11 to v12: %w", err)
+ }
+ version = 12
+ default:
+ // If we have a version we don't recognize, just set it to current
+ // This might happen during development
+ version = currentSchemaVersion
+ }
+ }
+
+ return nil
+}
+
+// migrateV1ToV2 adds the context_length column to the settings table
+func (db *database) migrateV1ToV2() error {
+ _, err := db.conn.Exec(`ALTER TABLE settings ADD COLUMN context_length INTEGER NOT NULL DEFAULT 4096;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add context_length column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`ALTER TABLE settings ADD COLUMN survey BOOLEAN NOT NULL DEFAULT TRUE;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add survey column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 2;`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+ return nil
+}
+
+// migrateV2ToV3 creates the attachments table
+func (db *database) migrateV2ToV3() error {
+ _, err := db.conn.Exec(`
+ CREATE TABLE IF NOT EXISTS attachments (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ message_id INTEGER NOT NULL,
+ filename TEXT NOT NULL,
+ data BLOB NOT NULL,
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
+ )
+ `)
+ if err != nil {
+ return fmt.Errorf("create attachments table: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 3`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+func (db *database) migrateV3ToV4() error {
+ _, err := db.conn.Exec(`ALTER TABLE messages ADD COLUMN tool_result TEXT;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add tool_result column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 4;`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV4ToV5 adds the airplane_mode column to the settings table
+func (db *database) migrateV4ToV5() error {
+ _, err := db.conn.Exec(`ALTER TABLE settings ADD COLUMN airplane_mode BOOLEAN NOT NULL DEFAULT 0;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add airplane_mode column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 5;`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV5ToV6 adds the turbo_enabled, websearch_enabled, selected_model, sidebar_open columns to the settings table
+func (db *database) migrateV5ToV6() error {
+ _, err := db.conn.Exec(`ALTER TABLE settings ADD COLUMN turbo_enabled BOOLEAN NOT NULL DEFAULT 0;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add turbo_enabled column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`ALTER TABLE settings ADD COLUMN websearch_enabled BOOLEAN NOT NULL DEFAULT 0;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add websearch_enabled column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`ALTER TABLE settings ADD COLUMN selected_model TEXT NOT NULL DEFAULT '';`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add selected_model column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`ALTER TABLE settings ADD COLUMN sidebar_open BOOLEAN NOT NULL DEFAULT 0;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add sidebar_open column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 6;`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV6ToV7 adds the missing index for the attachments table
+func (db *database) migrateV6ToV7() error {
+ _, err := db.conn.Exec(`CREATE INDEX IF NOT EXISTS idx_attachments_message_id ON attachments(message_id);`)
+ if err != nil {
+ return fmt.Errorf("create attachments index: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 7;`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV7ToV8 adds the think_enabled and think_level columns to the settings table
+func (db *database) migrateV7ToV8() error {
+ _, err := db.conn.Exec(`ALTER TABLE settings ADD COLUMN think_enabled BOOLEAN NOT NULL DEFAULT 0;`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add think_enabled column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`ALTER TABLE settings ADD COLUMN think_level TEXT NOT NULL DEFAULT '';`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add think_level column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 8;`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV8ToV9 adds browser_state to chats and bumps schema
+func (db *database) migrateV8ToV9() error {
+ _, err := db.conn.Exec(`
+ ALTER TABLE chats ADD COLUMN browser_state TEXT;
+ UPDATE settings SET schema_version = 9;
+ `)
+
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add browser_state column: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV9ToV10 adds users table
+func (db *database) migrateV9ToV10() error {
+ _, err := db.conn.Exec(`
+ CREATE TABLE IF NOT EXISTS users (
+ name TEXT NOT NULL DEFAULT '',
+ email TEXT NOT NULL DEFAULT '',
+ plan TEXT NOT NULL DEFAULT '',
+ cached_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+ );
+ UPDATE settings SET schema_version = 10;
+ `)
+ if err != nil {
+ return fmt.Errorf("create users table: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV10ToV11 removes the remote column from the settings table
+func (db *database) migrateV10ToV11() error {
+ _, err := db.conn.Exec(`ALTER TABLE settings DROP COLUMN remote`)
+ if err != nil && !columnNotExists(err) {
+ return fmt.Errorf("drop remote column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 11`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+// migrateV11ToV12 brings back the remote column for backwards compatibility (deprecated)
+func (db *database) migrateV11ToV12() error {
+ _, err := db.conn.Exec(`ALTER TABLE settings ADD COLUMN remote TEXT NOT NULL DEFAULT ''`)
+ if err != nil && !duplicateColumnError(err) {
+ return fmt.Errorf("add remote column: %w", err)
+ }
+
+ _, err = db.conn.Exec(`UPDATE settings SET schema_version = 12`)
+ if err != nil {
+ return fmt.Errorf("update schema version: %w", err)
+ }
+
+ return nil
+}
+
+// cleanupOrphanedData removes orphaned records that may exist due to the foreign key bug
+func (db *database) cleanupOrphanedData() error {
+ _, err := db.conn.Exec(`
+ DELETE FROM tool_calls
+ WHERE message_id NOT IN (SELECT id FROM messages)
+ `)
+ if err != nil {
+ return fmt.Errorf("cleanup orphaned tool_calls: %w", err)
+ }
+
+ _, err = db.conn.Exec(`
+ DELETE FROM attachments
+ WHERE message_id NOT IN (SELECT id FROM messages)
+ `)
+ if err != nil {
+ return fmt.Errorf("cleanup orphaned attachments: %w", err)
+ }
+
+ _, err = db.conn.Exec(`
+ DELETE FROM messages
+ WHERE chat_id NOT IN (SELECT id FROM chats)
+ `)
+ if err != nil {
+ return fmt.Errorf("cleanup orphaned messages: %w", err)
+ }
+
+ return nil
+}
+
+func duplicateColumnError(err error) bool {
+ if sqlite3Err, ok := err.(sqlite3.Error); ok {
+ return sqlite3Err.Code == sqlite3.ErrError &&
+ strings.Contains(sqlite3Err.Error(), "duplicate column name")
+ }
+ return false
+}
+
+func columnNotExists(err error) bool {
+ if sqlite3Err, ok := err.(sqlite3.Error); ok {
+ return sqlite3Err.Code == sqlite3.ErrError &&
+ strings.Contains(sqlite3Err.Error(), "no such column")
+ }
+ return false
+}
+
+func (db *database) getAllChats() ([]Chat, error) {
+ // Query chats with their first user message and latest update time
+ query := `
+ SELECT
+ c.id,
+ c.title,
+ c.created_at,
+ COALESCE(first_msg.content, '') as first_user_content,
+ COALESCE(datetime(MAX(m.updated_at)), datetime(c.created_at)) as last_updated
+ FROM chats c
+ LEFT JOIN (
+ SELECT chat_id, content, MIN(id) as min_id
+ FROM messages
+ WHERE role = 'user'
+ GROUP BY chat_id
+ ) first_msg ON c.id = first_msg.chat_id
+ LEFT JOIN messages m ON c.id = m.chat_id
+ GROUP BY c.id, c.title, c.created_at, first_msg.content
+ ORDER BY last_updated DESC
+ `
+
+ rows, err := db.conn.Query(query)
+ if err != nil {
+ return nil, fmt.Errorf("query chats: %w", err)
+ }
+ defer rows.Close()
+
+ var chats []Chat
+ for rows.Next() {
+ var chat Chat
+ var createdAt time.Time
+ var firstUserContent string
+ var lastUpdatedStr string
+
+ err := rows.Scan(
+ &chat.ID,
+ &chat.Title,
+ &createdAt,
+ &firstUserContent,
+ &lastUpdatedStr,
+ )
+
+ // Parse the last updated time
+ lastUpdated, _ := time.Parse("2006-01-02 15:04:05", lastUpdatedStr)
+ if err != nil {
+ return nil, fmt.Errorf("scan chat: %w", err)
+ }
+
+ chat.CreatedAt = createdAt
+
+ // Add a dummy first user message for the UI to display
+ // This is just for the excerpt, full messages are loaded when needed
+ chat.Messages = []Message{}
+ if firstUserContent != "" {
+ chat.Messages = append(chat.Messages, Message{
+ Role: "user",
+ Content: firstUserContent,
+ UpdatedAt: lastUpdated,
+ })
+ }
+
+ chats = append(chats, chat)
+ }
+
+ if err := rows.Err(); err != nil {
+ return nil, fmt.Errorf("iterate chats: %w", err)
+ }
+
+ return chats, nil
+}
+
+func (db *database) getChatWithOptions(id string, loadAttachmentData bool) (*Chat, error) {
+ query := `
+ SELECT id, title, created_at, browser_state
+ FROM chats
+ WHERE id = ?
+ `
+
+ var chat Chat
+ var createdAt time.Time
+ var browserState sql.NullString
+
+ err := db.conn.QueryRow(query, id).Scan(
+ &chat.ID,
+ &chat.Title,
+ &createdAt,
+ &browserState,
+ )
+ if err != nil {
+ if err == sql.ErrNoRows {
+ return nil, fmt.Errorf("chat not found")
+ }
+ return nil, fmt.Errorf("query chat: %w", err)
+ }
+
+ chat.CreatedAt = createdAt
+ if browserState.Valid && browserState.String != "" {
+ var raw json.RawMessage
+ if err := json.Unmarshal([]byte(browserState.String), &raw); err == nil {
+ chat.BrowserState = raw
+ }
+ }
+
+ messages, err := db.getMessages(id, loadAttachmentData)
+ if err != nil {
+ return nil, fmt.Errorf("get messages: %w", err)
+ }
+ chat.Messages = messages
+
+ return &chat, nil
+}
+
+func (db *database) saveChat(chat Chat) error {
+ tx, err := db.conn.Begin()
+ if err != nil {
+ return fmt.Errorf("begin transaction: %w", err)
+ }
+ defer tx.Rollback()
+
+ // Use COALESCE for browser_state to avoid wiping an existing
+ // chat-level browser_state when saving a chat that doesn't include a new state payload.
+ // Many code paths call SetChat to update metadata/messages only; without COALESCE the
+ // UPSERT would overwrite browser_state with NULL, breaking revisit rendering that relies
+ // on the last persisted full tool state.
+ query := `
+ INSERT INTO chats (id, title, created_at, browser_state)
+ VALUES (?, ?, ?, ?)
+ ON CONFLICT(id) DO UPDATE SET
+ title = excluded.title,
+ browser_state = COALESCE(excluded.browser_state, chats.browser_state)
+ `
+
+ var browserState sql.NullString
+ if chat.BrowserState != nil {
+ browserState = sql.NullString{String: string(chat.BrowserState), Valid: true}
+ }
+
+ _, err = tx.Exec(query,
+ chat.ID,
+ chat.Title,
+ chat.CreatedAt,
+ browserState,
+ )
+ if err != nil {
+ return fmt.Errorf("save chat: %w", err)
+ }
+
+ // Delete existing messages (we'll re-insert all)
+ _, err = tx.Exec("DELETE FROM messages WHERE chat_id = ?", chat.ID)
+ if err != nil {
+ return fmt.Errorf("delete messages: %w", err)
+ }
+
+ // Insert messages
+ for _, msg := range chat.Messages {
+ messageID, err := db.insertMessage(tx, chat.ID, msg)
+ if err != nil {
+ return fmt.Errorf("insert message: %w", err)
+ }
+
+ // Insert tool calls if any
+ for _, toolCall := range msg.ToolCalls {
+ err := db.insertToolCall(tx, messageID, toolCall)
+ if err != nil {
+ return fmt.Errorf("insert tool call: %w", err)
+ }
+ }
+ }
+
+ return tx.Commit()
+}
+
+// updateChatBrowserState updates only the browser_state for a chat
+func (db *database) updateChatBrowserState(chatID string, state json.RawMessage) error {
+ _, err := db.conn.Exec(`UPDATE chats SET browser_state = ? WHERE id = ?`, string(state), chatID)
+ if err != nil {
+ return fmt.Errorf("update chat browser state: %w", err)
+ }
+ return nil
+}
+
+func (db *database) deleteChat(id string) error {
+ _, err := db.conn.Exec("DELETE FROM chats WHERE id = ?", id)
+ if err != nil {
+ return fmt.Errorf("delete chat: %w", err)
+ }
+
+ _, _ = db.conn.Exec("PRAGMA wal_checkpoint(TRUNCATE);")
+
+ return nil
+}
+
+func (db *database) updateLastMessage(chatID string, msg Message) error {
+ tx, err := db.conn.Begin()
+ if err != nil {
+ return fmt.Errorf("begin transaction: %w", err)
+ }
+ defer tx.Rollback()
+
+ // Get the ID of the last message
+ var messageID int64
+ err = tx.QueryRow(`
+ SELECT MAX(id) FROM messages WHERE chat_id = ?
+ `, chatID).Scan(&messageID)
+ if err != nil {
+ return fmt.Errorf("get last message id: %w", err)
+ }
+
+ query := `
+ UPDATE messages
+ SET content = ?, thinking = ?, model_name = ?, updated_at = ?, thinking_time_start = ?, thinking_time_end = ?, tool_result = ?
+ WHERE id = ?
+ `
+
+ var thinkingTimeStart, thinkingTimeEnd sql.NullTime
+ if msg.ThinkingTimeStart != nil {
+ thinkingTimeStart = sql.NullTime{Time: *msg.ThinkingTimeStart, Valid: true}
+ }
+ if msg.ThinkingTimeEnd != nil {
+ thinkingTimeEnd = sql.NullTime{Time: *msg.ThinkingTimeEnd, Valid: true}
+ }
+
+ var modelName sql.NullString
+ if msg.Model != "" {
+ modelName = sql.NullString{String: msg.Model, Valid: true}
+ }
+
+ var toolResultJSON sql.NullString
+ if msg.ToolResult != nil {
+ resultBytes, err := json.Marshal(msg.ToolResult)
+ if err != nil {
+ return fmt.Errorf("marshal tool result: %w", err)
+ }
+ toolResultJSON = sql.NullString{String: string(resultBytes), Valid: true}
+ }
+
+ result, err := tx.Exec(query,
+ msg.Content,
+ msg.Thinking,
+ modelName,
+ msg.UpdatedAt,
+ thinkingTimeStart,
+ thinkingTimeEnd,
+ toolResultJSON,
+ messageID,
+ )
+ if err != nil {
+ return fmt.Errorf("update last message: %w", err)
+ }
+
+ rowsAffected, err := result.RowsAffected()
+ if err != nil {
+ return fmt.Errorf("get rows affected: %w", err)
+ }
+ if rowsAffected == 0 {
+ return fmt.Errorf("no message found to update")
+ }
+
+ _, err = tx.Exec("DELETE FROM attachments WHERE message_id = ?", messageID)
+ if err != nil {
+ return fmt.Errorf("delete existing attachments: %w", err)
+ }
+ for _, att := range msg.Attachments {
+ err := db.insertAttachment(tx, messageID, att)
+ if err != nil {
+ return fmt.Errorf("insert attachment: %w", err)
+ }
+ }
+
+ _, err = tx.Exec("DELETE FROM tool_calls WHERE message_id = ?", messageID)
+ if err != nil {
+ return fmt.Errorf("delete existing tool calls: %w", err)
+ }
+ for _, toolCall := range msg.ToolCalls {
+ err := db.insertToolCall(tx, messageID, toolCall)
+ if err != nil {
+ return fmt.Errorf("insert tool call: %w", err)
+ }
+ }
+
+ return tx.Commit()
+}
+
+func (db *database) appendMessage(chatID string, msg Message) error {
+ tx, err := db.conn.Begin()
+ if err != nil {
+ return fmt.Errorf("begin transaction: %w", err)
+ }
+ defer tx.Rollback()
+
+ messageID, err := db.insertMessage(tx, chatID, msg)
+ if err != nil {
+ return fmt.Errorf("insert message: %w", err)
+ }
+
+ // Insert tool calls if any
+ for _, toolCall := range msg.ToolCalls {
+ err := db.insertToolCall(tx, messageID, toolCall)
+ if err != nil {
+ return fmt.Errorf("insert tool call: %w", err)
+ }
+ }
+
+ return tx.Commit()
+}
+
+func (db *database) getMessages(chatID string, loadAttachmentData bool) ([]Message, error) {
+ query := `
+ SELECT id, role, content, thinking, stream, model_name, created_at, updated_at, thinking_time_start, thinking_time_end, tool_result
+ FROM messages
+ WHERE chat_id = ?
+ ORDER BY id ASC
+ `
+
+ rows, err := db.conn.Query(query, chatID)
+ if err != nil {
+ return nil, fmt.Errorf("query messages: %w", err)
+ }
+ defer rows.Close()
+
+ var messages []Message
+ for rows.Next() {
+ var msg Message
+ var messageID int64
+ var thinkingTimeStart, thinkingTimeEnd sql.NullTime
+ var modelName sql.NullString
+ var toolResult sql.NullString
+
+ err := rows.Scan(
+ &messageID,
+ &msg.Role,
+ &msg.Content,
+ &msg.Thinking,
+ &msg.Stream,
+ &modelName,
+ &msg.CreatedAt,
+ &msg.UpdatedAt,
+ &thinkingTimeStart,
+ &thinkingTimeEnd,
+ &toolResult,
+ )
+ if err != nil {
+ return nil, fmt.Errorf("scan message: %w", err)
+ }
+
+ attachments, err := db.getAttachments(messageID, loadAttachmentData)
+ if err != nil {
+ return nil, fmt.Errorf("get attachments: %w", err)
+ }
+ msg.Attachments = attachments
+
+ if thinkingTimeStart.Valid {
+ msg.ThinkingTimeStart = &thinkingTimeStart.Time
+ }
+ if thinkingTimeEnd.Valid {
+ msg.ThinkingTimeEnd = &thinkingTimeEnd.Time
+ }
+
+ // Parse tool result from JSON if present
+ if toolResult.Valid && toolResult.String != "" {
+ var result json.RawMessage
+ if err := json.Unmarshal([]byte(toolResult.String), &result); err == nil {
+ msg.ToolResult = &result
+ }
+ }
+
+ // Set model if present
+ if modelName.Valid && modelName.String != "" {
+ msg.Model = modelName.String
+ }
+
+ // Get tool calls for this message
+ toolCalls, err := db.getToolCalls(messageID)
+ if err != nil {
+ return nil, fmt.Errorf("get tool calls: %w", err)
+ }
+ msg.ToolCalls = toolCalls
+
+ messages = append(messages, msg)
+ }
+
+ if err := rows.Err(); err != nil {
+ return nil, fmt.Errorf("iterate messages: %w", err)
+ }
+
+ return messages, nil
+}
+
+func (db *database) insertMessage(tx *sql.Tx, chatID string, msg Message) (int64, error) {
+ query := `
+ INSERT INTO messages (chat_id, role, content, thinking, stream, model_name, created_at, updated_at, thinking_time_start, thinking_time_end, tool_result)
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+ `
+
+ var thinkingTimeStart, thinkingTimeEnd sql.NullTime
+ if msg.ThinkingTimeStart != nil {
+ thinkingTimeStart = sql.NullTime{Time: *msg.ThinkingTimeStart, Valid: true}
+ }
+ if msg.ThinkingTimeEnd != nil {
+ thinkingTimeEnd = sql.NullTime{Time: *msg.ThinkingTimeEnd, Valid: true}
+ }
+
+ var modelName sql.NullString
+ if msg.Model != "" {
+ modelName = sql.NullString{String: msg.Model, Valid: true}
+ }
+
+ var toolResultJSON sql.NullString
+ if msg.ToolResult != nil {
+ resultBytes, err := json.Marshal(msg.ToolResult)
+ if err != nil {
+ return 0, fmt.Errorf("marshal tool result: %w", err)
+ }
+ toolResultJSON = sql.NullString{String: string(resultBytes), Valid: true}
+ }
+
+ result, err := tx.Exec(query,
+ chatID,
+ msg.Role,
+ msg.Content,
+ msg.Thinking,
+ msg.Stream,
+ modelName,
+ msg.CreatedAt,
+ msg.UpdatedAt,
+ thinkingTimeStart,
+ thinkingTimeEnd,
+ toolResultJSON,
+ )
+ if err != nil {
+ return 0, err
+ }
+
+ messageID, err := result.LastInsertId()
+ if err != nil {
+ return 0, err
+ }
+
+ for _, att := range msg.Attachments {
+ err := db.insertAttachment(tx, messageID, att)
+ if err != nil {
+ return 0, fmt.Errorf("insert attachment: %w", err)
+ }
+ }
+
+ return messageID, nil
+}
+
+func (db *database) getAttachments(messageID int64, loadData bool) ([]File, error) {
+ var query string
+ if loadData {
+ query = `
+ SELECT filename, data
+ FROM attachments
+ WHERE message_id = ?
+ ORDER BY id ASC
+ `
+ } else {
+ query = `
+ SELECT filename, '' as data
+ FROM attachments
+ WHERE message_id = ?
+ ORDER BY id ASC
+ `
+ }
+
+ rows, err := db.conn.Query(query, messageID)
+ if err != nil {
+ return nil, fmt.Errorf("query attachments: %w", err)
+ }
+ defer rows.Close()
+
+ var attachments []File
+ for rows.Next() {
+ var file File
+ err := rows.Scan(&file.Filename, &file.Data)
+ if err != nil {
+ return nil, fmt.Errorf("scan attachment: %w", err)
+ }
+ attachments = append(attachments, file)
+ }
+
+ if err := rows.Err(); err != nil {
+ return nil, fmt.Errorf("iterate attachments: %w", err)
+ }
+
+ return attachments, nil
+}
+
+func (db *database) getToolCalls(messageID int64) ([]ToolCall, error) {
+ query := `
+ SELECT type, function_name, function_arguments, function_result
+ FROM tool_calls
+ WHERE message_id = ?
+ ORDER BY id ASC
+ `
+
+ rows, err := db.conn.Query(query, messageID)
+ if err != nil {
+ return nil, fmt.Errorf("query tool calls: %w", err)
+ }
+ defer rows.Close()
+
+ var toolCalls []ToolCall
+ for rows.Next() {
+ var tc ToolCall
+ var functionResult sql.NullString
+
+ err := rows.Scan(
+ &tc.Type,
+ &tc.Function.Name,
+ &tc.Function.Arguments,
+ &functionResult,
+ )
+ if err != nil {
+ return nil, fmt.Errorf("scan tool call: %w", err)
+ }
+
+ if functionResult.Valid && functionResult.String != "" {
+ // Parse the JSON result
+ var result json.RawMessage
+ if err := json.Unmarshal([]byte(functionResult.String), &result); err == nil {
+ tc.Function.Result = &result
+ }
+ }
+
+ toolCalls = append(toolCalls, tc)
+ }
+
+ if err := rows.Err(); err != nil {
+ return nil, fmt.Errorf("iterate tool calls: %w", err)
+ }
+
+ return toolCalls, nil
+}
+
+func (db *database) insertAttachment(tx *sql.Tx, messageID int64, file File) error {
+ query := `
+ INSERT INTO attachments (message_id, filename, data)
+ VALUES (?, ?, ?)
+ `
+ _, err := tx.Exec(query, messageID, file.Filename, file.Data)
+ return err
+}
+
+func (db *database) insertToolCall(tx *sql.Tx, messageID int64, tc ToolCall) error {
+ query := `
+ INSERT INTO tool_calls (message_id, type, function_name, function_arguments, function_result)
+ VALUES (?, ?, ?, ?, ?)
+ `
+
+ var functionResult sql.NullString
+ if tc.Function.Result != nil {
+ // Convert result to JSON
+ resultJSON, err := json.Marshal(tc.Function.Result)
+ if err != nil {
+ return fmt.Errorf("marshal tool result: %w", err)
+ }
+ functionResult = sql.NullString{String: string(resultJSON), Valid: true}
+ }
+
+ _, err := tx.Exec(query,
+ messageID,
+ tc.Type,
+ tc.Function.Name,
+ tc.Function.Arguments,
+ functionResult,
+ )
+ return err
+}
+
+// Settings operations
+
+func (db *database) getID() (string, error) {
+ var id string
+ err := db.conn.QueryRow("SELECT device_id FROM settings").Scan(&id)
+ if err != nil {
+ return "", fmt.Errorf("get device id: %w", err)
+ }
+ return id, nil
+}
+
+func (db *database) setID(id string) error {
+ _, err := db.conn.Exec("UPDATE settings SET device_id = ?", id)
+ if err != nil {
+ return fmt.Errorf("set device id: %w", err)
+ }
+ return nil
+}
+
+func (db *database) getHasCompletedFirstRun() (bool, error) {
+ var hasCompletedFirstRun bool
+ err := db.conn.QueryRow("SELECT has_completed_first_run FROM settings").Scan(&hasCompletedFirstRun)
+ if err != nil {
+ return false, fmt.Errorf("get has completed first run: %w", err)
+ }
+ return hasCompletedFirstRun, nil
+}
+
+func (db *database) setHasCompletedFirstRun(hasCompletedFirstRun bool) error {
+ _, err := db.conn.Exec("UPDATE settings SET has_completed_first_run = ?", hasCompletedFirstRun)
+ if err != nil {
+ return fmt.Errorf("set has completed first run: %w", err)
+ }
+ return nil
+}
+
+func (db *database) getSettings() (Settings, error) {
+ var s Settings
+
+ err := db.conn.QueryRow(`
+ SELECT expose, survey, browser, models, agent, tools, working_dir, context_length, airplane_mode, turbo_enabled, websearch_enabled, selected_model, sidebar_open, think_enabled, think_level
+ FROM settings
+ `).Scan(&s.Expose, &s.Survey, &s.Browser, &s.Models, &s.Agent, &s.Tools, &s.WorkingDir, &s.ContextLength, &s.AirplaneMode, &s.TurboEnabled, &s.WebSearchEnabled, &s.SelectedModel, &s.SidebarOpen, &s.ThinkEnabled, &s.ThinkLevel)
+ if err != nil {
+ return Settings{}, fmt.Errorf("get settings: %w", err)
+ }
+
+ return s, nil
+}
+
+func (db *database) setSettings(s Settings) error {
+ _, err := db.conn.Exec(`
+ UPDATE settings
+ SET expose = ?, survey = ?, browser = ?, models = ?, agent = ?, tools = ?, working_dir = ?, context_length = ?, airplane_mode = ?, turbo_enabled = ?, websearch_enabled = ?, selected_model = ?, sidebar_open = ?, think_enabled = ?, think_level = ?
+ `, s.Expose, s.Survey, s.Browser, s.Models, s.Agent, s.Tools, s.WorkingDir, s.ContextLength, s.AirplaneMode, s.TurboEnabled, s.WebSearchEnabled, s.SelectedModel, s.SidebarOpen, s.ThinkEnabled, s.ThinkLevel)
+ if err != nil {
+ return fmt.Errorf("set settings: %w", err)
+ }
+ return nil
+}
+
+func (db *database) getWindowSize() (int, int, error) {
+ var width, height int
+ err := db.conn.QueryRow("SELECT window_width, window_height FROM settings").Scan(&width, &height)
+ if err != nil {
+ return 0, 0, fmt.Errorf("get window size: %w", err)
+ }
+ return width, height, nil
+}
+
+func (db *database) setWindowSize(width, height int) error {
+ _, err := db.conn.Exec("UPDATE settings SET window_width = ?, window_height = ?", width, height)
+ if err != nil {
+ return fmt.Errorf("set window size: %w", err)
+ }
+ return nil
+}
+
+func (db *database) isConfigMigrated() (bool, error) {
+ var migrated bool
+ err := db.conn.QueryRow("SELECT config_migrated FROM settings").Scan(&migrated)
+ if err != nil {
+ return false, fmt.Errorf("get config migrated: %w", err)
+ }
+ return migrated, nil
+}
+
+func (db *database) setConfigMigrated(migrated bool) error {
+ _, err := db.conn.Exec("UPDATE settings SET config_migrated = ?", migrated)
+ if err != nil {
+ return fmt.Errorf("set config migrated: %w", err)
+ }
+ return nil
+}
+
+func (db *database) getSchemaVersion() (int, error) {
+ var version int
+ err := db.conn.QueryRow("SELECT schema_version FROM settings").Scan(&version)
+ if err != nil {
+ return 0, fmt.Errorf("get schema version: %w", err)
+ }
+ return version, nil
+}
+
+func (db *database) setSchemaVersion(version int) error {
+ _, err := db.conn.Exec("UPDATE settings SET schema_version = ?", version)
+ if err != nil {
+ return fmt.Errorf("set schema version: %w", err)
+ }
+ return nil
+}
+
+func (db *database) getUser() (*User, error) {
+ var user User
+ err := db.conn.QueryRow(`
+ SELECT name, email, plan, cached_at
+ FROM users
+ LIMIT 1
+ `).Scan(&user.Name, &user.Email, &user.Plan, &user.CachedAt)
+ if err != nil {
+ if err == sql.ErrNoRows {
+ return nil, nil // No user cached yet
+ }
+ return nil, fmt.Errorf("get user: %w", err)
+ }
+
+ return &user, nil
+}
+
+func (db *database) setUser(user User) error {
+ if err := db.clearUser(); err != nil {
+ return fmt.Errorf("before set: %w", err)
+ }
+
+ _, err := db.conn.Exec(`
+ INSERT INTO users (name, email, plan, cached_at)
+ VALUES (?, ?, ?, ?)
+ `, user.Name, user.Email, user.Plan, user.CachedAt)
+ if err != nil {
+ return fmt.Errorf("set user: %w", err)
+ }
+
+ return nil
+}
+
+func (db *database) clearUser() error {
+ _, err := db.conn.Exec("DELETE FROM users")
+ if err != nil {
+ return fmt.Errorf("clear user: %w", err)
+ }
+ return nil
+}
diff --git a/app/store/database_test.go b/app/store/database_test.go
new file mode 100644
index 000000000..1b037a75d
--- /dev/null
+++ b/app/store/database_test.go
@@ -0,0 +1,407 @@
+//go:build windows || darwin
+
+package store
+
+import (
+ "database/sql"
+ "fmt"
+ "os"
+ "path/filepath"
+ "sort"
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/google/go-cmp/cmp"
+ _ "github.com/mattn/go-sqlite3"
+)
+
+func TestSchemaMigrations(t *testing.T) {
+ t.Run("schema comparison after migration", func(t *testing.T) {
+ tmpDir := t.TempDir()
+ migratedDBPath := filepath.Join(tmpDir, "migrated.db")
+ migratedDB := loadV2Schema(t, migratedDBPath)
+ defer migratedDB.Close()
+
+ if err := migratedDB.migrate(); err != nil {
+ t.Fatalf("migration failed: %v", err)
+ }
+
+ // Create fresh database with current schema
+ freshDBPath := filepath.Join(tmpDir, "fresh.db")
+ freshDB, err := newDatabase(freshDBPath)
+ if err != nil {
+ t.Fatalf("failed to create fresh database: %v", err)
+ }
+ defer freshDB.Close()
+
+ // Extract tables and indexes from both databases, directly comparing their schemas won't work due to ordering
+ migratedSchema := schemaMap(migratedDB)
+ freshSchema := schemaMap(freshDB)
+
+ if !cmp.Equal(migratedSchema, freshSchema) {
+ t.Errorf("Schema difference found:\n%s", cmp.Diff(freshSchema, migratedSchema))
+ }
+
+ // Verify both databases have the same final schema version
+ migratedVersion, _ := migratedDB.getSchemaVersion()
+ freshVersion, _ := freshDB.getSchemaVersion()
+ if migratedVersion != freshVersion {
+ t.Errorf("schema version mismatch: migrated=%d, fresh=%d", migratedVersion, freshVersion)
+ }
+ })
+
+ t.Run("idempotent migrations", func(t *testing.T) {
+ tmpDir := t.TempDir()
+ dbPath := filepath.Join(tmpDir, "test.db")
+ db := loadV2Schema(t, dbPath)
+ defer db.Close()
+
+ // Run migration twice
+ if err := db.migrate(); err != nil {
+ t.Fatalf("first migration failed: %v", err)
+ }
+
+ if err := db.migrate(); err != nil {
+ t.Fatalf("second migration failed: %v", err)
+ }
+
+ // Verify schema version is still correct
+ version, err := db.getSchemaVersion()
+ if err != nil {
+ t.Fatalf("failed to get schema version: %v", err)
+ }
+ if version != currentSchemaVersion {
+ t.Errorf("expected schema version %d after double migration, got %d", currentSchemaVersion, version)
+ }
+ })
+
+ t.Run("init database has correct schema version", func(t *testing.T) {
+ tmpDir := t.TempDir()
+ dbPath := filepath.Join(tmpDir, "test.db")
+ db, err := newDatabase(dbPath)
+ if err != nil {
+ t.Fatalf("failed to create database: %v", err)
+ }
+ defer db.Close()
+
+ // Get the schema version from the newly initialized database
+ version, err := db.getSchemaVersion()
+ if err != nil {
+ t.Fatalf("failed to get schema version: %v", err)
+ }
+
+ // Verify it matches the currentSchemaVersion constant
+ if version != currentSchemaVersion {
+ t.Errorf("expected schema version %d in initialized database, got %d", currentSchemaVersion, version)
+ }
+ })
+}
+
+func TestChatDeletionWithCascade(t *testing.T) {
+ t.Run("chat deletion cascades to related messages", func(t *testing.T) {
+ tmpDir := t.TempDir()
+ dbPath := filepath.Join(tmpDir, "test.db")
+ db, err := newDatabase(dbPath)
+ if err != nil {
+ t.Fatalf("failed to create database: %v", err)
+ }
+ defer db.Close()
+
+ // Create test chat
+ testChatID := "test-chat-cascade-123"
+ testChat := Chat{
+ ID: testChatID,
+ Title: "Test Chat for Cascade Delete",
+ CreatedAt: time.Now(),
+ Messages: []Message{
+ {
+ Role: "user",
+ Content: "Hello, this is a test message",
+ CreatedAt: time.Now(),
+ UpdatedAt: time.Now(),
+ },
+ {
+ Role: "assistant",
+ Content: "Hi there! This is a response.",
+ CreatedAt: time.Now(),
+ UpdatedAt: time.Now(),
+ },
+ },
+ }
+
+ // Save the chat with messages
+ if err := db.saveChat(testChat); err != nil {
+ t.Fatalf("failed to save test chat: %v", err)
+ }
+
+ // Verify chat and messages exist
+ chatCount := countRows(t, db, "chats")
+ messageCount := countRows(t, db, "messages")
+
+ if chatCount != 1 {
+ t.Errorf("expected 1 chat, got %d", chatCount)
+ }
+ if messageCount != 2 {
+ t.Errorf("expected 2 messages, got %d", messageCount)
+ }
+
+ // Verify specific chat exists
+ var exists bool
+ err = db.conn.QueryRow("SELECT EXISTS(SELECT 1 FROM chats WHERE id = ?)", testChatID).Scan(&exists)
+ if err != nil {
+ t.Fatalf("failed to check chat existence: %v", err)
+ }
+ if !exists {
+ t.Error("test chat should exist before deletion")
+ }
+
+ // Verify messages exist for this chat
+ messageCountForChat := countRowsWithCondition(t, db, "messages", "chat_id = ?", testChatID)
+ if messageCountForChat != 2 {
+ t.Errorf("expected 2 messages for test chat, got %d", messageCountForChat)
+ }
+
+ // Delete the chat
+ if err := db.deleteChat(testChatID); err != nil {
+ t.Fatalf("failed to delete chat: %v", err)
+ }
+
+ // Verify chat is deleted
+ chatCountAfter := countRows(t, db, "chats")
+ if chatCountAfter != 0 {
+ t.Errorf("expected 0 chats after deletion, got %d", chatCountAfter)
+ }
+
+ // Verify messages are CASCADE deleted
+ messageCountAfter := countRows(t, db, "messages")
+ if messageCountAfter != 0 {
+ t.Errorf("expected 0 messages after CASCADE deletion, got %d", messageCountAfter)
+ }
+
+ // Verify specific chat no longer exists
+ err = db.conn.QueryRow("SELECT EXISTS(SELECT 1 FROM chats WHERE id = ?)", testChatID).Scan(&exists)
+ if err != nil {
+ t.Fatalf("failed to check chat existence after deletion: %v", err)
+ }
+ if exists {
+ t.Error("test chat should not exist after deletion")
+ }
+
+ // Verify no orphaned messages remain
+ orphanedCount := countRowsWithCondition(t, db, "messages", "chat_id = ?", testChatID)
+ if orphanedCount != 0 {
+ t.Errorf("expected 0 orphaned messages, got %d", orphanedCount)
+ }
+ })
+
+ t.Run("foreign keys are enabled", func(t *testing.T) {
+ tmpDir := t.TempDir()
+ dbPath := filepath.Join(tmpDir, "test.db")
+ db, err := newDatabase(dbPath)
+ if err != nil {
+ t.Fatalf("failed to create database: %v", err)
+ }
+ defer db.Close()
+
+ // Verify foreign keys are enabled
+ var foreignKeysEnabled int
+ err = db.conn.QueryRow("PRAGMA foreign_keys").Scan(&foreignKeysEnabled)
+ if err != nil {
+ t.Fatalf("failed to check foreign keys: %v", err)
+ }
+ if foreignKeysEnabled != 1 {
+ t.Errorf("expected foreign keys to be enabled (1), got %d", foreignKeysEnabled)
+ }
+ })
+
+ // This test is only relevant for v8 migrations, but we keep it here for now
+ // since it's a useful test to ensure that we don't introduce any new orphaned data
+ t.Run("cleanup orphaned data", func(t *testing.T) {
+ tmpDir := t.TempDir()
+ dbPath := filepath.Join(tmpDir, "test.db")
+ db, err := newDatabase(dbPath)
+ if err != nil {
+ t.Fatalf("failed to create database: %v", err)
+ }
+ defer db.Close()
+
+ // First disable foreign keys to simulate the bug from ollama/ollama#11785
+ _, err = db.conn.Exec("PRAGMA foreign_keys = OFF")
+ if err != nil {
+ t.Fatalf("failed to disable foreign keys: %v", err)
+ }
+
+ // Create a chat and message
+ testChatID := "orphaned-test-chat"
+ testMessageID := int64(999)
+
+ _, err = db.conn.Exec("INSERT INTO chats (id, title) VALUES (?, ?)", testChatID, "Orphaned Test Chat")
+ if err != nil {
+ t.Fatalf("failed to insert test chat: %v", err)
+ }
+
+ _, err = db.conn.Exec("INSERT INTO messages (id, chat_id, role, content) VALUES (?, ?, ?, ?)",
+ testMessageID, testChatID, "user", "test message")
+ if err != nil {
+ t.Fatalf("failed to insert test message: %v", err)
+ }
+
+ // Delete chat but keep message (simulating the bug from ollama/ollama#11785)
+ _, err = db.conn.Exec("DELETE FROM chats WHERE id = ?", testChatID)
+ if err != nil {
+ t.Fatalf("failed to delete chat: %v", err)
+ }
+
+ // Verify we have orphaned message
+ orphanedCount := countRowsWithCondition(t, db, "messages", "chat_id = ?", testChatID)
+ if orphanedCount != 1 {
+ t.Errorf("expected 1 orphaned message, got %d", orphanedCount)
+ }
+
+ // Run cleanup
+ if err := db.cleanupOrphanedData(); err != nil {
+ t.Fatalf("failed to cleanup orphaned data: %v", err)
+ }
+
+ // Verify orphaned message is gone
+ orphanedCountAfter := countRowsWithCondition(t, db, "messages", "chat_id = ?", testChatID)
+ if orphanedCountAfter != 0 {
+ t.Errorf("expected 0 orphaned messages after cleanup, got %d", orphanedCountAfter)
+ }
+ })
+}
+
+func countRows(t *testing.T, db *database, table string) int {
+ t.Helper()
+ var count int
+ err := db.conn.QueryRow(fmt.Sprintf("SELECT COUNT(*) FROM %s", table)).Scan(&count)
+ if err != nil {
+ t.Fatalf("failed to count rows in %s: %v", table, err)
+ }
+ return count
+}
+
+func countRowsWithCondition(t *testing.T, db *database, table, condition string, args ...interface{}) int {
+ t.Helper()
+ var count int
+ query := fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE %s", table, condition)
+ err := db.conn.QueryRow(query, args...).Scan(&count)
+ if err != nil {
+ t.Fatalf("failed to count rows with condition: %v", err)
+ }
+ return count
+}
+
+// Test helpers for schema migration testing
+
+// schemaMap returns both tables/columns and indexes (ignoring order)
+func schemaMap(db *database) map[string]interface{} {
+ result := make(map[string]any)
+
+ result["tables"] = columnMap(db)
+ result["indexes"] = indexMap(db)
+
+ return result
+}
+
+// columnMap returns a map of table names to their column sets (ignoring order)
+func columnMap(db *database) map[string][]string {
+ result := make(map[string][]string)
+
+ // Get all table names
+ tableQuery := `SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name`
+ rows, _ := db.conn.Query(tableQuery)
+ defer rows.Close()
+
+ for rows.Next() {
+ var tableName string
+ rows.Scan(&tableName)
+
+ // Get columns for this table
+ colQuery := fmt.Sprintf("PRAGMA table_info(%s)", tableName)
+ colRows, _ := db.conn.Query(colQuery)
+
+ var columns []string
+ for colRows.Next() {
+ var cid int
+ var name, dataType sql.NullString
+ var notNull, primaryKey int
+ var defaultValue sql.NullString
+
+ colRows.Scan(&cid, &name, &dataType, ¬Null, &defaultValue, &primaryKey)
+
+ // Create a normalized column description
+ colDesc := fmt.Sprintf("%s %s", name.String, dataType.String)
+ if notNull == 1 {
+ colDesc += " NOT NULL"
+ }
+ if defaultValue.Valid && defaultValue.String != "" {
+ // Skip DEFAULT for schema_version as it doesn't get updated during migrations
+ if name.String != "schema_version" {
+ colDesc += " DEFAULT " + defaultValue.String
+ }
+ }
+ if primaryKey == 1 {
+ colDesc += " PRIMARY KEY"
+ }
+
+ columns = append(columns, colDesc)
+ }
+ colRows.Close()
+
+ // Sort columns to ignore order differences
+ sort.Strings(columns)
+ result[tableName] = columns
+ }
+
+ return result
+}
+
+// indexMap returns a map of index names to their definitions
+func indexMap(db *database) map[string]string {
+ result := make(map[string]string)
+
+ // Get all indexes (excluding auto-created primary key indexes)
+ indexQuery := `SELECT name, sql FROM sqlite_master WHERE type='index' AND name NOT LIKE 'sqlite_%' AND sql IS NOT NULL ORDER BY name`
+ rows, _ := db.conn.Query(indexQuery)
+ defer rows.Close()
+
+ for rows.Next() {
+ var name, sql string
+ rows.Scan(&name, &sql)
+
+ // Normalize the SQL by removing extra whitespace
+ sql = strings.Join(strings.Fields(sql), " ")
+ result[name] = sql
+ }
+
+ return result
+}
+
+// loadV2Schema loads the version 2 schema from testdata/schema.sql
+func loadV2Schema(t *testing.T, dbPath string) *database {
+ t.Helper()
+
+ // Read the v1 schema file
+ schemaFile := filepath.Join("testdata", "schema.sql")
+ schemaSQL, err := os.ReadFile(schemaFile)
+ if err != nil {
+ t.Fatalf("failed to read schema file: %v", err)
+ }
+
+ // Open database connection
+ conn, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=on&_journal_mode=WAL&_busy_timeout=5000&_txlock=immediate")
+ if err != nil {
+ t.Fatalf("failed to open database: %v", err)
+ }
+
+ // Execute the v1 schema
+ _, err = conn.Exec(string(schemaSQL))
+ if err != nil {
+ conn.Close()
+ t.Fatalf("failed to execute v1 schema: %v", err)
+ }
+
+ return &database{conn: conn}
+}
diff --git a/app/store/image.go b/app/store/image.go
new file mode 100644
index 000000000..c7e6f9fd8
--- /dev/null
+++ b/app/store/image.go
@@ -0,0 +1,128 @@
+//go:build windows || darwin
+
+package store
+
+import (
+ "crypto/sha256"
+ "encoding/hex"
+ "fmt"
+ "os"
+ "path/filepath"
+ "strings"
+)
+
+type Image struct {
+ Filename string `json:"filename"`
+ Path string `json:"path"`
+ Size int64 `json:"size,omitempty"`
+ MimeType string `json:"mime_type,omitempty"`
+}
+
+// Bytes loads image data from disk for a given ImageData reference
+func (i *Image) Bytes() ([]byte, error) {
+ return ImgBytes(i.Path)
+}
+
+// ImgBytes reads image data from the specified file path
+func ImgBytes(path string) ([]byte, error) {
+ if path == "" {
+ return nil, fmt.Errorf("empty image path")
+ }
+
+ data, err := os.ReadFile(path)
+ if err != nil {
+ return nil, fmt.Errorf("read image file %s: %w", path, err)
+ }
+
+ return data, nil
+}
+
+// ImgDir returns the directory path for storing images for a specific chat
+func (s *Store) ImgDir() string {
+ dbPath := s.DBPath
+ if dbPath == "" {
+ dbPath = defaultDBPath
+ }
+ storeDir := filepath.Dir(dbPath)
+ return filepath.Join(storeDir, "cache", "images")
+}
+
+// ImgToFile saves image data to disk and returns ImageData reference
+func (s *Store) ImgToFile(chatID string, imageBytes []byte, filename, mimeType string) (Image, error) {
+ baseImageDir := s.ImgDir()
+ if err := os.MkdirAll(baseImageDir, 0o755); err != nil {
+ return Image{}, fmt.Errorf("create base image directory: %w", err)
+ }
+
+ // Root prevents path traversal issues
+ root, err := os.OpenRoot(baseImageDir)
+ if err != nil {
+ return Image{}, fmt.Errorf("open image root directory: %w", err)
+ }
+ defer root.Close()
+
+ // Create chat-specific subdirectory within the root
+ chatDir := sanitize(chatID)
+ if err := root.Mkdir(chatDir, 0o755); err != nil && !os.IsExist(err) {
+ return Image{}, fmt.Errorf("create chat directory: %w", err)
+ }
+
+ // Generate a unique filename to avoid conflicts
+ // Use hash of content + original filename for uniqueness
+ hash := sha256.Sum256(imageBytes)
+ hashStr := hex.EncodeToString(hash[:])[:16] // Use first 16 chars of hash
+
+ // Extract file extension from original filename or mime type
+ ext := filepath.Ext(filename)
+ if ext == "" {
+ switch mimeType {
+ case "image/jpeg":
+ ext = ".jpg"
+ case "image/png":
+ ext = ".png"
+ case "image/webp":
+ ext = ".webp"
+ default:
+ ext = ".img"
+ }
+ }
+
+ // Create unique filename: hash + original name + extension
+ baseFilename := sanitize(strings.TrimSuffix(filename, ext))
+ uniqueFilename := fmt.Sprintf("%s_%s%s", hashStr, baseFilename, ext)
+ relativePath := filepath.Join(chatDir, uniqueFilename)
+ file, err := root.Create(relativePath)
+ if err != nil {
+ return Image{}, fmt.Errorf("create image file: %w", err)
+ }
+ defer file.Close()
+
+ if _, err := file.Write(imageBytes); err != nil {
+ return Image{}, fmt.Errorf("write image data: %w", err)
+ }
+
+ return Image{
+ Filename: uniqueFilename,
+ Path: filepath.Join(baseImageDir, relativePath),
+ Size: int64(len(imageBytes)),
+ MimeType: mimeType,
+ }, nil
+}
+
+// sanitize removes unsafe characters from filenames
+func sanitize(filename string) string {
+ // Convert to safe characters only
+ safe := strings.Map(func(r rune) rune {
+ if (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z') || (r >= '0' && r <= '9') || r == '-' {
+ return r
+ }
+ return '_'
+ }, filename)
+
+ // Clean up and validate
+ safe = strings.Trim(safe, "_")
+ if safe == "" {
+ return "image"
+ }
+ return safe
+}
diff --git a/app/store/migration_test.go b/app/store/migration_test.go
new file mode 100644
index 000000000..57b37b706
--- /dev/null
+++ b/app/store/migration_test.go
@@ -0,0 +1,231 @@
+//go:build windows || darwin
+
+package store
+
+import (
+ "database/sql"
+ "encoding/json"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+func TestConfigMigration(t *testing.T) {
+ tmpDir := t.TempDir()
+ // Create a legacy config.json
+ legacyConfig := legacyData{
+ ID: "test-device-id-12345",
+ FirstTimeRun: true, // In old system, true meant "has completed first run"
+ }
+
+ configData, err := json.MarshalIndent(legacyConfig, "", " ")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ configPath := filepath.Join(tmpDir, "config.json")
+ if err := os.WriteFile(configPath, configData, 0o644); err != nil {
+ t.Fatal(err)
+ }
+
+ // Override the legacy config path for testing
+ oldLegacyConfigPath := legacyConfigPath
+ legacyConfigPath = configPath
+ defer func() { legacyConfigPath = oldLegacyConfigPath }()
+
+ // Create store with database in same directory
+ s := Store{DBPath: filepath.Join(tmpDir, "db.sqlite")}
+ defer s.Close()
+
+ // First access should trigger migration
+ id, err := s.ID()
+ if err != nil {
+ t.Fatalf("failed to get ID: %v", err)
+ }
+
+ if id != "test-device-id-12345" {
+ t.Errorf("expected migrated ID 'test-device-id-12345', got '%s'", id)
+ }
+
+ // Check HasCompletedFirstRun
+ hasCompleted, err := s.HasCompletedFirstRun()
+ if err != nil {
+ t.Fatalf("failed to get has completed first run: %v", err)
+ }
+
+ if !hasCompleted {
+ t.Error("expected has completed first run to be true after migration")
+ }
+
+ // Verify migration is marked as complete
+ migrated, err := s.db.isConfigMigrated()
+ if err != nil {
+ t.Fatalf("failed to check migration status: %v", err)
+ }
+
+ if !migrated {
+ t.Error("expected config to be marked as migrated")
+ }
+
+ // Create a new store instance to verify migration doesn't run again
+ s2 := Store{DBPath: filepath.Join(tmpDir, "db.sqlite")}
+ defer s2.Close()
+
+ // Delete the config file to ensure we're not reading from it
+ os.Remove(configPath)
+
+ // Verify data is still there
+ id2, err := s2.ID()
+ if err != nil {
+ t.Fatalf("failed to get ID from second store: %v", err)
+ }
+
+ if id2 != "test-device-id-12345" {
+ t.Errorf("expected persisted ID 'test-device-id-12345', got '%s'", id2)
+ }
+}
+
+func TestNoConfigToMigrate(t *testing.T) {
+ tmpDir := t.TempDir()
+ // Override the legacy config path for testing
+ oldLegacyConfigPath := legacyConfigPath
+ legacyConfigPath = filepath.Join(tmpDir, "config.json")
+ defer func() { legacyConfigPath = oldLegacyConfigPath }()
+
+ // Create store without any config.json
+ s := Store{DBPath: filepath.Join(tmpDir, "db.sqlite")}
+ defer s.Close()
+
+ // Should generate a new ID
+ id, err := s.ID()
+ if err != nil {
+ t.Fatalf("failed to get ID: %v", err)
+ }
+
+ if id == "" {
+ t.Error("expected auto-generated ID, got empty string")
+ }
+
+ // HasCompletedFirstRun should be false (default)
+ hasCompleted, err := s.HasCompletedFirstRun()
+ if err != nil {
+ t.Fatalf("failed to get has completed first run: %v", err)
+ }
+
+ if hasCompleted {
+ t.Error("expected has completed first run to be false by default")
+ }
+
+ // Migration should still be marked as complete
+ migrated, err := s.db.isConfigMigrated()
+ if err != nil {
+ t.Fatalf("failed to check migration status: %v", err)
+ }
+
+ if !migrated {
+ t.Error("expected config to be marked as migrated even with no config.json")
+ }
+}
+
+const (
+ v1Schema = `
+ CREATE TABLE IF NOT EXISTS settings (
+ id INTEGER PRIMARY KEY CHECK (id = 1),
+ device_id TEXT NOT NULL DEFAULT '',
+ has_completed_first_run BOOLEAN NOT NULL DEFAULT 0,
+ expose BOOLEAN NOT NULL DEFAULT 0,
+ browser BOOLEAN NOT NULL DEFAULT 0,
+ models TEXT NOT NULL DEFAULT '',
+ remote TEXT NOT NULL DEFAULT '',
+ agent BOOLEAN NOT NULL DEFAULT 0,
+ tools BOOLEAN NOT NULL DEFAULT 0,
+ working_dir TEXT NOT NULL DEFAULT '',
+ window_width INTEGER NOT NULL DEFAULT 0,
+ window_height INTEGER NOT NULL DEFAULT 0,
+ config_migrated BOOLEAN NOT NULL DEFAULT 0,
+ schema_version INTEGER NOT NULL DEFAULT 1
+ );
+
+ -- Insert default settings row if it doesn't exist
+ INSERT OR IGNORE INTO settings (id) VALUES (1);
+
+ CREATE TABLE IF NOT EXISTS chats (
+ id TEXT PRIMARY KEY,
+ title TEXT NOT NULL DEFAULT '',
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+ );
+
+ CREATE TABLE IF NOT EXISTS messages (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ chat_id TEXT NOT NULL,
+ role TEXT NOT NULL,
+ content TEXT NOT NULL DEFAULT '',
+ thinking TEXT NOT NULL DEFAULT '',
+ stream BOOLEAN NOT NULL DEFAULT 0,
+ model_name TEXT,
+ model_cloud BOOLEAN,
+ model_ollama_host BOOLEAN,
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ thinking_time_start TIMESTAMP,
+ thinking_time_end TIMESTAMP,
+ FOREIGN KEY (chat_id) REFERENCES chats(id) ON DELETE CASCADE
+ );
+
+ CREATE INDEX IF NOT EXISTS idx_messages_chat_id ON messages(chat_id);
+
+ CREATE TABLE IF NOT EXISTS tool_calls (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ message_id INTEGER NOT NULL,
+ type TEXT NOT NULL,
+ function_name TEXT NOT NULL,
+ function_arguments TEXT NOT NULL,
+ function_result TEXT,
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
+ );
+
+ CREATE INDEX IF NOT EXISTS idx_tool_calls_message_id ON tool_calls(message_id);
+ `
+)
+
+func TestMigrationFromEpoc(t *testing.T) {
+ tmpDir := t.TempDir()
+ s := Store{DBPath: filepath.Join(tmpDir, "db.sqlite")}
+ defer s.Close()
+ // Open database connection
+ conn, err := sql.Open("sqlite3", s.DBPath+"?_foreign_keys=on&_journal_mode=WAL")
+ if err != nil {
+ t.Fatal(err)
+ }
+ // Test the connection
+ if err := conn.Ping(); err != nil {
+ conn.Close()
+ t.Fatal(err)
+ }
+ s.db = &database{conn: conn}
+ t.Logf("DB created: %s", s.DBPath)
+ _, err = s.db.conn.Exec(v1Schema)
+ if err != nil {
+ t.Fatal(err)
+ }
+ version, err := s.db.getSchemaVersion()
+ if err != nil {
+ t.Fatalf("failed to get schema version: %v", err)
+ }
+ if version != 1 {
+ t.Fatalf("expected: %d\n got: %d", 1, version)
+ }
+
+ t.Logf("v1 schema created")
+ if err := s.db.migrate(); err != nil {
+ t.Fatal(err)
+ }
+ t.Logf("migrations completed")
+ version, err = s.db.getSchemaVersion()
+ if err != nil {
+ t.Fatalf("failed to get schema version: %v", err)
+ }
+ if version != currentSchemaVersion {
+ t.Fatalf("expected: %d\n got: %d", currentSchemaVersion, version)
+ }
+}
diff --git a/app/store/schema.sql b/app/store/schema.sql
new file mode 100644
index 000000000..8f944ff85
--- /dev/null
+++ b/app/store/schema.sql
@@ -0,0 +1,61 @@
+-- This is the version 2 schema for the app database, the first released schema to users.
+-- Do not modify this file. It is used to test that the database schema stays in a consistent state between schema migrations.
+
+CREATE TABLE IF NOT EXISTS settings (
+ id INTEGER PRIMARY KEY CHECK (id = 1),
+ device_id TEXT NOT NULL DEFAULT '',
+ has_completed_first_run BOOLEAN NOT NULL DEFAULT 0,
+ expose BOOLEAN NOT NULL DEFAULT 0,
+ survey BOOLEAN NOT NULL DEFAULT TRUE,
+ browser BOOLEAN NOT NULL DEFAULT 0,
+ models TEXT NOT NULL DEFAULT '',
+ remote TEXT NOT NULL DEFAULT '',
+ agent BOOLEAN NOT NULL DEFAULT 0,
+ tools BOOLEAN NOT NULL DEFAULT 0,
+ working_dir TEXT NOT NULL DEFAULT '',
+ context_length INTEGER NOT NULL DEFAULT 4096,
+ window_width INTEGER NOT NULL DEFAULT 0,
+ window_height INTEGER NOT NULL DEFAULT 0,
+ config_migrated BOOLEAN NOT NULL DEFAULT 0,
+ schema_version INTEGER NOT NULL DEFAULT 2
+);
+
+-- Insert default settings row if it doesn't exist
+INSERT OR IGNORE INTO settings (id) VALUES (1);
+
+CREATE TABLE IF NOT EXISTS chats (
+ id TEXT PRIMARY KEY,
+ title TEXT NOT NULL DEFAULT '',
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE TABLE IF NOT EXISTS messages (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ chat_id TEXT NOT NULL,
+ role TEXT NOT NULL,
+ content TEXT NOT NULL DEFAULT '',
+ thinking TEXT NOT NULL DEFAULT '',
+ stream BOOLEAN NOT NULL DEFAULT 0,
+ model_name TEXT,
+ model_cloud BOOLEAN,
+ model_ollama_host BOOLEAN,
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ thinking_time_start TIMESTAMP,
+ thinking_time_end TIMESTAMP,
+ FOREIGN KEY (chat_id) REFERENCES chats(id) ON DELETE CASCADE
+);
+
+CREATE INDEX IF NOT EXISTS idx_messages_chat_id ON messages(chat_id);
+
+CREATE TABLE IF NOT EXISTS tool_calls (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ message_id INTEGER NOT NULL,
+ type TEXT NOT NULL,
+ function_name TEXT NOT NULL,
+ function_arguments TEXT NOT NULL,
+ function_result TEXT,
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
+);
+
+CREATE INDEX IF NOT EXISTS idx_tool_calls_message_id ON tool_calls(message_id);
diff --git a/app/store/schema_test.go b/app/store/schema_test.go
new file mode 100644
index 000000000..a6d469000
--- /dev/null
+++ b/app/store/schema_test.go
@@ -0,0 +1,60 @@
+//go:build windows || darwin
+
+package store
+
+import (
+ "path/filepath"
+ "testing"
+)
+
+func TestSchemaVersioning(t *testing.T) {
+ tmpDir := t.TempDir()
+ // Override legacy config path to avoid migration logs
+ oldLegacyConfigPath := legacyConfigPath
+ legacyConfigPath = filepath.Join(tmpDir, "config.json")
+ defer func() { legacyConfigPath = oldLegacyConfigPath }()
+
+ t.Run("new database has correct schema version", func(t *testing.T) {
+ dbPath := filepath.Join(tmpDir, "new_db.sqlite")
+ db, err := newDatabase(dbPath)
+ if err != nil {
+ t.Fatalf("failed to create database: %v", err)
+ }
+ defer db.Close()
+
+ // Check schema version
+ version, err := db.getSchemaVersion()
+ if err != nil {
+ t.Fatalf("failed to get schema version: %v", err)
+ }
+
+ if version != currentSchemaVersion {
+ t.Errorf("expected schema version %d, got %d", currentSchemaVersion, version)
+ }
+ })
+
+ t.Run("can update schema version", func(t *testing.T) {
+ dbPath := filepath.Join(tmpDir, "update_db.sqlite")
+ db, err := newDatabase(dbPath)
+ if err != nil {
+ t.Fatalf("failed to create database: %v", err)
+ }
+ defer db.Close()
+
+ // Set a different version
+ testVersion := 42
+ if err := db.setSchemaVersion(testVersion); err != nil {
+ t.Fatalf("failed to set schema version: %v", err)
+ }
+
+ // Verify it was updated
+ version, err := db.getSchemaVersion()
+ if err != nil {
+ t.Fatalf("failed to get schema version: %v", err)
+ }
+
+ if version != testVersion {
+ t.Errorf("expected schema version %d, got %d", testVersion, version)
+ }
+ })
+}
diff --git a/app/store/store.go b/app/store/store.go
index 370436c58..052fcd617 100644
--- a/app/store/store.go
+++ b/app/store/store.go
@@ -1,97 +1,495 @@
+//go:build windows || darwin
+
+// Package store provides a simple JSON file store for the desktop application
+// to save and load data such as ollama server configuration, messages,
+// login information and more.
package store
import (
"encoding/json"
- "errors"
"fmt"
"log/slog"
"os"
"path/filepath"
+ "runtime"
"sync"
+ "time"
"github.com/google/uuid"
+ "github.com/ollama/ollama/app/types/not"
)
+type File struct {
+ Filename string `json:"filename"`
+ Data []byte `json:"data"`
+}
+
+type User struct {
+ Name string `json:"name"`
+ Email string `json:"email"`
+ Plan string `json:"plan"`
+ CachedAt time.Time `json:"cachedAt"`
+}
+
+type Message struct {
+ Role string `json:"role"`
+ Content string `json:"content"`
+ Thinking string `json:"thinking"`
+ Stream bool `json:"stream"`
+ Model string `json:"model,omitempty"`
+ Attachments []File `json:"attachments,omitempty"`
+ ToolCalls []ToolCall `json:"tool_calls,omitempty"`
+ ToolCall *ToolCall `json:"tool_call,omitempty"`
+ ToolName string `json:"tool_name,omitempty"`
+ ToolResult *json.RawMessage `json:"tool_result,omitempty"`
+ CreatedAt time.Time `json:"created_at"`
+ UpdatedAt time.Time `json:"updated_at"`
+ ThinkingTimeStart *time.Time `json:"thinkingTimeStart,omitempty" ts_type:"Date | undefined" ts_transform:"__VALUE__ && new Date(__VALUE__)"`
+ ThinkingTimeEnd *time.Time `json:"thinkingTimeEnd,omitempty" ts_type:"Date | undefined" ts_transform:"__VALUE__ && new Date(__VALUE__)"`
+}
+
+// MessageOptions contains optional parameters for creating a Message
+type MessageOptions struct {
+ Model string
+ Attachments []File
+ Stream bool
+ Thinking string
+ ToolCalls []ToolCall
+ ToolCall *ToolCall
+ ToolResult *json.RawMessage
+ ThinkingTimeStart *time.Time
+ ThinkingTimeEnd *time.Time
+}
+
+// NewMessage creates a new Message with the given options
+func NewMessage(role, content string, opts *MessageOptions) Message {
+ now := time.Now()
+ msg := Message{
+ Role: role,
+ Content: content,
+ CreatedAt: now,
+ UpdatedAt: now,
+ }
+
+ if opts != nil {
+ msg.Model = opts.Model
+ msg.Attachments = opts.Attachments
+ msg.Stream = opts.Stream
+ msg.Thinking = opts.Thinking
+ msg.ToolCalls = opts.ToolCalls
+ msg.ToolCall = opts.ToolCall
+ msg.ToolResult = opts.ToolResult
+ msg.ThinkingTimeStart = opts.ThinkingTimeStart
+ msg.ThinkingTimeEnd = opts.ThinkingTimeEnd
+ }
+
+ return msg
+}
+
+type ToolCall struct {
+ Type string `json:"type"`
+ Function ToolFunction `json:"function"`
+}
+
+type ToolFunction struct {
+ Name string `json:"name"`
+ Arguments string `json:"arguments"`
+ Result any `json:"result,omitempty"`
+}
+
+type Model struct {
+ Model string `json:"model"` // Model name
+ Digest string `json:"digest,omitempty"` // Model digest from the registry
+ ModifiedAt *time.Time `json:"modified_at,omitempty"` // When the model was last modified locally
+}
+
+type Chat struct {
+ ID string `json:"id"`
+ Messages []Message `json:"messages"`
+ Title string `json:"title"`
+ CreatedAt time.Time `json:"created_at"`
+ BrowserState json.RawMessage `json:"browser_state,omitempty" ts_type:"BrowserStateData"`
+}
+
+// NewChat creates a new Chat with the ID, with CreatedAt timestamp initialized
+func NewChat(id string) *Chat {
+ return &Chat{
+ ID: id,
+ Messages: []Message{},
+ CreatedAt: time.Now(),
+ }
+}
+
+type Settings struct {
+ // Expose is a boolean that indicates if the ollama server should
+ // be exposed to the network
+ Expose bool
+
+ // Browser is a boolean that indicates if the ollama server should
+ // be exposed to browser windows (e.g. CORS set to allow all origins)
+ Browser bool
+
+ // Survey is a boolean that indicates if the user allows anonymous
+ // inference information to be shared with Ollama
+ Survey bool
+
+ // Models is a string that contains the models to load on startup
+ Models string
+
+ // TODO(parthsareen): temporary for experimentation
+ // Agent indicates if the app should use multi-turn tools to fulfill user requests
+ Agent bool
+
+ // Tools indicates if the app should use single-turn tools to fulfill user requests
+ Tools bool
+
+ // WorkingDir specifies the working directory for all agent operations
+ WorkingDir string
+
+ // ContextLength specifies the context length for the ollama server (using OLLAMA_CONTEXT_LENGTH)
+ ContextLength int
+
+ // AirplaneMode when true, turns off Ollama Turbo features and only uses local models
+ AirplaneMode bool
+
+ // TurboEnabled indicates if Ollama Turbo features are enabled
+ TurboEnabled bool
+
+ // Maps gpt-oss specific frontend name' BrowserToolEnabled' to db field 'websearch_enabled'
+ WebSearchEnabled bool
+
+ // ThinkEnabled indicates if thinking is enabled
+ ThinkEnabled bool
+
+ // ThinkLevel indicates the level of thinking to use for models that support multiple levels
+ ThinkLevel string
+
+ // SelectedModel stores the last model that the user selected
+ SelectedModel string
+
+ // SidebarOpen indicates if the chat sidebar is open
+ SidebarOpen bool
+}
+
type Store struct {
+ // DBPath allows overriding the default database path (mainly for testing)
+ DBPath string
+
+ // dbMu protects database initialization only
+ dbMu sync.Mutex
+ db *database
+}
+
+var defaultDBPath = func() string {
+ switch runtime.GOOS {
+ case "windows":
+ return filepath.Join(os.Getenv("LOCALAPPDATA"), "Ollama", "db.sqlite")
+ case "darwin":
+ return filepath.Join(os.Getenv("HOME"), "Library", "Application Support", "Ollama", "db.sqlite")
+ default:
+ return filepath.Join(os.Getenv("HOME"), ".ollama", "db.sqlite")
+ }
+}()
+
+// legacyConfigPath is the path to the old config.json file
+var legacyConfigPath = func() string {
+ switch runtime.GOOS {
+ case "windows":
+ return filepath.Join(os.Getenv("LOCALAPPDATA"), "Ollama", "config.json")
+ case "darwin":
+ return filepath.Join(os.Getenv("HOME"), "Library", "Application Support", "Ollama", "config.json")
+ default:
+ return filepath.Join(os.Getenv("HOME"), ".ollama", "config.json")
+ }
+}()
+
+// legacyData represents the old config.json structure (only fields we need to migrate)
+type legacyData struct {
ID string `json:"id"`
FirstTimeRun bool `json:"first-time-run"`
}
-var (
- lock sync.Mutex
- store Store
-)
-
-func GetID() string {
- lock.Lock()
- defer lock.Unlock()
- if store.ID == "" {
- initStore()
+func (s *Store) ensureDB() error {
+ // Fast path: check if db is already initialized
+ if s.db != nil {
+ return nil
}
- return store.ID
-}
-func GetFirstTimeRun() bool {
- lock.Lock()
- defer lock.Unlock()
- if store.ID == "" {
- initStore()
+ // Slow path: initialize database with lock
+ s.dbMu.Lock()
+ defer s.dbMu.Unlock()
+
+ // Double-check after acquiring lock
+ if s.db != nil {
+ return nil
}
- return store.FirstTimeRun
-}
-func SetFirstTimeRun(val bool) {
- lock.Lock()
- defer lock.Unlock()
- if store.FirstTimeRun == val {
- return
+ dbPath := s.DBPath
+ if dbPath == "" {
+ dbPath = defaultDBPath
}
- store.FirstTimeRun = val
- writeStore(getStorePath())
-}
-// lock must be held
-func initStore() {
- storeFile, err := os.Open(getStorePath())
- if err == nil {
- defer storeFile.Close()
- err = json.NewDecoder(storeFile).Decode(&store)
+ // Ensure directory exists
+ if err := os.MkdirAll(filepath.Dir(dbPath), 0o755); err != nil {
+ return fmt.Errorf("create db directory: %w", err)
+ }
+
+ database, err := newDatabase(dbPath)
+ if err != nil {
+ return fmt.Errorf("open database: %w", err)
+ }
+
+ // Generate device ID if needed
+ id, err := database.getID()
+ if err != nil || id == "" {
+ // Generate new UUID for device
+ u, err := uuid.NewV7()
if err == nil {
- slog.Debug(fmt.Sprintf("loaded existing store %s - ID: %s", getStorePath(), store.ID))
- return
+ database.setID(u.String())
}
- } else if !errors.Is(err, os.ErrNotExist) {
- slog.Debug(fmt.Sprintf("unexpected error searching for store: %s", err))
}
- slog.Debug("initializing new store")
- store.ID = uuid.NewString()
- writeStore(getStorePath())
+
+ s.db = database
+
+ // Check if we need to migrate from config.json
+ migrated, err := database.isConfigMigrated()
+ if err != nil || !migrated {
+ if err := s.migrateFromConfig(database); err != nil {
+ slog.Warn("failed to migrate from config.json", "error", err)
+ }
+ }
+
+ return nil
}
-func writeStore(storeFilename string) {
- ollamaDir := filepath.Dir(storeFilename)
- _, err := os.Stat(ollamaDir)
- if errors.Is(err, os.ErrNotExist) {
- if err := os.MkdirAll(ollamaDir, 0o755); err != nil {
- slog.Error(fmt.Sprintf("create ollama dir %s: %v", ollamaDir, err))
- return
+// migrateFromConfig attempts to migrate ID and FirstTimeRun from config.json
+func (s *Store) migrateFromConfig(database *database) error {
+ configPath := legacyConfigPath
+
+ // Check if config.json exists
+ if _, err := os.Stat(configPath); os.IsNotExist(err) {
+ // No config to migrate, mark as migrated
+ return database.setConfigMigrated(true)
+ }
+
+ // Read the config file
+ b, err := os.ReadFile(configPath)
+ if err != nil {
+ return fmt.Errorf("read legacy config: %w", err)
+ }
+
+ var legacy legacyData
+ if err := json.Unmarshal(b, &legacy); err != nil {
+ // If we can't parse it, just mark as migrated and move on
+ slog.Warn("failed to parse legacy config.json", "error", err)
+ return database.setConfigMigrated(true)
+ }
+
+ // Migrate the ID if present
+ if legacy.ID != "" {
+ if err := database.setID(legacy.ID); err != nil {
+ return fmt.Errorf("migrate device ID: %w", err)
+ }
+ slog.Info("migrated device ID from config.json")
+ }
+
+ hasCompleted := legacy.FirstTimeRun // If old FirstTimeRun is true, it means first run was completed
+ if err := database.setHasCompletedFirstRun(hasCompleted); err != nil {
+ return fmt.Errorf("migrate first time run: %w", err)
+ }
+ slog.Info("migrated first run status from config.json", "hasCompleted", hasCompleted)
+
+ // Mark as migrated
+ if err := database.setConfigMigrated(true); err != nil {
+ return fmt.Errorf("mark config as migrated: %w", err)
+ }
+
+ slog.Info("successfully migrated settings from config.json")
+ return nil
+}
+
+func (s *Store) ID() (string, error) {
+ if err := s.ensureDB(); err != nil {
+ return "", err
+ }
+
+ return s.db.getID()
+}
+
+func (s *Store) HasCompletedFirstRun() (bool, error) {
+ if err := s.ensureDB(); err != nil {
+ return false, err
+ }
+
+ return s.db.getHasCompletedFirstRun()
+}
+
+func (s *Store) SetHasCompletedFirstRun(hasCompleted bool) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.setHasCompletedFirstRun(hasCompleted)
+}
+
+func (s *Store) Settings() (Settings, error) {
+ if err := s.ensureDB(); err != nil {
+ return Settings{}, fmt.Errorf("load settings: %w", err)
+ }
+
+ settings, err := s.db.getSettings()
+ if err != nil {
+ return Settings{}, err
+ }
+
+ // Set default models directory if not set
+ if settings.Models == "" {
+ dir := os.Getenv("OLLAMA_MODELS")
+ if dir != "" {
+ settings.Models = dir
+ } else {
+ home, err := os.UserHomeDir()
+ if err == nil {
+ settings.Models = filepath.Join(home, ".ollama", "models")
+ }
}
}
- payload, err := json.Marshal(store)
- if err != nil {
- slog.Error(fmt.Sprintf("failed to marshal store: %s", err))
- return
- }
- fp, err := os.OpenFile(storeFilename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o755)
- if err != nil {
- slog.Error(fmt.Sprintf("write store payload %s: %v", storeFilename, err))
- return
- }
- defer fp.Close()
- if n, err := fp.Write(payload); err != nil || n != len(payload) {
- slog.Error(fmt.Sprintf("write store payload %s: %d vs %d -- %v", storeFilename, n, len(payload), err))
- return
- }
- slog.Debug("Store contents: " + string(payload))
- slog.Info(fmt.Sprintf("wrote store: %s", storeFilename))
+
+ return settings, nil
+}
+
+func (s *Store) SetSettings(settings Settings) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.setSettings(settings)
+}
+
+func (s *Store) Chats() ([]Chat, error) {
+ if err := s.ensureDB(); err != nil {
+ return nil, err
+ }
+
+ return s.db.getAllChats()
+}
+
+func (s *Store) Chat(id string) (*Chat, error) {
+ return s.ChatWithOptions(id, true)
+}
+
+func (s *Store) ChatWithOptions(id string, loadAttachmentData bool) (*Chat, error) {
+ if err := s.ensureDB(); err != nil {
+ return nil, err
+ }
+
+ chat, err := s.db.getChatWithOptions(id, loadAttachmentData)
+ if err != nil {
+ return nil, fmt.Errorf("%w: chat %s", not.Found, id)
+ }
+
+ return chat, nil
+}
+
+func (s *Store) SetChat(chat Chat) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.saveChat(chat)
+}
+
+func (s *Store) DeleteChat(id string) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ // Delete from database
+ if err := s.db.deleteChat(id); err != nil {
+ return fmt.Errorf("%w: chat %s", not.Found, id)
+ }
+
+ // Also delete associated images
+ chatImgDir := filepath.Join(s.ImgDir(), id)
+ if err := os.RemoveAll(chatImgDir); err != nil {
+ // Log error but don't fail the deletion
+ slog.Warn("failed to delete chat images", "chat_id", id, "error", err)
+ }
+
+ return nil
+}
+
+func (s *Store) WindowSize() (int, int, error) {
+ if err := s.ensureDB(); err != nil {
+ return 0, 0, err
+ }
+
+ return s.db.getWindowSize()
+}
+
+func (s *Store) SetWindowSize(width, height int) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.setWindowSize(width, height)
+}
+
+func (s *Store) UpdateLastMessage(chatID string, message Message) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.updateLastMessage(chatID, message)
+}
+
+func (s *Store) AppendMessage(chatID string, message Message) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.appendMessage(chatID, message)
+}
+
+func (s *Store) UpdateChatBrowserState(chatID string, state json.RawMessage) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.updateChatBrowserState(chatID, state)
+}
+
+func (s *Store) User() (*User, error) {
+ if err := s.ensureDB(); err != nil {
+ return nil, err
+ }
+
+ return s.db.getUser()
+}
+
+func (s *Store) SetUser(user User) error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ user.CachedAt = time.Now()
+ return s.db.setUser(user)
+}
+
+func (s *Store) ClearUser() error {
+ if err := s.ensureDB(); err != nil {
+ return err
+ }
+
+ return s.db.clearUser()
+}
+
+func (s *Store) Close() error {
+ s.dbMu.Lock()
+ defer s.dbMu.Unlock()
+
+ if s.db != nil {
+ return s.db.Close()
+ }
+ return nil
}
diff --git a/app/store/store_darwin.go b/app/store/store_darwin.go
deleted file mode 100644
index e53d85258..000000000
--- a/app/store/store_darwin.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package store
-
-import (
- "os"
- "path/filepath"
-)
-
-func getStorePath() string {
- // TODO - system wide location?
-
- home := os.Getenv("HOME")
- return filepath.Join(home, "Library", "Application Support", "Ollama", "config.json")
-}
diff --git a/app/store/store_linux.go b/app/store/store_linux.go
deleted file mode 100644
index 3aac9b014..000000000
--- a/app/store/store_linux.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package store
-
-import (
- "os"
- "path/filepath"
-)
-
-func getStorePath() string {
- if os.Geteuid() == 0 {
- // TODO where should we store this on linux for system-wide operation?
- return "/etc/ollama/config.json"
- }
-
- home := os.Getenv("HOME")
- return filepath.Join(home, ".ollama", "config.json")
-}
diff --git a/app/store/store_test.go b/app/store/store_test.go
new file mode 100644
index 000000000..dfe6435f1
--- /dev/null
+++ b/app/store/store_test.go
@@ -0,0 +1,192 @@
+//go:build windows || darwin
+
+package store
+
+import (
+ "path/filepath"
+ "testing"
+)
+
+func TestStore(t *testing.T) {
+ s, cleanup := setupTestStore(t)
+ defer cleanup()
+
+ t.Run("default id", func(t *testing.T) {
+ // ID should be automatically generated
+ id, err := s.ID()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if id == "" {
+ t.Error("expected non-empty ID")
+ }
+
+ // Verify ID is persisted
+ id2, err := s.ID()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if id != id2 {
+ t.Errorf("expected ID %s, got %s", id, id2)
+ }
+ })
+
+ t.Run("has completed first run", func(t *testing.T) {
+ // Default should be false (hasn't completed first run yet)
+ hasCompleted, err := s.HasCompletedFirstRun()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if hasCompleted {
+ t.Error("expected has completed first run to be false by default")
+ }
+
+ if err := s.SetHasCompletedFirstRun(true); err != nil {
+ t.Fatal(err)
+ }
+
+ hasCompleted, err = s.HasCompletedFirstRun()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !hasCompleted {
+ t.Error("expected has completed first run to be true")
+ }
+ })
+
+ t.Run("settings", func(t *testing.T) {
+ sc := Settings{
+ Expose: true,
+ Browser: true,
+ Survey: true,
+ Models: "/tmp/models",
+ Agent: true,
+ Tools: false,
+ WorkingDir: "/tmp/work",
+ }
+
+ if err := s.SetSettings(sc); err != nil {
+ t.Fatal(err)
+ }
+
+ loaded, err := s.Settings()
+ if err != nil {
+ t.Fatal(err)
+ }
+ // Compare fields individually since Models might get a default
+ if loaded.Expose != sc.Expose || loaded.Browser != sc.Browser ||
+ loaded.Agent != sc.Agent || loaded.Survey != sc.Survey ||
+ loaded.Tools != sc.Tools || loaded.WorkingDir != sc.WorkingDir {
+ t.Errorf("expected %v, got %v", sc, loaded)
+ }
+ })
+
+ t.Run("window size", func(t *testing.T) {
+ if err := s.SetWindowSize(1024, 768); err != nil {
+ t.Fatal(err)
+ }
+
+ width, height, err := s.WindowSize()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if width != 1024 || height != 768 {
+ t.Errorf("expected 1024x768, got %dx%d", width, height)
+ }
+ })
+
+ t.Run("create and retrieve chat", func(t *testing.T) {
+ chat := NewChat("test-chat-1")
+ chat.Title = "Test Chat"
+
+ chat.Messages = append(chat.Messages, NewMessage("user", "Hello", nil))
+ chat.Messages = append(chat.Messages, NewMessage("assistant", "Hi there!", &MessageOptions{
+ Model: "llama4",
+ }))
+
+ if err := s.SetChat(*chat); err != nil {
+ t.Fatalf("failed to save chat: %v", err)
+ }
+
+ retrieved, err := s.Chat("test-chat-1")
+ if err != nil {
+ t.Fatalf("failed to retrieve chat: %v", err)
+ }
+
+ if retrieved.ID != chat.ID {
+ t.Errorf("expected ID %s, got %s", chat.ID, retrieved.ID)
+ }
+ if retrieved.Title != chat.Title {
+ t.Errorf("expected title %s, got %s", chat.Title, retrieved.Title)
+ }
+ if len(retrieved.Messages) != 2 {
+ t.Fatalf("expected 2 messages, got %d", len(retrieved.Messages))
+ }
+ if retrieved.Messages[0].Content != "Hello" {
+ t.Errorf("expected first message 'Hello', got %s", retrieved.Messages[0].Content)
+ }
+ if retrieved.Messages[1].Content != "Hi there!" {
+ t.Errorf("expected second message 'Hi there!', got %s", retrieved.Messages[1].Content)
+ }
+ })
+
+ t.Run("list chats", func(t *testing.T) {
+ chat2 := NewChat("test-chat-2")
+ chat2.Title = "Another Chat"
+ chat2.Messages = append(chat2.Messages, NewMessage("user", "Test", nil))
+
+ if err := s.SetChat(*chat2); err != nil {
+ t.Fatalf("failed to save chat: %v", err)
+ }
+
+ chats, err := s.Chats()
+ if err != nil {
+ t.Fatalf("failed to list chats: %v", err)
+ }
+
+ if len(chats) != 2 {
+ t.Fatalf("expected 2 chats, got %d", len(chats))
+ }
+ })
+
+ t.Run("delete chat", func(t *testing.T) {
+ if err := s.DeleteChat("test-chat-1"); err != nil {
+ t.Fatalf("failed to delete chat: %v", err)
+ }
+
+ // Verify it's gone
+ _, err := s.Chat("test-chat-1")
+ if err == nil {
+ t.Error("expected error retrieving deleted chat")
+ }
+
+ // Verify other chat still exists
+ chats, err := s.Chats()
+ if err != nil {
+ t.Fatalf("failed to list chats: %v", err)
+ }
+ if len(chats) != 1 {
+ t.Fatalf("expected 1 chat after deletion, got %d", len(chats))
+ }
+ })
+}
+
+// setupTestStore creates a temporary store for testing
+func setupTestStore(t *testing.T) (*Store, func()) {
+ t.Helper()
+
+ tmpDir := t.TempDir()
+
+ // Override legacy config path to ensure no migration happens
+ oldLegacyConfigPath := legacyConfigPath
+ legacyConfigPath = filepath.Join(tmpDir, "config.json")
+
+ s := &Store{DBPath: filepath.Join(tmpDir, "db.sqlite")}
+
+ cleanup := func() {
+ s.Close()
+ legacyConfigPath = oldLegacyConfigPath
+ }
+
+ return s, cleanup
+}
diff --git a/app/store/store_windows.go b/app/store/store_windows.go
deleted file mode 100644
index ba06b82c4..000000000
--- a/app/store/store_windows.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package store
-
-import (
- "os"
- "path/filepath"
-)
-
-func getStorePath() string {
- localAppData := os.Getenv("LOCALAPPDATA")
- return filepath.Join(localAppData, "Ollama", "config.json")
-}
diff --git a/app/store/testdata/schema.sql b/app/store/testdata/schema.sql
new file mode 100644
index 000000000..8f944ff85
--- /dev/null
+++ b/app/store/testdata/schema.sql
@@ -0,0 +1,61 @@
+-- This is the version 2 schema for the app database, the first released schema to users.
+-- Do not modify this file. It is used to test that the database schema stays in a consistent state between schema migrations.
+
+CREATE TABLE IF NOT EXISTS settings (
+ id INTEGER PRIMARY KEY CHECK (id = 1),
+ device_id TEXT NOT NULL DEFAULT '',
+ has_completed_first_run BOOLEAN NOT NULL DEFAULT 0,
+ expose BOOLEAN NOT NULL DEFAULT 0,
+ survey BOOLEAN NOT NULL DEFAULT TRUE,
+ browser BOOLEAN NOT NULL DEFAULT 0,
+ models TEXT NOT NULL DEFAULT '',
+ remote TEXT NOT NULL DEFAULT '',
+ agent BOOLEAN NOT NULL DEFAULT 0,
+ tools BOOLEAN NOT NULL DEFAULT 0,
+ working_dir TEXT NOT NULL DEFAULT '',
+ context_length INTEGER NOT NULL DEFAULT 4096,
+ window_width INTEGER NOT NULL DEFAULT 0,
+ window_height INTEGER NOT NULL DEFAULT 0,
+ config_migrated BOOLEAN NOT NULL DEFAULT 0,
+ schema_version INTEGER NOT NULL DEFAULT 2
+);
+
+-- Insert default settings row if it doesn't exist
+INSERT OR IGNORE INTO settings (id) VALUES (1);
+
+CREATE TABLE IF NOT EXISTS chats (
+ id TEXT PRIMARY KEY,
+ title TEXT NOT NULL DEFAULT '',
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE TABLE IF NOT EXISTS messages (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ chat_id TEXT NOT NULL,
+ role TEXT NOT NULL,
+ content TEXT NOT NULL DEFAULT '',
+ thinking TEXT NOT NULL DEFAULT '',
+ stream BOOLEAN NOT NULL DEFAULT 0,
+ model_name TEXT,
+ model_cloud BOOLEAN,
+ model_ollama_host BOOLEAN,
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ thinking_time_start TIMESTAMP,
+ thinking_time_end TIMESTAMP,
+ FOREIGN KEY (chat_id) REFERENCES chats(id) ON DELETE CASCADE
+);
+
+CREATE INDEX IF NOT EXISTS idx_messages_chat_id ON messages(chat_id);
+
+CREATE TABLE IF NOT EXISTS tool_calls (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ message_id INTEGER NOT NULL,
+ type TEXT NOT NULL,
+ function_name TEXT NOT NULL,
+ function_arguments TEXT NOT NULL,
+ function_result TEXT,
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
+);
+
+CREATE INDEX IF NOT EXISTS idx_tool_calls_message_id ON tool_calls(message_id);
diff --git a/app/tools/browser.go b/app/tools/browser.go
new file mode 100644
index 000000000..b41c079ba
--- /dev/null
+++ b/app/tools/browser.go
@@ -0,0 +1,863 @@
+//go:build windows || darwin
+
+package tools
+
+import (
+ "context"
+ "fmt"
+ "net/url"
+ "regexp"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/ollama/ollama/app/ui/responses"
+)
+
+type PageType string
+
+const (
+ PageTypeSearchResults PageType = "initial_results"
+ PageTypeWebpage PageType = "webpage"
+)
+
+// DefaultViewTokens is the number of tokens to show to the model used when calling displayPage
+const DefaultViewTokens = 1024
+
+/*
+The Browser tool provides web browsing capability for gpt-oss.
+The model uses the tool by usually doing a search first and then choosing to either open a page,
+find a term in a page, or do another search.
+
+The tool optionally may open a URL directly - especially if one is passed in.
+
+Each action is saved into an append-only page stack `responses.BrowserStateData` to keep
+track of the history of the browsing session.
+
+Each `Execute()` for a tool returns the full current state of the browser. ui.go manages the
+browser state representation between the tool, ui, and db.
+
+A new Browser object is created per request - the state is reconstructed by ui.go.
+The initialization of the browser will receive a `responses.BrowserStateData` with the stitched history.
+*/
+
+// BrowserState manages the browsing session on a per-chat basis
+type BrowserState struct {
+ mu sync.RWMutex
+ Data *responses.BrowserStateData
+}
+type Browser struct {
+ state *BrowserState
+}
+
+// State is only accessed in a single thread, as each chat has its own browser state
+func (b *Browser) State() *responses.BrowserStateData {
+ b.state.mu.RLock()
+ defer b.state.mu.RUnlock()
+ return b.state.Data
+}
+
+func (b *Browser) savePage(page *responses.Page) {
+ b.state.Data.URLToPage[page.URL] = page
+ b.state.Data.PageStack = append(b.state.Data.PageStack, page.URL)
+}
+
+func (b *Browser) getPageFromStack(url string) (*responses.Page, error) {
+ page, ok := b.state.Data.URLToPage[url]
+ if !ok {
+ return nil, fmt.Errorf("page not found for url %s", url)
+ }
+ return page, nil
+}
+
+func NewBrowser(state *responses.BrowserStateData) *Browser {
+ if state == nil {
+ state = &responses.BrowserStateData{
+ PageStack: []string{},
+ ViewTokens: DefaultViewTokens,
+ URLToPage: make(map[string]*responses.Page),
+ }
+ }
+ b := &BrowserState{
+ Data: state,
+ }
+
+ return &Browser{
+ state: b,
+ }
+}
+
+type BrowserSearch struct {
+ Browser
+ webSearch *BrowserWebSearch
+}
+
+// NewBrowserSearch creates a new browser search instance
+func NewBrowserSearch(bb *Browser) *BrowserSearch {
+ if bb == nil {
+ bb = &Browser{
+ state: &BrowserState{
+ Data: &responses.BrowserStateData{
+ PageStack: []string{},
+ ViewTokens: DefaultViewTokens,
+ URLToPage: make(map[string]*responses.Page),
+ },
+ },
+ }
+ }
+ return &BrowserSearch{
+ Browser: *bb,
+ webSearch: &BrowserWebSearch{},
+ }
+}
+
+func (b *BrowserSearch) Name() string {
+ return "browser.search"
+}
+
+func (b *BrowserSearch) Description() string {
+ return "Search the web for information"
+}
+
+func (b *BrowserSearch) Prompt() string {
+ return ""
+}
+
+func (b *BrowserSearch) Schema() map[string]any {
+ return map[string]any{}
+}
+
+func (b *BrowserSearch) Execute(ctx context.Context, args map[string]any) (any, string, error) {
+ query, ok := args["query"].(string)
+ if !ok {
+ return nil, "", fmt.Errorf("query parameter is required")
+ }
+
+ topn, ok := args["topn"].(int)
+ if !ok {
+ topn = 5
+ }
+
+ searchArgs := map[string]any{
+ "queries": []any{query},
+ "max_results": topn,
+ }
+
+ result, err := b.webSearch.Execute(ctx, searchArgs)
+ if err != nil {
+ return nil, "", fmt.Errorf("search error: %w", err)
+ }
+
+ searchResponse, ok := result.(*WebSearchResponse)
+ if !ok {
+ return nil, "", fmt.Errorf("invalid search results format")
+ }
+
+ // Build main search results page that contains all search results
+ searchResultsPage := b.buildSearchResultsPageCollection(query, searchResponse)
+ b.savePage(searchResultsPage)
+ cursor := len(b.state.Data.PageStack) - 1
+ // cache result for each page
+ for _, queryResults := range searchResponse.Results {
+ for i, result := range queryResults {
+ resultPage := b.buildSearchResultsPage(&result, i+1)
+ // save to global only, do not add to visited stack
+ b.state.Data.URLToPage[resultPage.URL] = resultPage
+ }
+ }
+
+ page := searchResultsPage
+
+ pageText, err := b.displayPage(page, cursor, 0, -1)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to display page: %w", err)
+ }
+
+ return b.state.Data, pageText, nil
+}
+
+func (b *Browser) buildSearchResultsPageCollection(query string, results *WebSearchResponse) *responses.Page {
+ page := &responses.Page{
+ URL: "search_results_" + query,
+ Title: query,
+ Links: make(map[int]string),
+ FetchedAt: time.Now(),
+ }
+
+ var textBuilder strings.Builder
+ linkIdx := 0
+
+ // Add the header lines to match format
+ textBuilder.WriteString("\n") // L0: empty
+ textBuilder.WriteString("URL: \n") // L1: URL: (empty for search)
+ textBuilder.WriteString("# Search Results\n") // L2: # Search Results
+ textBuilder.WriteString("\n") // L3: empty
+
+ for _, queryResults := range results.Results {
+ for _, result := range queryResults {
+ domain := result.URL
+ if u, err := url.Parse(result.URL); err == nil && u.Host != "" {
+ domain = u.Host
+ domain = strings.TrimPrefix(domain, "www.")
+ }
+
+ linkFormat := fmt.Sprintf("* 【%d†%s†%s】", linkIdx, result.Title, domain)
+ textBuilder.WriteString(linkFormat)
+
+ numChars := min(len(result.Content.FullText), 400)
+ snippet := strings.TrimSpace(result.Content.FullText[:numChars])
+ textBuilder.WriteString(snippet)
+ textBuilder.WriteString("\n")
+
+ page.Links[linkIdx] = result.URL
+ linkIdx++
+ }
+ }
+
+ page.Text = textBuilder.String()
+ page.Lines = wrapLines(page.Text, 80)
+
+ return page
+}
+
+func (b *Browser) buildSearchResultsPage(result *WebSearchResult, linkIdx int) *responses.Page {
+ page := &responses.Page{
+ URL: result.URL,
+ Title: result.Title,
+ Links: make(map[int]string),
+ FetchedAt: time.Now(),
+ }
+
+ var textBuilder strings.Builder
+
+ // Format the individual result page (only used when no full text is available)
+ linkFormat := fmt.Sprintf("【%d†%s】", linkIdx, result.Title)
+ textBuilder.WriteString(linkFormat)
+ textBuilder.WriteString("\n")
+ textBuilder.WriteString(fmt.Sprintf("URL: %s\n", result.URL))
+ numChars := min(len(result.Content.FullText), 300)
+ textBuilder.WriteString(result.Content.FullText[:numChars])
+ textBuilder.WriteString("\n\n")
+
+ // Only store link and snippet if we won't be processing full text later
+ // (full text processing will handle all links consistently)
+ if result.Content.FullText == "" {
+ page.Links[linkIdx] = result.URL
+ }
+
+ // Use full text if available, otherwise use snippet
+ if result.Content.FullText != "" {
+ // Prepend the URL line to the full text
+ page.Text = fmt.Sprintf("URL: %s\n%s", result.URL, result.Content.FullText)
+ // Process markdown links in the full text
+ processedText, processedLinks := processMarkdownLinks(page.Text)
+ page.Text = processedText
+ page.Links = processedLinks
+ } else {
+ page.Text = textBuilder.String()
+ }
+
+ page.Lines = wrapLines(page.Text, 80)
+
+ return page
+}
+
+// getEndLoc calculates the end location for viewport based on token limits
+func (b *Browser) getEndLoc(loc, numLines, totalLines int, lines []string) int {
+ if numLines <= 0 {
+ // Auto-calculate based on viewTokens
+ txt := b.joinLinesWithNumbers(lines[loc:])
+
+ // If text is very short, no need to truncate (at least 1 char per token)
+ if len(txt) > b.state.Data.ViewTokens {
+ // Simple heuristic: approximate token counting
+ // Typical token is ~4 characters, but can be up to 128 chars
+ maxCharsPerToken := 128
+
+ // upper bound for text to analyze
+ upperBound := min((b.state.Data.ViewTokens+1)*maxCharsPerToken, len(txt))
+ textToAnalyze := txt[:upperBound]
+
+ // Simple approximation: count tokens as ~4 chars each
+ // This is less accurate than tiktoken but more performant
+ approxTokens := len(textToAnalyze) / 4
+
+ if approxTokens > b.state.Data.ViewTokens {
+ // Find the character position at viewTokens
+ endIdx := min(b.state.Data.ViewTokens*4, len(txt))
+
+ // Count newlines up to that position to get line count
+ numLines = strings.Count(txt[:endIdx], "\n") + 1
+ } else {
+ numLines = totalLines
+ }
+ } else {
+ numLines = totalLines
+ }
+ }
+
+ return min(loc+numLines, totalLines)
+}
+
+// joinLinesWithNumbers creates a string with line numbers, matching Python's join_lines
+func (b *Browser) joinLinesWithNumbers(lines []string) string {
+ var builder strings.Builder
+ var hadZeroLine bool
+ for i, line := range lines {
+ if i == 0 {
+ builder.WriteString("L0:\n")
+ hadZeroLine = true
+ }
+ if hadZeroLine {
+ builder.WriteString(fmt.Sprintf("L%d: %s\n", i+1, line))
+ } else {
+ builder.WriteString(fmt.Sprintf("L%d: %s\n", i, line))
+ }
+ }
+ return builder.String()
+}
+
+// processMarkdownLinks finds all markdown links in the text and replaces them with the special format
+// Returns the processed text and a map of link IDs to URLs
+func processMarkdownLinks(text string) (string, map[int]string) {
+ links := make(map[int]string)
+
+ // Always start from 0 for consistent numbering across all pages
+ linkID := 0
+
+ // First, handle multi-line markdown links by joining them
+ // This regex finds markdown links that might be split across lines
+ multiLinePattern := regexp.MustCompile(`\[([^\]]+)\]\s*\n\s*\(([^)]+)\)`)
+ text = multiLinePattern.ReplaceAllStringFunc(text, func(match string) string {
+ // Replace newlines with spaces in the match
+ cleaned := strings.ReplaceAll(match, "\n", " ")
+ // Remove extra spaces
+ cleaned = regexp.MustCompile(`\s+`).ReplaceAllString(cleaned, " ")
+ return cleaned
+ })
+
+ // Now process all markdown links (including the cleaned multi-line ones)
+ linkPattern := regexp.MustCompile(`\[([^\]]+)\]\(([^)]+)\)`)
+
+ processedText := linkPattern.ReplaceAllStringFunc(text, func(match string) string {
+ matches := linkPattern.FindStringSubmatch(match)
+ if len(matches) != 3 {
+ return match
+ }
+
+ linkText := strings.TrimSpace(matches[1])
+ linkURL := strings.TrimSpace(matches[2])
+
+ // Extract domain from URL
+ domain := linkURL
+ if u, err := url.Parse(linkURL); err == nil && u.Host != "" {
+ domain = u.Host
+ // Remove www. prefix if present
+ domain = strings.TrimPrefix(domain, "www.")
+ }
+
+ // Create the formatted link
+ formatted := fmt.Sprintf("【%d†%s†%s】", linkID, linkText, domain)
+
+ // Store the link
+ links[linkID] = linkURL
+ linkID++
+
+ return formatted
+ })
+
+ return processedText, links
+}
+
+func wrapLines(text string, width int) []string {
+ if width <= 0 {
+ width = 80
+ }
+
+ lines := strings.Split(text, "\n")
+ var wrapped []string
+
+ for _, line := range lines {
+ if line == "" {
+ // Preserve empty lines
+ wrapped = append(wrapped, "")
+ } else if len(line) <= width {
+ wrapped = append(wrapped, line)
+ } else {
+ // Word wrapping while preserving whitespace structure
+ words := strings.Fields(line)
+ if len(words) == 0 {
+ // Line with only whitespace
+ wrapped = append(wrapped, line)
+ continue
+ }
+
+ currentLine := ""
+ for _, word := range words {
+ // Check if adding this word would exceed width
+ testLine := currentLine
+ if testLine != "" {
+ testLine += " "
+ }
+ testLine += word
+
+ if len(testLine) > width && currentLine != "" {
+ // Current line would be too long, wrap it
+ wrapped = append(wrapped, currentLine)
+ currentLine = word
+ } else {
+ // Add word to current line
+ if currentLine != "" {
+ currentLine += " "
+ }
+ currentLine += word
+ }
+ }
+
+ // Add any remaining content
+ if currentLine != "" {
+ wrapped = append(wrapped, currentLine)
+ }
+ }
+ }
+
+ return wrapped
+}
+
+// displayPage formats and returns the page display for the model
+func (b *Browser) displayPage(page *responses.Page, cursor, loc, numLines int) (string, error) {
+ totalLines := len(page.Lines)
+
+ if loc >= totalLines {
+ return "", fmt.Errorf("invalid location: %d (max: %d)", loc, totalLines-1)
+ }
+
+ // get viewport end location
+ endLoc := b.getEndLoc(loc, numLines, totalLines, page.Lines)
+
+ var displayBuilder strings.Builder
+ displayBuilder.WriteString(fmt.Sprintf("[%d] %s", cursor, page.Title))
+ if page.URL != "" {
+ displayBuilder.WriteString(fmt.Sprintf("(%s)\n", page.URL))
+ } else {
+ displayBuilder.WriteString("\n")
+ }
+ displayBuilder.WriteString(fmt.Sprintf("**viewing lines [%d - %d] of %d**\n\n", loc, endLoc-1, totalLines-1))
+
+ // Content with line numbers
+ var hadZeroLine bool
+ for i := loc; i < endLoc; i++ {
+ if i == 0 {
+ displayBuilder.WriteString("L0:\n")
+ hadZeroLine = true
+ }
+ if hadZeroLine {
+ displayBuilder.WriteString(fmt.Sprintf("L%d: %s\n", i+1, page.Lines[i]))
+ } else {
+ displayBuilder.WriteString(fmt.Sprintf("L%d: %s\n", i, page.Lines[i]))
+ }
+ }
+
+ return displayBuilder.String(), nil
+}
+
+type BrowserOpen struct {
+ Browser
+ crawlPage *BrowserCrawler
+}
+
+func NewBrowserOpen(bb *Browser) *BrowserOpen {
+ if bb == nil {
+ bb = &Browser{
+ state: &BrowserState{
+ Data: &responses.BrowserStateData{
+ PageStack: []string{},
+ ViewTokens: DefaultViewTokens,
+ URLToPage: make(map[string]*responses.Page),
+ },
+ },
+ }
+ }
+ return &BrowserOpen{
+ Browser: *bb,
+ crawlPage: &BrowserCrawler{},
+ }
+}
+
+func (b *BrowserOpen) Name() string {
+ return "browser.open"
+}
+
+func (b *BrowserOpen) Description() string {
+ return "Open a link in the browser"
+}
+
+func (b *BrowserOpen) Prompt() string {
+ return ""
+}
+
+func (b *BrowserOpen) Schema() map[string]any {
+ return map[string]any{}
+}
+
+func (b *BrowserOpen) Execute(ctx context.Context, args map[string]any) (any, string, error) {
+ // Get cursor parameter first
+ cursor := -1
+ if c, ok := args["cursor"].(float64); ok {
+ cursor = int(c)
+ } else if c, ok := args["cursor"].(int); ok {
+ cursor = c
+ }
+
+ // Get loc parameter
+ loc := 0
+ if l, ok := args["loc"].(float64); ok {
+ loc = int(l)
+ } else if l, ok := args["loc"].(int); ok {
+ loc = l
+ }
+
+ // Get num_lines parameter
+ numLines := -1
+ if n, ok := args["num_lines"].(float64); ok {
+ numLines = int(n)
+ } else if n, ok := args["num_lines"].(int); ok {
+ numLines = n
+ }
+
+ // get page from cursor
+ var page *responses.Page
+ if cursor >= 0 {
+ if cursor >= len(b.state.Data.PageStack) {
+ return nil, "", fmt.Errorf("cursor %d is out of range (pageStack length: %d)", cursor, len(b.state.Data.PageStack))
+ }
+ var err error
+ page, err = b.getPageFromStack(b.state.Data.PageStack[cursor])
+ if err != nil {
+ return nil, "", fmt.Errorf("page not found for cursor %d: %w", cursor, err)
+ }
+ } else {
+ // get last page
+ if len(b.state.Data.PageStack) != 0 {
+ pageURL := b.state.Data.PageStack[len(b.state.Data.PageStack)-1]
+ var err error
+ page, err = b.getPageFromStack(pageURL)
+ if err != nil {
+ return nil, "", fmt.Errorf("page not found for cursor %d: %w", cursor, err)
+ }
+ }
+ }
+
+ // Try to get id as string (URL) first
+ if url, ok := args["id"].(string); ok {
+ // Check if we already have this page cached
+ if existingPage, ok := b.state.Data.URLToPage[url]; ok {
+ // Use cached page
+ b.savePage(existingPage)
+ // Always update cursor to point to the newly added page
+ cursor = len(b.state.Data.PageStack) - 1
+ pageText, err := b.displayPage(existingPage, cursor, loc, numLines)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to display page: %w", err)
+ }
+ return b.state.Data, pageText, nil
+ }
+
+ // Page not in cache, need to crawl it
+ if b.crawlPage == nil {
+ b.crawlPage = &BrowserCrawler{}
+ }
+ crawlResponse, err := b.crawlPage.Execute(ctx, map[string]any{
+ "urls": []any{url},
+ "latest": false,
+ })
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to crawl URL %s: %w", url, err)
+ }
+
+ newPage, err := b.buildPageFromCrawlResult(url, crawlResponse)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to build page from crawl result: %w", err)
+ }
+
+ // Need to fall through if first search is directly an open command - no existing page
+ b.savePage(newPage)
+ // Always update cursor to point to the newly added page
+ cursor = len(b.state.Data.PageStack) - 1
+ pageText, err := b.displayPage(newPage, cursor, loc, numLines)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to display page: %w", err)
+ }
+ return b.state.Data, pageText, nil
+ }
+
+ // Try to get id as integer (link ID from current page)
+ if id, ok := args["id"].(float64); ok {
+ if page == nil {
+ return nil, "", fmt.Errorf("no current page to resolve link from")
+ }
+ idInt := int(id)
+ pageURL, ok := page.Links[idInt]
+ if !ok {
+ return nil, "", fmt.Errorf("invalid link id %d", idInt)
+ }
+
+ // Check if we have the linked page cached
+ newPage, ok := b.state.Data.URLToPage[pageURL]
+ if !ok {
+ if b.crawlPage == nil {
+ b.crawlPage = &BrowserCrawler{}
+ }
+ crawlResponse, err := b.crawlPage.Execute(ctx, map[string]any{
+ "urls": []any{pageURL},
+ "latest": false,
+ })
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to crawl URL %s: %w", pageURL, err)
+ }
+
+ // Create new page from crawl result
+ newPage, err = b.buildPageFromCrawlResult(pageURL, crawlResponse)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to build page from crawl result: %w", err)
+ }
+ }
+
+ // Add to history stack regardless of cache status
+ b.savePage(newPage)
+
+ // Always update cursor to point to the newly added page
+ cursor = len(b.state.Data.PageStack) - 1
+ pageText, err := b.displayPage(newPage, cursor, loc, numLines)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to display page: %w", err)
+ }
+ return b.state.Data, pageText, nil
+ }
+
+ // If no id provided, just display current page
+ if page == nil {
+ return nil, "", fmt.Errorf("no current page to display")
+ }
+ // Only add to PageStack without updating URLToPage
+ b.state.Data.PageStack = append(b.state.Data.PageStack, page.URL)
+ cursor = len(b.state.Data.PageStack) - 1
+
+ pageText, err := b.displayPage(page, cursor, loc, numLines)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to display page: %w", err)
+ }
+ return b.state.Data, pageText, nil
+}
+
+// buildPageFromCrawlResult creates a Page from crawl API results
+func (b *Browser) buildPageFromCrawlResult(requestedURL string, crawlResponse *CrawlResponse) (*responses.Page, error) {
+ // Initialize page with defaults
+ page := &responses.Page{
+ URL: requestedURL,
+ Title: requestedURL,
+ Text: "",
+ Links: make(map[int]string),
+ FetchedAt: time.Now(),
+ }
+
+ // Process crawl results - the API returns results grouped by URL
+ for url, urlResults := range crawlResponse.Results {
+ if len(urlResults) > 0 {
+ // Get the first result for this URL
+ result := urlResults[0]
+
+ // Extract content
+ if result.Content.FullText != "" {
+ page.Text = result.Content.FullText
+ }
+
+ // Extract title if available
+ if result.Title != "" {
+ page.Title = result.Title
+ }
+
+ // Update URL to the actual URL from results
+ page.URL = url
+
+ // Extract links if available from extras
+ for i, link := range result.Extras.Links {
+ if link.Href != "" {
+ page.Links[i] = link.Href
+ } else if link.URL != "" {
+ page.Links[i] = link.URL
+ }
+ }
+
+ // Only process the first URL's results
+ break
+ }
+ }
+
+ // If no text was extracted, set a default message
+ if page.Text == "" {
+ page.Text = "No content could be extracted from this page."
+ } else {
+ // Prepend the URL line to match Python implementation
+ page.Text = fmt.Sprintf("URL: %s\n%s", page.URL, page.Text)
+ }
+
+ // Process markdown links in the text
+ processedText, processedLinks := processMarkdownLinks(page.Text)
+ page.Text = processedText
+ page.Links = processedLinks
+
+ // Wrap lines for display
+ page.Lines = wrapLines(page.Text, 80)
+
+ return page, nil
+}
+
+type BrowserFind struct {
+ Browser
+}
+
+func NewBrowserFind(bb *Browser) *BrowserFind {
+ return &BrowserFind{
+ Browser: *bb,
+ }
+}
+
+func (b *BrowserFind) Name() string {
+ return "browser.find"
+}
+
+func (b *BrowserFind) Description() string {
+ return "Find a term in the browser"
+}
+
+func (b *BrowserFind) Prompt() string {
+ return ""
+}
+
+func (b *BrowserFind) Schema() map[string]any {
+ return map[string]any{}
+}
+
+func (b *BrowserFind) Execute(ctx context.Context, args map[string]any) (any, string, error) {
+ pattern, ok := args["pattern"].(string)
+ if !ok {
+ return nil, "", fmt.Errorf("pattern parameter is required")
+ }
+
+ // Get cursor parameter if provided, default to current page
+ cursor := -1
+ if c, ok := args["cursor"].(float64); ok {
+ cursor = int(c)
+ }
+
+ // Get the page to search in
+ var page *responses.Page
+ if cursor == -1 {
+ // Use current page
+ if len(b.state.Data.PageStack) == 0 {
+ return nil, "", fmt.Errorf("no pages to search in")
+ }
+ var err error
+ page, err = b.getPageFromStack(b.state.Data.PageStack[len(b.state.Data.PageStack)-1])
+ if err != nil {
+ return nil, "", fmt.Errorf("page not found for cursor %d: %w", cursor, err)
+ }
+ } else {
+ // Use specific cursor
+ if cursor < 0 || cursor >= len(b.state.Data.PageStack) {
+ return nil, "", fmt.Errorf("cursor %d is out of range [0-%d]", cursor, len(b.state.Data.PageStack)-1)
+ }
+ var err error
+ page, err = b.getPageFromStack(b.state.Data.PageStack[cursor])
+ if err != nil {
+ return nil, "", fmt.Errorf("page not found for cursor %d: %w", cursor, err)
+ }
+ }
+
+ if page == nil {
+ return nil, "", fmt.Errorf("page not found")
+ }
+
+ // Create find results page
+ findPage := b.buildFindResultsPage(pattern, page)
+
+ // Add the find results page to state
+ b.savePage(findPage)
+ newCursor := len(b.state.Data.PageStack) - 1
+
+ pageText, err := b.displayPage(findPage, newCursor, 0, -1)
+ if err != nil {
+ return nil, "", fmt.Errorf("failed to display page: %w", err)
+ }
+
+ return b.state.Data, pageText, nil
+}
+
+func (b *Browser) buildFindResultsPage(pattern string, page *responses.Page) *responses.Page {
+ findPage := &responses.Page{
+ Title: fmt.Sprintf("Find results for text: `%s` in `%s`", pattern, page.Title),
+ Links: make(map[int]string),
+ FetchedAt: time.Now(),
+ }
+
+ findPage.URL = fmt.Sprintf("find_results_%s", pattern)
+
+ var textBuilder strings.Builder
+ matchIdx := 0
+ maxResults := 50
+ numShowLines := 4
+ patternLower := strings.ToLower(pattern)
+
+ // Search through the page lines following the reference algorithm
+ var resultChunks []string
+ lineIdx := 0
+
+ for lineIdx < len(page.Lines) {
+ line := page.Lines[lineIdx]
+ lineLower := strings.ToLower(line)
+
+ if !strings.Contains(lineLower, patternLower) {
+ lineIdx++
+ continue
+ }
+
+ // Build snippet context
+ endLine := min(lineIdx+numShowLines, len(page.Lines))
+
+ var snippetBuilder strings.Builder
+ for j := lineIdx; j < endLine; j++ {
+ snippetBuilder.WriteString(page.Lines[j])
+ if j < endLine-1 {
+ snippetBuilder.WriteString("\n")
+ }
+ }
+ snippet := snippetBuilder.String()
+
+ // Format the match
+ linkFormat := fmt.Sprintf("【%d†match at L%d】", matchIdx, lineIdx)
+ resultChunk := fmt.Sprintf("%s\n%s", linkFormat, snippet)
+ resultChunks = append(resultChunks, resultChunk)
+
+ if len(resultChunks) >= maxResults {
+ break
+ }
+
+ matchIdx++
+ lineIdx += numShowLines
+ }
+
+ // Build final display text
+ if len(resultChunks) > 0 {
+ textBuilder.WriteString(strings.Join(resultChunks, "\n\n"))
+ }
+
+ if matchIdx == 0 {
+ findPage.Text = fmt.Sprintf("No `find` results for pattern: `%s`", pattern)
+ } else {
+ findPage.Text = textBuilder.String()
+ }
+
+ findPage.Lines = wrapLines(findPage.Text, 80)
+ return findPage
+}
diff --git a/app/tools/browser_crawl.go b/app/tools/browser_crawl.go
new file mode 100644
index 000000000..fd9c2bd4d
--- /dev/null
+++ b/app/tools/browser_crawl.go
@@ -0,0 +1,136 @@
+//go:build windows || darwin
+
+package tools
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+)
+
+// CrawlContent represents the content of a crawled page
+type CrawlContent struct {
+ Snippet string `json:"snippet"`
+ FullText string `json:"full_text"`
+}
+
+// CrawlExtras represents additional data from the crawl API
+type CrawlExtras struct {
+ Links []CrawlLink `json:"links"`
+}
+
+// CrawlLink represents a link found on a crawled page
+type CrawlLink struct {
+ URL string `json:"url"`
+ Href string `json:"href"`
+ Text string `json:"text"`
+}
+
+// CrawlResult represents a single crawl result
+type CrawlResult struct {
+ Title string `json:"title"`
+ URL string `json:"url"`
+ Content CrawlContent `json:"content"`
+ Extras CrawlExtras `json:"extras"`
+}
+
+// CrawlResponse represents the complete response from the crawl API
+type CrawlResponse struct {
+ Results map[string][]CrawlResult `json:"results"`
+}
+
+// BrowserCrawler tool for crawling web pages using ollama.com crawl API
+type BrowserCrawler struct{}
+
+func (g *BrowserCrawler) Name() string {
+ return "get_webpage"
+}
+
+func (g *BrowserCrawler) Description() string {
+ return "Crawl and extract text content from web pages"
+}
+
+func (g *BrowserCrawler) Prompt() string {
+ return `When you need to read content from web pages, use the get_webpage tool. Simply provide the URLs you want to read and I'll fetch their content for you.
+
+For each URL, I'll extract the main text content in a readable format. If you need to discover links within those pages, set extract_links to true. If the user requires the latest information, set livecrawl to true.
+
+Only use this tool when you need to access current web content. Make sure the URLs are valid and accessible. Do not use this tool for:
+- Downloading files or media
+- Accessing private/authenticated pages
+- Scraping data at high volumes
+
+Always check the returned content to ensure it's relevant before using it in your response.`
+}
+
+func (g *BrowserCrawler) Schema() map[string]any {
+ schemaBytes := []byte(`{
+ "type": "object",
+ "properties": {
+ "urls": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of URLs to crawl and extract content from"
+ }
+ },
+ "required": ["urls"]
+ }`)
+ var schema map[string]any
+ if err := json.Unmarshal(schemaBytes, &schema); err != nil {
+ return nil
+ }
+ return schema
+}
+
+func (g *BrowserCrawler) Execute(ctx context.Context, args map[string]any) (*CrawlResponse, error) {
+ urlsRaw, ok := args["urls"].([]any)
+ if !ok {
+ return nil, fmt.Errorf("urls parameter is required and must be an array of strings")
+ }
+
+ urls := make([]string, 0, len(urlsRaw))
+ for _, u := range urlsRaw {
+ if urlStr, ok := u.(string); ok {
+ urls = append(urls, urlStr)
+ }
+ }
+
+ if len(urls) == 0 {
+ return nil, fmt.Errorf("at least one URL is required")
+ }
+
+ return g.performWebCrawl(ctx, urls)
+}
+
+// performWebCrawl handles the actual HTTP request to ollama.com crawl API
+func (g *BrowserCrawler) performWebCrawl(ctx context.Context, urls []string) (*CrawlResponse, error) {
+ result := &CrawlResponse{Results: make(map[string][]CrawlResult, len(urls))}
+
+ for _, targetURL := range urls {
+ fetchResp, err := performWebFetch(ctx, targetURL)
+ if err != nil {
+ return nil, fmt.Errorf("web_fetch failed for %q: %w", targetURL, err)
+ }
+
+ links := make([]CrawlLink, 0, len(fetchResp.Links))
+ for _, link := range fetchResp.Links {
+ links = append(links, CrawlLink{URL: link, Href: link})
+ }
+
+ snippet := truncateString(fetchResp.Content, 400)
+
+ result.Results[targetURL] = []CrawlResult{{
+ Title: fetchResp.Title,
+ URL: targetURL,
+ Content: CrawlContent{
+ Snippet: snippet,
+ FullText: fetchResp.Content,
+ },
+ Extras: CrawlExtras{Links: links},
+ }}
+ }
+
+ return result, nil
+}
diff --git a/app/tools/browser_test.go b/app/tools/browser_test.go
new file mode 100644
index 000000000..05b5584b2
--- /dev/null
+++ b/app/tools/browser_test.go
@@ -0,0 +1,147 @@
+//go:build windows || darwin
+
+package tools
+
+import (
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/ollama/ollama/app/ui/responses"
+)
+
+func makeTestPage(url string) *responses.Page {
+ return &responses.Page{
+ URL: url,
+ Title: "Title " + url,
+ Text: "Body for " + url,
+ Lines: []string{"line1", "line2", "line3"},
+ Links: map[int]string{0: url},
+ FetchedAt: time.Now(),
+ }
+}
+
+func TestBrowser_Scroll_AppendsOnlyPageStack(t *testing.T) {
+ b := NewBrowser(&responses.BrowserStateData{PageStack: []string{}, ViewTokens: 1024, URLToPage: map[string]*responses.Page{}})
+ p1 := makeTestPage("https://example.com/1")
+ b.savePage(p1)
+ initialStackLen := len(b.state.Data.PageStack)
+ initialMapLen := len(b.state.Data.URLToPage)
+
+ bo := NewBrowserOpen(b)
+ // Scroll without id — should push only to PageStack
+ _, _, err := bo.Execute(t.Context(), map[string]any{"loc": float64(1), "num_lines": float64(1)})
+ if err != nil {
+ t.Fatalf("scroll execute failed: %v", err)
+ }
+
+ if got, want := len(b.state.Data.PageStack), initialStackLen+1; got != want {
+ t.Fatalf("page stack length = %d, want %d", got, want)
+ }
+ if got, want := len(b.state.Data.URLToPage), initialMapLen; got != want {
+ t.Fatalf("url_to_page length changed = %d, want %d", got, want)
+ }
+}
+
+func TestBrowserOpen_UseCacheByURL(t *testing.T) {
+ b := NewBrowser(&responses.BrowserStateData{PageStack: []string{}, ViewTokens: 1024, URLToPage: map[string]*responses.Page{}})
+ bo := NewBrowserOpen(b)
+
+ p := makeTestPage("https://example.com/cached")
+ b.state.Data.URLToPage[p.URL] = p
+ initialStackLen := len(b.state.Data.PageStack)
+ initialMapLen := len(b.state.Data.URLToPage)
+
+ _, _, err := bo.Execute(t.Context(), map[string]any{"id": p.URL})
+ if err != nil {
+ t.Fatalf("open cached execute failed: %v", err)
+ }
+
+ if got, want := len(b.state.Data.PageStack), initialStackLen+1; got != want {
+ t.Fatalf("page stack length = %d, want %d", got, want)
+ }
+ if got, want := len(b.state.Data.URLToPage), initialMapLen; got != want {
+ t.Fatalf("url_to_page length changed = %d, want %d", got, want)
+ }
+}
+
+func TestDisplayPage_InvalidLoc(t *testing.T) {
+ b := NewBrowser(&responses.BrowserStateData{PageStack: []string{}, ViewTokens: 1024, URLToPage: map[string]*responses.Page{}})
+ p := makeTestPage("https://example.com/x")
+ // ensure lines are set
+ p.Lines = []string{"a", "b"}
+ _, err := b.displayPage(p, 0, 10, -1)
+ if err == nil || !strings.Contains(err.Error(), "invalid location") {
+ t.Fatalf("expected invalid location error, got %v", err)
+ }
+}
+
+func TestBrowserOpen_LinkId_UsesCacheAndAppends(t *testing.T) {
+ b := NewBrowser(&responses.BrowserStateData{PageStack: []string{}, ViewTokens: 1024, URLToPage: map[string]*responses.Page{}})
+ // Seed a main page with a link id 0 to a linked URL
+ main := makeTestPage("https://example.com/main")
+ linked := makeTestPage("https://example.com/linked")
+ main.Links = map[int]string{0: linked.URL}
+ // Save the main page (adds to PageStack and URLToPage)
+ b.savePage(main)
+ // Pre-cache the linked page so open by id avoids network
+ b.state.Data.URLToPage[linked.URL] = linked
+
+ initialStackLen := len(b.state.Data.PageStack)
+ initialMapLen := len(b.state.Data.URLToPage)
+
+ bo := NewBrowserOpen(b)
+ _, _, err := bo.Execute(t.Context(), map[string]any{"id": float64(0)})
+ if err != nil {
+ t.Fatalf("open by link id failed: %v", err)
+ }
+
+ if got, want := len(b.state.Data.PageStack), initialStackLen+1; got != want {
+ t.Fatalf("page stack length = %d, want %d", got, want)
+ }
+ if got, want := len(b.state.Data.URLToPage), initialMapLen; got != want {
+ t.Fatalf("url_to_page length changed = %d, want %d", got, want)
+ }
+ if last := b.state.Data.PageStack[len(b.state.Data.PageStack)-1]; last != linked.URL {
+ t.Fatalf("last page in stack = %s, want %s", last, linked.URL)
+ }
+}
+
+func TestWrapLines_PreserveAndWidth(t *testing.T) {
+ long := strings.Repeat("word ", 50)
+ text := "Line1\n\n" + long + "\nLine3"
+ lines := wrapLines(text, 40)
+
+ // Ensure empty line preserved at index 1
+ if lines[1] != "" {
+ t.Fatalf("expected preserved empty line at index 1, got %q", lines[1])
+ }
+ // All lines should be <= 40 chars
+ for i, l := range lines {
+ if len(l) > 40 {
+ t.Fatalf("line %d exceeds width: %d > 40", i, len(l))
+ }
+ }
+}
+
+func TestDisplayPage_FormatHeaderAndLines(t *testing.T) {
+ b := NewBrowser(&responses.BrowserStateData{PageStack: []string{}, ViewTokens: 1024, URLToPage: map[string]*responses.Page{}})
+ p := &responses.Page{
+ URL: "https://example.com/x",
+ Title: "Example",
+ Lines: []string{"URL: https://example.com/x", "A", "B", "C"},
+ }
+ out, err := b.displayPage(p, 3, 0, 2)
+ if err != nil {
+ t.Fatalf("displayPage failed: %v", err)
+ }
+ if !strings.HasPrefix(out, "[3] Example(") {
+ t.Fatalf("header not formatted as expected: %q", out)
+ }
+ if !strings.Contains(out, "L0:\n") {
+ t.Fatalf("missing L0 label: %q", out)
+ }
+ if !strings.Contains(out, "L1: URL: https://example.com/x\n") || !strings.Contains(out, "L2: A\n") {
+ t.Fatalf("missing expected line numbers/content: %q", out)
+ }
+}
diff --git a/app/tools/browser_websearch.go b/app/tools/browser_websearch.go
new file mode 100644
index 000000000..dd47fb886
--- /dev/null
+++ b/app/tools/browser_websearch.go
@@ -0,0 +1,143 @@
+//go:build windows || darwin
+
+package tools
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "strconv"
+ "time"
+)
+
+// WebSearchContent represents the content of a search result
+type WebSearchContent struct {
+ Snippet string `json:"snippet"`
+ FullText string `json:"full_text"`
+}
+
+// WebSearchMetadata represents metadata for a search result
+type WebSearchMetadata struct {
+ PublishedDate *time.Time `json:"published_date,omitempty"`
+}
+
+// WebSearchResult represents a single search result
+type WebSearchResult struct {
+ Title string `json:"title"`
+ URL string `json:"url"`
+ Content WebSearchContent `json:"content"`
+ Metadata WebSearchMetadata `json:"metadata"`
+}
+
+// WebSearchResponse represents the complete response from the websearch API
+type WebSearchResponse struct {
+ Results map[string][]WebSearchResult `json:"results"`
+}
+
+// BrowserWebSearch tool for searching the web using ollama.com search API
+type BrowserWebSearch struct{}
+
+func (w *BrowserWebSearch) Name() string {
+ return "gpt_oss_web_search"
+}
+
+func (w *BrowserWebSearch) Description() string {
+ return "Search the web for real-time information using ollama.com search API."
+}
+
+func (w *BrowserWebSearch) Prompt() string {
+ return `Use the gpt_oss_web_search tool to search the web.
+1. Come up with a list of search queries to get comprehensive information (typically 2-3 related queries work well)
+2. Use the gpt_oss_web_search tool with multiple queries to get results organized by query
+3. Use the search results to provide current up to date, accurate information
+
+Today's date is ` + time.Now().Format("January 2, 2006") + `
+Add "` + time.Now().Format("January 2, 2006") + `" for news queries and ` + strconv.Itoa(time.Now().Year()+1) + ` for other queries that need current information.`
+}
+
+func (w *BrowserWebSearch) Schema() map[string]any {
+ schemaBytes := []byte(`{
+ "type": "object",
+ "properties": {
+ "queries": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of search queries to look up"
+ },
+ "max_results": {
+ "type": "integer",
+ "description": "Maximum number of results to return per query (default: 2) up to 5",
+ "default": 2
+ }
+ },
+ "required": ["queries"]
+ }`)
+ var schema map[string]any
+ if err := json.Unmarshal(schemaBytes, &schema); err != nil {
+ return nil
+ }
+ return schema
+}
+
+func (w *BrowserWebSearch) Execute(ctx context.Context, args map[string]any) (any, error) {
+ queriesRaw, ok := args["queries"].([]any)
+ if !ok {
+ return nil, fmt.Errorf("queries parameter is required and must be an array of strings")
+ }
+
+ queries := make([]string, 0, len(queriesRaw))
+ for _, q := range queriesRaw {
+ if query, ok := q.(string); ok {
+ queries = append(queries, query)
+ }
+ }
+
+ if len(queries) == 0 {
+ return nil, fmt.Errorf("at least one query is required")
+ }
+
+ maxResults := 5
+ if mr, ok := args["max_results"].(int); ok {
+ maxResults = mr
+ }
+
+ return w.performWebSearch(ctx, queries, maxResults)
+}
+
+// performWebSearch handles the actual HTTP request to ollama.com search API
+func (w *BrowserWebSearch) performWebSearch(ctx context.Context, queries []string, maxResults int) (*WebSearchResponse, error) {
+ response := &WebSearchResponse{Results: make(map[string][]WebSearchResult, len(queries))}
+
+ for _, query := range queries {
+ searchResp, err := performWebSearch(ctx, query, maxResults)
+ if err != nil {
+ return nil, fmt.Errorf("web_search failed for %q: %w", query, err)
+ }
+
+ converted := make([]WebSearchResult, 0, len(searchResp.Results))
+ for _, item := range searchResp.Results {
+ converted = append(converted, WebSearchResult{
+ Title: item.Title,
+ URL: item.URL,
+ Content: WebSearchContent{
+ Snippet: truncateString(item.Content, 400),
+ FullText: item.Content,
+ },
+ Metadata: WebSearchMetadata{},
+ })
+ }
+
+ response.Results[query] = converted
+ }
+
+ return response, nil
+}
+
+func truncateString(input string, limit int) string {
+ if limit <= 0 || len(input) <= limit {
+ return input
+ }
+ return input[:limit]
+}
diff --git a/app/tools/tools.go b/app/tools/tools.go
new file mode 100644
index 000000000..b36727890
--- /dev/null
+++ b/app/tools/tools.go
@@ -0,0 +1,122 @@
+//go:build windows || darwin
+
+package tools
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+)
+
+// Tool defines the interface that all tools must implement
+type Tool interface {
+ // Name returns the unique identifier for the tool
+ Name() string
+
+ // Description returns a human-readable description of what the tool does
+ Description() string
+
+ // Schema returns the JSON schema for the tool's parameters
+ Schema() map[string]any
+
+ // Execute runs the tool with the given arguments and returns result to store in db, and a string result for the model
+ Execute(ctx context.Context, args map[string]any) (any, string, error)
+
+ // Prompt returns a prompt for the tool
+ Prompt() string
+}
+
+// Registry manages the available tools and their execution
+type Registry struct {
+ tools map[string]Tool
+ workingDir string // Working directory for all tool operations
+}
+
+// NewRegistry creates a new tool registry with no tools
+func NewRegistry() *Registry {
+ return &Registry{
+ tools: make(map[string]Tool),
+ }
+}
+
+// Register adds a tool to the registry
+func (r *Registry) Register(tool Tool) {
+ r.tools[tool.Name()] = tool
+}
+
+// Get retrieves a tool by name
+func (r *Registry) Get(name string) (Tool, bool) {
+ tool, exists := r.tools[name]
+ return tool, exists
+}
+
+// List returns all available tools
+func (r *Registry) List() []Tool {
+ tools := make([]Tool, 0, len(r.tools))
+ for _, tool := range r.tools {
+ tools = append(tools, tool)
+ }
+ return tools
+}
+
+// SetWorkingDir sets the working directory for all tool operations
+func (r *Registry) SetWorkingDir(dir string) {
+ r.workingDir = dir
+}
+
+// Execute runs a tool with the given name and arguments
+func (r *Registry) Execute(ctx context.Context, name string, args map[string]any) (any, string, error) {
+ tool, ok := r.tools[name]
+ if !ok {
+ return nil, "", fmt.Errorf("unknown tool: %s", name)
+ }
+
+ result, text, err := tool.Execute(ctx, args)
+ if err != nil {
+ return nil, "", err
+ }
+ return result, text, nil
+}
+
+// ToolCall represents a request to execute a tool
+type ToolCall struct {
+ ID string `json:"id"`
+ Type string `json:"type"`
+ Function ToolFunction `json:"function"`
+}
+
+// ToolFunction represents the function call details
+type ToolFunction struct {
+ Name string `json:"name"`
+ Arguments json.RawMessage `json:"arguments"`
+}
+
+// ToolResult represents the result of a tool execution
+type ToolResult struct {
+ ToolCallID string `json:"tool_call_id"`
+ Content any `json:"content"`
+ Error string `json:"error,omitempty"`
+}
+
+// ToolSchemas returns all tools as schema maps suitable for API calls
+func (r *Registry) AvailableTools() []map[string]any {
+ schemas := make([]map[string]any, 0, len(r.tools))
+ for _, tool := range r.tools {
+ schema := map[string]any{
+ "name": tool.Name(),
+ "description": tool.Description(),
+ "schema": tool.Schema(),
+ }
+ schemas = append(schemas, schema)
+ }
+ return schemas
+}
+
+// ToolNames returns a list of all tool names
+func (r *Registry) ToolNames() []string {
+ names := make([]string, 0, len(r.tools))
+ for name := range r.tools {
+ names = append(names, name)
+ }
+ return names
+}
diff --git a/app/tools/web_fetch.go b/app/tools/web_fetch.go
new file mode 100644
index 000000000..67a582d35
--- /dev/null
+++ b/app/tools/web_fetch.go
@@ -0,0 +1,128 @@
+//go:build windows || darwin
+
+package tools
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "net/url"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/ollama/ollama/auth"
+)
+
+type WebFetch struct{}
+
+type FetchRequest struct {
+ URL string `json:"url"`
+}
+
+type FetchResponse struct {
+ Title string `json:"title"`
+ Content string `json:"content"`
+ Links []string `json:"links"`
+}
+
+func (w *WebFetch) Name() string {
+ return "web_fetch"
+}
+
+func (w *WebFetch) Description() string {
+ return "Crawl and extract text content from web pages"
+}
+
+func (g *WebFetch) Schema() map[string]any {
+ schemaBytes := []byte(`{
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "URL to crawl and extract content from"
+ }
+ },
+ "required": ["url"]
+ }`)
+ var schema map[string]any
+ if err := json.Unmarshal(schemaBytes, &schema); err != nil {
+ return nil
+ }
+ return schema
+}
+
+func (w *WebFetch) Prompt() string {
+ return ""
+}
+
+func (w *WebFetch) Execute(ctx context.Context, args map[string]any) (any, string, error) {
+ urlRaw, ok := args["url"]
+ if !ok {
+ return nil, "", fmt.Errorf("url parameter is required")
+ }
+ urlStr, ok := urlRaw.(string)
+ if !ok || strings.TrimSpace(urlStr) == "" {
+ return nil, "", fmt.Errorf("url must be a non-empty string")
+ }
+
+ result, err := performWebFetch(ctx, urlStr)
+ if err != nil {
+ return nil, "", err
+ }
+
+ return result, "", nil
+}
+
+func performWebFetch(ctx context.Context, targetURL string) (*FetchResponse, error) {
+ reqBody := FetchRequest{URL: targetURL}
+ jsonBody, err := json.Marshal(reqBody)
+ if err != nil {
+ return nil, fmt.Errorf("failed to marshal request body: %w", err)
+ }
+
+ crawlURL, err := url.Parse("https://ollama.com/api/web_fetch")
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse fetch URL: %w", err)
+ }
+
+ query := crawlURL.Query()
+ query.Add("ts", strconv.FormatInt(time.Now().Unix(), 10))
+ crawlURL.RawQuery = query.Encode()
+
+ data := fmt.Appendf(nil, "%s,%s", http.MethodPost, crawlURL.RequestURI())
+ signature, err := auth.Sign(ctx, data)
+ if err != nil {
+ return nil, fmt.Errorf("failed to sign request: %w", err)
+ }
+
+ req, err := http.NewRequestWithContext(ctx, http.MethodPost, crawlURL.String(), bytes.NewBuffer(jsonBody))
+ if err != nil {
+ return nil, fmt.Errorf("failed to create request: %w", err)
+ }
+
+ req.Header.Set("Content-Type", "application/json")
+ if signature != "" {
+ req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", signature))
+ }
+
+ client := &http.Client{Timeout: 30 * time.Second}
+ resp, err := client.Do(req)
+ if err != nil {
+ return nil, fmt.Errorf("failed to execute fetch request: %w", err)
+ }
+ defer resp.Body.Close()
+
+ if resp.StatusCode != http.StatusOK {
+ return nil, fmt.Errorf("fetch API error (status %d)", resp.StatusCode)
+ }
+
+ var result FetchResponse
+ if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
+ return nil, fmt.Errorf("failed to decode response: %w", err)
+ }
+
+ return &result, nil
+}
diff --git a/app/tools/web_search.go b/app/tools/web_search.go
new file mode 100644
index 000000000..1cb12ab76
--- /dev/null
+++ b/app/tools/web_search.go
@@ -0,0 +1,145 @@
+//go:build windows || darwin
+
+package tools
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "net/url"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/ollama/ollama/auth"
+)
+
+type WebSearch struct{}
+
+type SearchRequest struct {
+ Query string `json:"query"`
+ MaxResults int `json:"max_results,omitempty"`
+}
+
+type SearchResult struct {
+ Title string `json:"title"`
+ URL string `json:"url"`
+ Content string `json:"content"`
+}
+
+type SearchResponse struct {
+ Results []SearchResult `json:"results"`
+}
+
+func (w *WebSearch) Name() string {
+ return "web_search"
+}
+
+func (w *WebSearch) Description() string {
+ return "Search the web for real-time information using ollama.com web search API."
+}
+
+func (w *WebSearch) Prompt() string {
+ return ""
+}
+
+func (g *WebSearch) Schema() map[string]any {
+ schemaBytes := []byte(`{
+ "type": "object",
+ "properties": {
+ "query": {
+ "type": "string",
+ "description": "The search query to execute"
+ },
+ "max_results": {
+ "type": "integer",
+ "description": "Maximum number of search results to return",
+ "default": 3
+ }
+ },
+ "required": ["query"]
+ }`)
+ var schema map[string]any
+ if err := json.Unmarshal(schemaBytes, &schema); err != nil {
+ return nil
+ }
+ return schema
+}
+
+func (w *WebSearch) Execute(ctx context.Context, args map[string]any) (any, string, error) {
+ rawQuery, ok := args["query"]
+ if !ok {
+ return nil, "", fmt.Errorf("query parameter is required")
+ }
+
+ queryStr, ok := rawQuery.(string)
+ if !ok || strings.TrimSpace(queryStr) == "" {
+ return nil, "", fmt.Errorf("query must be a non-empty string")
+ }
+
+ maxResults := 5
+ if v, ok := args["max_results"].(float64); ok && int(v) > 0 {
+ maxResults = int(v)
+ }
+
+ result, err := performWebSearch(ctx, queryStr, maxResults)
+ if err != nil {
+ return nil, "", err
+ }
+
+ return result, "", nil
+}
+
+func performWebSearch(ctx context.Context, query string, maxResults int) (*SearchResponse, error) {
+ reqBody := SearchRequest{Query: query, MaxResults: maxResults}
+
+ jsonBody, err := json.Marshal(reqBody)
+ if err != nil {
+ return nil, fmt.Errorf("failed to marshal request body: %w", err)
+ }
+
+ searchURL, err := url.Parse("https://ollama.com/api/web_search")
+ if err != nil {
+ return nil, fmt.Errorf("failed to parse search URL: %w", err)
+ }
+
+ q := searchURL.Query()
+ q.Add("ts", strconv.FormatInt(time.Now().Unix(), 10))
+ searchURL.RawQuery = q.Encode()
+
+ data := fmt.Appendf(nil, "%s,%s", http.MethodPost, searchURL.RequestURI())
+ signature, err := auth.Sign(ctx, data)
+ if err != nil {
+ return nil, fmt.Errorf("failed to sign request: %w", err)
+ }
+
+ req, err := http.NewRequestWithContext(ctx, http.MethodPost, searchURL.String(), bytes.NewBuffer(jsonBody))
+ if err != nil {
+ return nil, fmt.Errorf("failed to create request: %w", err)
+ }
+
+ req.Header.Set("Content-Type", "application/json")
+ if signature != "" {
+ req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", signature))
+ }
+
+ client := &http.Client{Timeout: 10 * time.Second}
+ resp, err := client.Do(req)
+ if err != nil {
+ return nil, fmt.Errorf("failed to execute search request: %w", err)
+ }
+ defer resp.Body.Close()
+
+ if resp.StatusCode != http.StatusOK {
+ return nil, fmt.Errorf("search API error (status %d)", resp.StatusCode)
+ }
+
+ var result SearchResponse
+ if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
+ return nil, fmt.Errorf("failed to decode response: %w", err)
+ }
+
+ return &result, nil
+}
diff --git a/app/tray/commontray/types.go b/app/tray/commontray/types.go
deleted file mode 100644
index ed633dc93..000000000
--- a/app/tray/commontray/types.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package commontray
-
-var (
- Title = "Ollama"
- ToolTip = "Ollama"
-
- UpdateIconName = "tray_upgrade"
- IconName = "tray"
-)
-
-type Callbacks struct {
- Quit chan struct{}
- Update chan struct{}
- DoFirstUse chan struct{}
- ShowLogs chan struct{}
-}
-
-type OllamaTray interface {
- GetCallbacks() Callbacks
- Run()
- UpdateAvailable(ver string) error
- DisplayFirstUseNotification() error
- Quit()
-}
diff --git a/app/tray/tray.go b/app/tray/tray.go
deleted file mode 100644
index dfa634353..000000000
--- a/app/tray/tray.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package tray
-
-import (
- "fmt"
- "runtime"
-
- "github.com/ollama/ollama/app/assets"
- "github.com/ollama/ollama/app/tray/commontray"
-)
-
-func NewTray() (commontray.OllamaTray, error) {
- extension := ".png"
- if runtime.GOOS == "windows" {
- extension = ".ico"
- }
- iconName := commontray.UpdateIconName + extension
- updateIcon, err := assets.GetIcon(iconName)
- if err != nil {
- return nil, fmt.Errorf("failed to load icon %s: %w", iconName, err)
- }
- iconName = commontray.IconName + extension
- icon, err := assets.GetIcon(iconName)
- if err != nil {
- return nil, fmt.Errorf("failed to load icon %s: %w", iconName, err)
- }
-
- return InitPlatformTray(icon, updateIcon)
-}
diff --git a/app/tray/tray_nonwindows.go b/app/tray/tray_nonwindows.go
deleted file mode 100644
index a03d233ea..000000000
--- a/app/tray/tray_nonwindows.go
+++ /dev/null
@@ -1,13 +0,0 @@
-//go:build !windows
-
-package tray
-
-import (
- "errors"
-
- "github.com/ollama/ollama/app/tray/commontray"
-)
-
-func InitPlatformTray(icon, updateIcon []byte) (commontray.OllamaTray, error) {
- return nil, errors.New("not implemented")
-}
diff --git a/app/tray/tray_windows.go b/app/tray/tray_windows.go
deleted file mode 100644
index 086fc7943..000000000
--- a/app/tray/tray_windows.go
+++ /dev/null
@@ -1,10 +0,0 @@
-package tray
-
-import (
- "github.com/ollama/ollama/app/tray/commontray"
- "github.com/ollama/ollama/app/tray/wintray"
-)
-
-func InitPlatformTray(icon, updateIcon []byte) (commontray.OllamaTray, error) {
- return wintray.InitTray(icon, updateIcon)
-}
diff --git a/app/tray/wintray/eventloop.go b/app/tray/wintray/eventloop.go
deleted file mode 100644
index 35608a49e..000000000
--- a/app/tray/wintray/eventloop.go
+++ /dev/null
@@ -1,181 +0,0 @@
-//go:build windows
-
-package wintray
-
-import (
- "fmt"
- "log/slog"
- "sync"
- "unsafe"
-
- "golang.org/x/sys/windows"
-)
-
-var quitOnce sync.Once
-
-func (t *winTray) Run() {
- nativeLoop()
-}
-
-func nativeLoop() {
- // Main message pump.
- slog.Debug("starting event handling loop")
- m := &struct {
- WindowHandle windows.Handle
- Message uint32
- Wparam uintptr
- Lparam uintptr
- Time uint32
- Pt point
- LPrivate uint32
- }{}
- for {
- ret, _, err := pGetMessage.Call(uintptr(unsafe.Pointer(m)), 0, 0, 0)
-
- // If the function retrieves a message other than WM_QUIT, the return value is nonzero.
- // If the function retrieves the WM_QUIT message, the return value is zero.
- // If there is an error, the return value is -1
- // https://msdn.microsoft.com/en-us/library/windows/desktop/ms644936(v=vs.85).aspx
- switch int32(ret) {
- case -1:
- slog.Error(fmt.Sprintf("get message failure: %v", err))
- return
- case 0:
- return
- default:
- pTranslateMessage.Call(uintptr(unsafe.Pointer(m))) //nolint:errcheck
- pDispatchMessage.Call(uintptr(unsafe.Pointer(m))) //nolint:errcheck
- }
- }
-}
-
-// WindowProc callback function that processes messages sent to a window.
-// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633573(v=vs.85).aspx
-func (t *winTray) wndProc(hWnd windows.Handle, message uint32, wParam, lParam uintptr) (lResult uintptr) {
- const (
- WM_RBUTTONUP = 0x0205
- WM_LBUTTONUP = 0x0202
- WM_COMMAND = 0x0111
- WM_ENDSESSION = 0x0016
- WM_CLOSE = 0x0010
- WM_DESTROY = 0x0002
- WM_MOUSEMOVE = 0x0200
- WM_LBUTTONDOWN = 0x0201
- )
- switch message {
- case WM_COMMAND:
- menuItemId := int32(wParam)
- // https://docs.microsoft.com/en-us/windows/win32/menurc/wm-command#menus
- switch menuItemId {
- case quitMenuID:
- select {
- case t.callbacks.Quit <- struct{}{}:
- // should not happen but in case not listening
- default:
- slog.Error("no listener on Quit")
- }
- case updateMenuID:
- select {
- case t.callbacks.Update <- struct{}{}:
- // should not happen but in case not listening
- default:
- slog.Error("no listener on Update")
- }
- case diagLogsMenuID:
- select {
- case t.callbacks.ShowLogs <- struct{}{}:
- // should not happen but in case not listening
- default:
- slog.Error("no listener on ShowLogs")
- }
- default:
- slog.Debug(fmt.Sprintf("Unexpected menu item id: %d", menuItemId))
- }
- case WM_CLOSE:
- boolRet, _, err := pDestroyWindow.Call(uintptr(t.window))
- if boolRet == 0 {
- slog.Error(fmt.Sprintf("failed to destroy window: %s", err))
- }
- err = t.wcex.unregister()
- if err != nil {
- slog.Error(fmt.Sprintf("failed to unregister window %s", err))
- }
- case WM_DESTROY:
- // same as WM_ENDSESSION, but throws 0 exit code after all
- defer pPostQuitMessage.Call(uintptr(int32(0))) //nolint:errcheck
- fallthrough
- case WM_ENDSESSION:
- t.muNID.Lock()
- if t.nid != nil {
- err := t.nid.delete()
- if err != nil {
- slog.Error(fmt.Sprintf("failed to delete nid: %s", err))
- }
- }
- t.muNID.Unlock()
- case t.wmSystrayMessage:
- switch lParam {
- case WM_MOUSEMOVE, WM_LBUTTONDOWN:
- // Ignore these...
- case WM_RBUTTONUP, WM_LBUTTONUP:
- err := t.showMenu()
- if err != nil {
- slog.Error(fmt.Sprintf("failed to show menu: %s", err))
- }
- case 0x405: // TODO - how is this magic value derived for the notification left click
- if t.pendingUpdate {
- select {
- case t.callbacks.Update <- struct{}{}:
- // should not happen but in case not listening
- default:
- slog.Error("no listener on Update")
- }
- } else {
- select {
- case t.callbacks.DoFirstUse <- struct{}{}:
- // should not happen but in case not listening
- default:
- slog.Error("no listener on DoFirstUse")
- }
- }
- case 0x404: // Middle click or close notification
- // slog.Debug("doing nothing on close of first time notification")
- default:
- // 0x402 also seems common - what is it?
- slog.Debug(fmt.Sprintf("unmanaged app message, lParm: 0x%x", lParam))
- }
- case t.wmTaskbarCreated: // on explorer.exe restarts
- t.muNID.Lock()
- err := t.nid.add()
- if err != nil {
- slog.Error(fmt.Sprintf("failed to refresh the taskbar on explorer restart: %s", err))
- }
- t.muNID.Unlock()
- default:
- // Calls the default window procedure to provide default processing for any window messages that an application does not process.
- // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633572(v=vs.85).aspx
- lResult, _, _ = pDefWindowProc.Call(
- uintptr(hWnd),
- uintptr(message),
- wParam,
- lParam,
- )
- }
- return
-}
-
-func (t *winTray) Quit() {
- quitOnce.Do(quit)
-}
-
-func quit() {
- boolRet, _, err := pPostMessage.Call(
- uintptr(wt.window),
- WM_CLOSE,
- 0,
- 0,
- )
- if boolRet == 0 {
- slog.Error(fmt.Sprintf("failed to post close message on shutdown %s", err))
- }
-}
diff --git a/app/types/not/found.go b/app/types/not/found.go
new file mode 100644
index 000000000..9294e0155
--- /dev/null
+++ b/app/types/not/found.go
@@ -0,0 +1,28 @@
+//go:build windows || darwin
+
+package not
+
+import (
+ "errors"
+)
+
+// Found is an error that indicates that a value was not found. It
+// may be used by low-level packages to signal to higher-level
+// packages that a value was not found.
+//
+// It exists to avoid using errors.New("not found") in multiple
+// packages to mean the same thing.
+//
+// Found should not be used directly. Instead it should be wrapped
+// or joined using errors.Join or fmt.Errorf, etc.
+//
+// Errors wrapping Found should provide additional context, e.g.
+// fmt.Errorf("%w: %s", not.Found, key)
+//
+//lint:ignore ST1012 This is a sentinel error intended to be read like not.Found.
+var Found = errors.New("not found")
+
+// Available is an error that indicates that a value is not available.
+//
+//lint:ignore ST1012 This is a sentinel error intended to be read like not.Available.
+var Available = errors.New("not available")
diff --git a/app/types/not/valids.go b/app/types/not/valids.go
new file mode 100644
index 000000000..d19894270
--- /dev/null
+++ b/app/types/not/valids.go
@@ -0,0 +1,55 @@
+//go:build windows || darwin
+
+package not
+
+import (
+ "fmt"
+)
+
+type ValidError struct {
+ name string
+ msg string
+ args []any
+}
+
+// Valid returns a new validation error with the given name and message.
+func Valid(name, message string, args ...any) error {
+ return ValidError{name, message, args}
+}
+
+// Message returns the formatted message for the validation error.
+func (e *ValidError) Message() string {
+ return fmt.Sprintf(e.msg, e.args...)
+}
+
+// Error implements the error interface.
+func (e ValidError) Error() string {
+ return fmt.Sprintf("invalid %s: %s", e.name, e.Message())
+}
+
+func (e ValidError) Field() string {
+ return e.name
+}
+
+// Valids is for building a list of validation errors.
+type Valids []ValidError
+
+// Addf adds a validation error to the list with a formatted message using fmt.Sprintf.
+func (b *Valids) Add(name, message string, args ...any) {
+ *b = append(*b, ValidError{name, message, args})
+}
+
+func (b Valids) Error() string {
+ if len(b) == 0 {
+ return ""
+ }
+
+ var result string
+ for i, err := range b {
+ if i > 0 {
+ result += "; "
+ }
+ result += err.Error()
+ }
+ return result
+}
diff --git a/app/types/not/valids_test.go b/app/types/not/valids_test.go
new file mode 100644
index 000000000..4a64822e4
--- /dev/null
+++ b/app/types/not/valids_test.go
@@ -0,0 +1,43 @@
+//go:build windows || darwin
+
+package not_test
+
+import (
+ "errors"
+ "fmt"
+
+ "github.com/ollama/ollama/app/types/not"
+)
+
+func ExampleValids() {
+ // This example demonstrates how to use the Valids type to create
+ // a list of validation errors.
+ //
+ // The Valids type is a slice of ValidError values. Each ValidError
+ // value represents a validation error.
+ //
+ // The Valids type has an Error method that returns a single error
+ // value that represents all of the validation errors in the list.
+ //
+ // The Valids type is useful for collecting multiple validation errors
+ // and returning them as a single error value.
+
+ validate := func() error {
+ var b not.Valids
+ b.Add("name", "must be a valid name")
+ b.Add("email", "%q: must be a valid email address", "invalid.email")
+ return b
+ }
+
+ err := validate()
+ var nv not.Valids
+ if errors.As(err, &nv) {
+ for _, v := range nv {
+ fmt.Println(v)
+ }
+ }
+
+ // Output:
+ // invalid name: must be a valid name
+ // invalid email: "invalid.email": must be a valid email address
+}
diff --git a/app/ui/app.go b/app/ui/app.go
new file mode 100644
index 000000000..d73df2c02
--- /dev/null
+++ b/app/ui/app.go
@@ -0,0 +1,44 @@
+//go:build windows || darwin
+
+package ui
+
+import (
+ "bytes"
+ "embed"
+ "errors"
+ "io/fs"
+ "net/http"
+ "strings"
+ "time"
+)
+
+//go:embed app/dist
+var appFS embed.FS
+
+// appHandler returns an HTTP handler that serves the React SPA.
+// It tries to serve real files first, then falls back to index.html for React Router.
+func (s *Server) appHandler() http.Handler {
+ // Strip the dist prefix so URLs look clean
+ fsys, _ := fs.Sub(appFS, "app/dist")
+ fileServer := http.FileServer(http.FS(fsys))
+
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ p := strings.TrimPrefix(r.URL.Path, "/")
+ if _, err := fsys.Open(p); err == nil {
+ // Serve the file directly
+ fileServer.ServeHTTP(w, r)
+ return
+ }
+ // Fallback – serve index.html for unknown paths so React Router works
+ data, err := fs.ReadFile(fsys, "index.html")
+ if err != nil {
+ if errors.Is(err, fs.ErrNotExist) {
+ http.NotFound(w, r)
+ } else {
+ http.Error(w, "Internal Server Error", http.StatusInternalServerError)
+ }
+ return
+ }
+ http.ServeContent(w, r, "index.html", time.Time{}, bytes.NewReader(data))
+ })
+}
diff --git a/app/ui/app/.gitignore b/app/ui/app/.gitignore
new file mode 100644
index 000000000..9705d1e63
--- /dev/null
+++ b/app/ui/app/.gitignore
@@ -0,0 +1,30 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+.vite/
+.claude/
+
+*storybook.log
+storybook-static
diff --git a/app/ui/app/.prettierignore b/app/ui/app/.prettierignore
new file mode 100644
index 000000000..21c55e20d
--- /dev/null
+++ b/app/ui/app/.prettierignore
@@ -0,0 +1 @@
+*.gen.ts
\ No newline at end of file
diff --git a/app/ui/app/.prettierrc b/app/ui/app/.prettierrc
new file mode 100644
index 000000000..1957463f5
--- /dev/null
+++ b/app/ui/app/.prettierrc
@@ -0,0 +1,6 @@
+{
+ "trailingComma": "all",
+ "semi": true,
+ "singleQuote": false,
+ "printWidth": 80
+}
diff --git a/app/ui/app/codegen/gotypes.gen.ts b/app/ui/app/codegen/gotypes.gen.ts
new file mode 100644
index 000000000..0bf86f2b4
--- /dev/null
+++ b/app/ui/app/codegen/gotypes.gen.ts
@@ -0,0 +1,609 @@
+/* Do not change, this code is generated from Golang structs */
+
+
+export class ChatInfo {
+ id: string;
+ title: string;
+ userExcerpt: string;
+ createdAt: Date;
+ updatedAt: Date;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.id = source["id"];
+ this.title = source["title"];
+ this.userExcerpt = source["userExcerpt"];
+ this.createdAt = new Date(source["createdAt"]);
+ this.updatedAt = new Date(source["updatedAt"]);
+ }
+}
+export class ChatsResponse {
+ chatInfos: ChatInfo[];
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.chatInfos = this.convertValues(source["chatInfos"], ChatInfo);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class Time {
+
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+
+ }
+}
+export class ToolFunction {
+ name: string;
+ arguments: string;
+ result?: any;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.name = source["name"];
+ this.arguments = source["arguments"];
+ this.result = source["result"];
+ }
+}
+export class ToolCall {
+ type: string;
+ function: ToolFunction;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.type = source["type"];
+ this.function = this.convertValues(source["function"], ToolFunction);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class File {
+ filename: string;
+ data: number[];
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.filename = source["filename"];
+ this.data = source["data"];
+ }
+}
+export class Message {
+ role: string;
+ content: string;
+ thinking: string;
+ stream: boolean;
+ model?: string;
+ attachments?: File[];
+ tool_calls?: ToolCall[];
+ tool_call?: ToolCall;
+ tool_name?: string;
+ tool_result?: number[];
+ created_at: Time;
+ updated_at: Time;
+ thinkingTimeStart?: Date | undefined;
+ thinkingTimeEnd?: Date | undefined;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.role = source["role"];
+ this.content = source["content"];
+ this.thinking = source["thinking"];
+ this.stream = source["stream"];
+ this.model = source["model"];
+ this.attachments = this.convertValues(source["attachments"], File);
+ this.tool_calls = this.convertValues(source["tool_calls"], ToolCall);
+ this.tool_call = this.convertValues(source["tool_call"], ToolCall);
+ this.tool_name = source["tool_name"];
+ this.tool_result = source["tool_result"];
+ this.created_at = this.convertValues(source["created_at"], Time);
+ this.updated_at = this.convertValues(source["updated_at"], Time);
+ this.thinkingTimeStart = source["thinkingTimeStart"] && new Date(source["thinkingTimeStart"]);
+ this.thinkingTimeEnd = source["thinkingTimeEnd"] && new Date(source["thinkingTimeEnd"]);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class Chat {
+ id: string;
+ messages: Message[];
+ title: string;
+ created_at: Time;
+ browser_state?: BrowserStateData;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.id = source["id"];
+ this.messages = this.convertValues(source["messages"], Message);
+ this.title = source["title"];
+ this.created_at = this.convertValues(source["created_at"], Time);
+ this.browser_state = source["browser_state"];
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class ChatResponse {
+ chat: Chat;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.chat = this.convertValues(source["chat"], Chat);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class Model {
+ model: string;
+ digest?: string;
+ modified_at?: Time;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.model = source["model"];
+ this.digest = source["digest"];
+ this.modified_at = this.convertValues(source["modified_at"], Time);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class ModelsResponse {
+ models: Model[];
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.models = this.convertValues(source["models"], Model);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class InferenceCompute {
+ library: string;
+ variant: string;
+ compute: string;
+ driver: string;
+ name: string;
+ vram: string;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.library = source["library"];
+ this.variant = source["variant"];
+ this.compute = source["compute"];
+ this.driver = source["driver"];
+ this.name = source["name"];
+ this.vram = source["vram"];
+ }
+}
+export class InferenceComputeResponse {
+ inferenceComputes: InferenceCompute[];
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.inferenceComputes = this.convertValues(source["inferenceComputes"], InferenceCompute);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class ModelCapabilitiesResponse {
+ capabilities: string[];
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.capabilities = source["capabilities"];
+ }
+}
+export class ChatEvent {
+ eventName: "chat" | "thinking" | "assistant_with_tools" | "tool_call" | "tool" | "tool_result" | "done" | "chat_created";
+ content?: string;
+ thinking?: string;
+ thinkingTimeStart?: Date | undefined;
+ thinkingTimeEnd?: Date | undefined;
+ toolCalls?: ToolCall[];
+ toolCall?: ToolCall;
+ toolName?: string;
+ toolResult?: boolean;
+ toolResultData?: any;
+ chatId?: string;
+ toolState?: any;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.eventName = source["eventName"];
+ this.content = source["content"];
+ this.thinking = source["thinking"];
+ this.thinkingTimeStart = source["thinkingTimeStart"] && new Date(source["thinkingTimeStart"]);
+ this.thinkingTimeEnd = source["thinkingTimeEnd"] && new Date(source["thinkingTimeEnd"]);
+ this.toolCalls = this.convertValues(source["toolCalls"], ToolCall);
+ this.toolCall = this.convertValues(source["toolCall"], ToolCall);
+ this.toolName = source["toolName"];
+ this.toolResult = source["toolResult"];
+ this.toolResultData = source["toolResultData"];
+ this.chatId = source["chatId"];
+ this.toolState = source["toolState"];
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class DownloadEvent {
+ eventName: "download";
+ total: number;
+ completed: number;
+ done: boolean;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.eventName = source["eventName"];
+ this.total = source["total"];
+ this.completed = source["completed"];
+ this.done = source["done"];
+ }
+}
+export class ErrorEvent {
+ eventName: "error";
+ error: string;
+ code?: string;
+ details?: string;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.eventName = source["eventName"];
+ this.error = source["error"];
+ this.code = source["code"];
+ this.details = source["details"];
+ }
+}
+export class Settings {
+ Expose: boolean;
+ Browser: boolean;
+ Survey: boolean;
+ Models: string;
+ Agent: boolean;
+ Tools: boolean;
+ WorkingDir: string;
+ ContextLength: number;
+ AirplaneMode: boolean;
+ TurboEnabled: boolean;
+ WebSearchEnabled: boolean;
+ ThinkEnabled: boolean;
+ ThinkLevel: string;
+ SelectedModel: string;
+ SidebarOpen: boolean;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.Expose = source["Expose"];
+ this.Browser = source["Browser"];
+ this.Survey = source["Survey"];
+ this.Models = source["Models"];
+ this.Agent = source["Agent"];
+ this.Tools = source["Tools"];
+ this.WorkingDir = source["WorkingDir"];
+ this.ContextLength = source["ContextLength"];
+ this.AirplaneMode = source["AirplaneMode"];
+ this.TurboEnabled = source["TurboEnabled"];
+ this.WebSearchEnabled = source["WebSearchEnabled"];
+ this.ThinkEnabled = source["ThinkEnabled"];
+ this.ThinkLevel = source["ThinkLevel"];
+ this.SelectedModel = source["SelectedModel"];
+ this.SidebarOpen = source["SidebarOpen"];
+ }
+}
+export class SettingsResponse {
+ settings: Settings;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.settings = this.convertValues(source["settings"], Settings);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class HealthResponse {
+ healthy: boolean;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.healthy = source["healthy"];
+ }
+}
+export class User {
+ id: string;
+ email: string;
+ name: string;
+ bio?: string;
+ avatarurl?: string;
+ firstname?: string;
+ lastname?: string;
+ plan?: string;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.id = source["id"];
+ this.email = source["email"];
+ this.name = source["name"];
+ this.bio = source["bio"];
+ this.avatarurl = source["avatarurl"];
+ this.firstname = source["firstname"];
+ this.lastname = source["lastname"];
+ this.plan = source["plan"];
+ }
+}
+export class Attachment {
+ filename: string;
+ data?: string;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.filename = source["filename"];
+ this.data = source["data"];
+ }
+}
+export class ChatRequest {
+ model: string;
+ prompt: string;
+ index?: number;
+ attachments?: Attachment[];
+ web_search?: boolean;
+ file_tools?: boolean;
+ forceUpdate?: boolean;
+ think?: any;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.model = source["model"];
+ this.prompt = source["prompt"];
+ this.index = source["index"];
+ this.attachments = this.convertValues(source["attachments"], Attachment);
+ this.web_search = source["web_search"];
+ this.file_tools = source["file_tools"];
+ this.forceUpdate = source["forceUpdate"];
+ this.think = source["think"];
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class Error {
+ error: string;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.error = source["error"];
+ }
+}
+export class ModelUpstreamResponse {
+ digest?: string;
+ pushTime: number;
+ error?: string;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.digest = source["digest"];
+ this.pushTime = source["pushTime"];
+ this.error = source["error"];
+ }
+}
+export class Page {
+ url: string;
+ title: string;
+ text: string;
+ lines: string[];
+ links?: Record;
+ fetched_at: Time;
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.url = source["url"];
+ this.title = source["title"];
+ this.text = source["text"];
+ this.lines = source["lines"];
+ this.links = source["links"];
+ this.fetched_at = this.convertValues(source["fetched_at"], Time);
+ }
+
+ convertValues(a: any, classs: any, asMap: boolean = false): any {
+ if (!a) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return (a as any[]).map(elem => this.convertValues(elem, classs));
+ } else if ("object" === typeof a) {
+ if (asMap) {
+ for (const key of Object.keys(a)) {
+ a[key] = new classs(a[key]);
+ }
+ return a;
+ }
+ return new classs(a);
+ }
+ return a;
+ }
+}
+export class BrowserStateData {
+ page_stack: string[];
+ view_tokens: number;
+ url_to_page: {[key: string]: Page};
+
+ constructor(source: any = {}) {
+ if ('string' === typeof source) source = JSON.parse(source);
+ this.page_stack = source["page_stack"];
+ this.view_tokens = source["view_tokens"];
+ this.url_to_page = source["url_to_page"];
+ }
+}
diff --git a/app/ui/app/eslint.config.js b/app/ui/app/eslint.config.js
new file mode 100644
index 000000000..691c8a441
--- /dev/null
+++ b/app/ui/app/eslint.config.js
@@ -0,0 +1,32 @@
+// For more info, see https://github.com/storybookjs/eslint-plugin-storybook#configuration-flat-config-format
+import storybook from "eslint-plugin-storybook";
+
+import js from "@eslint/js";
+import globals from "globals";
+import reactHooks from "eslint-plugin-react-hooks";
+import reactRefresh from "eslint-plugin-react-refresh";
+import tseslint from "typescript-eslint";
+
+export default tseslint.config(
+ { ignores: ["dist"] },
+ {
+ extends: [js.configs.recommended, ...tseslint.configs.recommended],
+ files: ["**/*.{ts,tsx}"],
+ languageOptions: {
+ ecmaVersion: 2020,
+ globals: globals.browser,
+ },
+ plugins: {
+ "react-hooks": reactHooks,
+ "react-refresh": reactRefresh,
+ },
+ rules: {
+ ...reactHooks.configs.recommended.rules,
+ "react-refresh/only-export-components": [
+ "warn",
+ { allowConstantExport: true },
+ ],
+ },
+ },
+ storybook.configs["flat/recommended"],
+);
diff --git a/app/ui/app/index.html b/app/ui/app/index.html
new file mode 100644
index 000000000..9e74109ad
--- /dev/null
+++ b/app/ui/app/index.html
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+ Ollama
+
+
+
+
+
+
+
diff --git a/app/ui/app/package-lock.json b/app/ui/app/package-lock.json
new file mode 100644
index 000000000..0dcd91a20
--- /dev/null
+++ b/app/ui/app/package-lock.json
@@ -0,0 +1,13308 @@
+{
+ "name": "app",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "app",
+ "version": "0.0.0",
+ "dependencies": {
+ "@headlessui/react": "^2.2.4",
+ "@heroicons/react": "^2.2.0",
+ "@tanstack/react-query": "^5.80.7",
+ "@tanstack/react-router": "^1.120.20",
+ "@tanstack/react-router-devtools": "^1.120.20",
+ "clsx": "^2.1.1",
+ "framer-motion": "^12.17.0",
+ "katex": "^0.16.22",
+ "micromark-extension-llm-math": "^3.1.0",
+ "ollama": "^0.6.0",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "rehype-katex": "^7.0.1",
+ "rehype-prism-plus": "^2.0.1",
+ "rehype-raw": "^7.0.0",
+ "rehype-sanitize": "^6.0.0",
+ "remark-math": "^6.0.0",
+ "streamdown": "^1.4.0",
+ "unist-builder": "^4.0.0",
+ "unist-util-parents": "^3.0.0"
+ },
+ "devDependencies": {
+ "@chromatic-com/storybook": "^4.0.1",
+ "@eslint/js": "^9.25.0",
+ "@storybook/addon-a11y": "^9.0.14",
+ "@storybook/addon-docs": "^9.0.14",
+ "@storybook/addon-onboarding": "^9.0.14",
+ "@storybook/addon-vitest": "^9.0.14",
+ "@storybook/react-vite": "^9.0.14",
+ "@tailwindcss/typography": "^0.5.16",
+ "@tailwindcss/vite": "^4.1.11",
+ "@tanstack/router-plugin": "^1.120.20",
+ "@types/node": "^24.7.2",
+ "@types/react": "^19.1.2",
+ "@types/react-dom": "^19.1.2",
+ "@vitejs/plugin-react": "^4.4.1",
+ "@vitest/browser": "^3.2.4",
+ "@vitest/coverage-v8": "^3.2.4",
+ "@vitest/ui": "^3.2.4",
+ "autoprefixer": "^10.4.21",
+ "eslint": "^9.25.0",
+ "eslint-plugin-react-hooks": "^5.2.0",
+ "eslint-plugin-react-refresh": "^0.4.19",
+ "eslint-plugin-storybook": "^9.0.14",
+ "globals": "^16.0.0",
+ "playwright": "^1.53.2",
+ "postcss-preset-env": "^10.2.4",
+ "react-markdown": "^10.1.0",
+ "remark": "^15.0.1",
+ "remark-gfm": "^4.0.1",
+ "remark-stringify": "^11.0.0",
+ "storybook": "^9.0.14",
+ "tailwindcss": "^4.1.9",
+ "typescript": "~5.8.3",
+ "typescript-eslint": "^8.30.1",
+ "vite": "^6.3.5",
+ "vite-tsconfig-paths": "^5.1.4",
+ "vitest": "^3.2.4"
+ }
+ },
+ "node_modules/@adobe/css-tools": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.3.tgz",
+ "integrity": "sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/install-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz",
+ "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==",
+ "license": "MIT",
+ "dependencies": {
+ "package-manager-detector": "^1.3.0",
+ "tinyexec": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@antfu/install-pkg/node_modules/tinyexec": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz",
+ "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.3.0.tgz",
+ "integrity": "sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.27.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
+ "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.27.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",
+ "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.27.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.27.3",
+ "@babel/helpers": "^7.27.4",
+ "@babel/parser": "^7.27.4",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.27.4",
+ "@babel/types": "^7.27.3",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.27.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
+ "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.27.5",
+ "@babel/types": "^7.27.3",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
+ "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
+ "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.27.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz",
+ "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
+ "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
+ "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
+ "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
+ "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
+ "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.27.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz",
+ "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.27.3",
+ "@babel/parser": "^7.27.4",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.3",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",
+ "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@braintree/sanitize-url": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz",
+ "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==",
+ "license": "MIT"
+ },
+ "node_modules/@chevrotain/cst-dts-gen": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz",
+ "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/gast": "11.0.3",
+ "@chevrotain/types": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
+ },
+ "node_modules/@chevrotain/gast": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz",
+ "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/types": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
+ },
+ "node_modules/@chevrotain/regexp-to-ast": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz",
+ "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@chevrotain/types": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz",
+ "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@chevrotain/utils": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz",
+ "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@chromatic-com/storybook": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-4.0.1.tgz",
+ "integrity": "sha512-GQXe5lyZl3yLewLJQyFXEpOp2h+mfN2bPrzYaOFNCJjO4Js9deKbRHTOSaiP2FRwZqDLdQwy2+SEGeXPZ94yYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@neoconfetti/react": "^1.0.0",
+ "chromatic": "^12.0.0",
+ "filesize": "^10.0.12",
+ "jsonfile": "^6.1.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=20.0.0",
+ "yarn": ">=1.22.18"
+ },
+ "peerDependencies": {
+ "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0"
+ }
+ },
+ "node_modules/@csstools/cascade-layer-name-parser": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz",
+ "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz",
+ "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+ "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz",
+ "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/color-helpers": "^5.0.2",
+ "@csstools/css-calc": "^2.1.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+ "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+ "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz",
+ "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ }
+ },
+ "node_modules/@csstools/postcss-cascade-layers": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz",
+ "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@csstools/postcss-color-function": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.10.tgz",
+ "integrity": "sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-color-mix-function": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.10.tgz",
+ "integrity": "sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.0.tgz",
+ "integrity": "sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-content-alt-text": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.6.tgz",
+ "integrity": "sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-exponential-functions": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz",
+ "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-font-format-keywords": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz",
+ "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-gamut-mapping": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.10.tgz",
+ "integrity": "sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-gradients-interpolation-method": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.10.tgz",
+ "integrity": "sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-hwb-function": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.10.tgz",
+ "integrity": "sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-ic-unit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.2.tgz",
+ "integrity": "sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-initial": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz",
+ "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz",
+ "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@csstools/postcss-light-dark-function": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.9.tgz",
+ "integrity": "sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-float-and-clear": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz",
+ "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-overflow": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz",
+ "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-overscroll-behavior": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz",
+ "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-resize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz",
+ "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-logical-viewport-units": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz",
+ "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-media-minmax": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz",
+ "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz",
+ "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-nested-calc": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz",
+ "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-normalize-display-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz",
+ "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-oklab-function": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.10.tgz",
+ "integrity": "sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-progressive-custom-properties": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.1.0.tgz",
+ "integrity": "sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-random-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz",
+ "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-relative-color-syntax": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.10.tgz",
+ "integrity": "sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-scope-pseudo-class": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz",
+ "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@csstools/postcss-sign-functions": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz",
+ "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-stepped-value-functions": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz",
+ "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-text-decoration-shorthand": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz",
+ "integrity": "sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/color-helpers": "^5.0.2",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-trigonometric-functions": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz",
+ "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.4",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/postcss-unset-value": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz",
+ "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@csstools/utilities": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz",
+ "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
+ "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
+ "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
+ "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
+ "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
+ "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
+ "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
+ "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
+ "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
+ "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
+ "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
+ "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
+ "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
+ "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
+ "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
+ "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
+ "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
+ "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
+ "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
+ "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
+ "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
+ "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+ "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.6",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz",
+ "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
+ "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+ "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.28.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz",
+ "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz",
+ "integrity": "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.15.1",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz",
+ "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz",
+ "integrity": "sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.9"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz",
+ "integrity": "sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==",
+ "dependencies": {
+ "@floating-ui/core": "^1.7.1",
+ "@floating-ui/utils": "^0.2.9"
+ }
+ },
+ "node_modules/@floating-ui/react": {
+ "version": "0.26.28",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz",
+ "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.1.2",
+ "@floating-ui/utils": "^0.2.8",
+ "tabbable": "^6.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.3.tgz",
+ "integrity": "sha512-huMBfiU9UnQ2oBwIhgzyIiSpVgvlDstU8CX0AF+wS+KzmYMs0J2a3GwuFHV1Lz+jlrQGeC1fF+Nv0QoumyV0bA==",
+ "dependencies": {
+ "@floating-ui/dom": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz",
+ "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg=="
+ },
+ "node_modules/@headlessui/react": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.4.tgz",
+ "integrity": "sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==",
+ "dependencies": {
+ "@floating-ui/react": "^0.26.16",
+ "@react-aria/focus": "^3.20.2",
+ "@react-aria/interactions": "^3.25.0",
+ "@tanstack/react-virtual": "^3.13.9",
+ "use-sync-external-store": "^1.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^18 || ^19 || ^19.0.0-rc",
+ "react-dom": "^18 || ^19 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@heroicons/react": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz",
+ "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">= 16 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@iconify/types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
+ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
+ "license": "MIT"
+ },
+ "node_modules/@iconify/utils": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.2.tgz",
+ "integrity": "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@antfu/install-pkg": "^1.1.0",
+ "@antfu/utils": "^9.2.0",
+ "@iconify/types": "^2.0.0",
+ "debug": "^4.4.1",
+ "globals": "^15.15.0",
+ "kolorist": "^1.8.0",
+ "local-pkg": "^1.1.1",
+ "mlly": "^1.7.4"
+ }
+ },
+ "node_modules/@iconify/utils/node_modules/globals": {
+ "version": "15.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
+ "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.6.0.tgz",
+ "integrity": "sha512-dPo6SE4dm8UKcgGg4LsV9iw6f5HkIeJwzMA2M2Lb+mhl5vxesbDvb3ENTzNTkGnOxS6PqJig2pfXdtYaW3S9fg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob": "^10.0.0",
+ "magic-string": "^0.30.0",
+ "react-docgen-typescript": "^2.2.2"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.3.x",
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@mdx-js/react": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz",
+ "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdx": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "@types/react": ">=16",
+ "react": ">=16"
+ }
+ },
+ "node_modules/@mermaid-js/parser": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz",
+ "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==",
+ "license": "MIT",
+ "dependencies": {
+ "langium": "3.3.1"
+ }
+ },
+ "node_modules/@neoconfetti/react": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@neoconfetti/react/-/react-1.0.0.tgz",
+ "integrity": "sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.29",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
+ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@react-aria/focus": {
+ "version": "3.20.5",
+ "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.5.tgz",
+ "integrity": "sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==",
+ "dependencies": {
+ "@react-aria/interactions": "^3.25.3",
+ "@react-aria/utils": "^3.29.1",
+ "@react-types/shared": "^3.30.0",
+ "@swc/helpers": "^0.5.0",
+ "clsx": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
+ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ }
+ },
+ "node_modules/@react-aria/interactions": {
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.3.tgz",
+ "integrity": "sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==",
+ "dependencies": {
+ "@react-aria/ssr": "^3.9.9",
+ "@react-aria/utils": "^3.29.1",
+ "@react-stately/flags": "^3.1.2",
+ "@react-types/shared": "^3.30.0",
+ "@swc/helpers": "^0.5.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
+ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ }
+ },
+ "node_modules/@react-aria/ssr": {
+ "version": "3.9.9",
+ "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz",
+ "integrity": "sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==",
+ "dependencies": {
+ "@swc/helpers": "^0.5.0"
+ },
+ "engines": {
+ "node": ">= 12"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ }
+ },
+ "node_modules/@react-aria/utils": {
+ "version": "3.29.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz",
+ "integrity": "sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==",
+ "dependencies": {
+ "@react-aria/ssr": "^3.9.9",
+ "@react-stately/flags": "^3.1.2",
+ "@react-stately/utils": "^3.10.7",
+ "@react-types/shared": "^3.30.0",
+ "@swc/helpers": "^0.5.0",
+ "clsx": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
+ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ }
+ },
+ "node_modules/@react-stately/flags": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz",
+ "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==",
+ "dependencies": {
+ "@swc/helpers": "^0.5.0"
+ }
+ },
+ "node_modules/@react-stately/utils": {
+ "version": "3.10.7",
+ "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz",
+ "integrity": "sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==",
+ "dependencies": {
+ "@swc/helpers": "^0.5.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ }
+ },
+ "node_modules/@react-types/shared": {
+ "version": "3.30.0",
+ "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz",
+ "integrity": "sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz",
+ "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz",
+ "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.42.0.tgz",
+ "integrity": "sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.42.0.tgz",
+ "integrity": "sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.42.0.tgz",
+ "integrity": "sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.42.0.tgz",
+ "integrity": "sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.42.0.tgz",
+ "integrity": "sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.42.0.tgz",
+ "integrity": "sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.42.0.tgz",
+ "integrity": "sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.42.0.tgz",
+ "integrity": "sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.42.0.tgz",
+ "integrity": "sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.42.0.tgz",
+ "integrity": "sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.42.0.tgz",
+ "integrity": "sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.42.0.tgz",
+ "integrity": "sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.42.0.tgz",
+ "integrity": "sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.42.0.tgz",
+ "integrity": "sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.42.0.tgz",
+ "integrity": "sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.42.0.tgz",
+ "integrity": "sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.42.0.tgz",
+ "integrity": "sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.42.0.tgz",
+ "integrity": "sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.42.0.tgz",
+ "integrity": "sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.42.0.tgz",
+ "integrity": "sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@shikijs/core": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.14.0.tgz",
+ "integrity": "sha512-qRSeuP5vlYHCNUIrpEBQFO7vSkR7jn7Kv+5X3FO/zBKVDGQbcnlScD3XhkrHi/R8Ltz0kEjvFR9Szp/XMRbFMw==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.14.0",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4",
+ "hast-util-to-html": "^9.0.5"
+ }
+ },
+ "node_modules/@shikijs/engine-javascript": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.14.0.tgz",
+ "integrity": "sha512-3v1kAXI2TsWQuwv86cREH/+FK9Pjw3dorVEykzQDhwrZj0lwsHYlfyARaKmn6vr5Gasf8aeVpb8JkzeWspxOLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.14.0",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "oniguruma-to-es": "^4.3.3"
+ }
+ },
+ "node_modules/@shikijs/engine-oniguruma": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.14.0.tgz",
+ "integrity": "sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.14.0",
+ "@shikijs/vscode-textmate": "^10.0.2"
+ }
+ },
+ "node_modules/@shikijs/langs": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.14.0.tgz",
+ "integrity": "sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.14.0"
+ }
+ },
+ "node_modules/@shikijs/themes": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.14.0.tgz",
+ "integrity": "sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.14.0"
+ }
+ },
+ "node_modules/@shikijs/types": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.14.0.tgz",
+ "integrity": "sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/@shikijs/vscode-textmate": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
+ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
+ "license": "MIT"
+ },
+ "node_modules/@storybook/addon-a11y": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.0.14.tgz",
+ "integrity": "sha512-xDtzD89lyyq706yynJ8iAUjBfNebb7F5OoJXSAPYPnUiHoNHAcRT9ia2HrC6Yjp3f3JX2PRIEMjD5Myz3sL04A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@storybook/global": "^5.0.0",
+ "axe-core": "^4.2.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^9.0.14"
+ }
+ },
+ "node_modules/@storybook/addon-docs": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-9.0.14.tgz",
+ "integrity": "sha512-vjWH2FamLzoPZXitecbhRSUvQDj27q/dDaCKXSwCIwEVziIQrqHBGDmuJPCWoroCkKxLo8s8gwMi6wk5Minaqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@mdx-js/react": "^3.0.0",
+ "@storybook/csf-plugin": "9.0.14",
+ "@storybook/icons": "^1.2.12",
+ "@storybook/react-dom-shim": "9.0.14",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
+ "ts-dedent": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^9.0.14"
+ }
+ },
+ "node_modules/@storybook/addon-onboarding": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-9.0.14.tgz",
+ "integrity": "sha512-oJdRbOp8OkmDit8KpvkcOccN7Xczqznz55WH2oxaSLg0pWqn493BQGaRvq7Tn8qxTomNg9ibqr0rsHRZQKGlbQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^9.0.14"
+ }
+ },
+ "node_modules/@storybook/addon-vitest": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-vitest/-/addon-vitest-9.0.14.tgz",
+ "integrity": "sha512-pWovuulbQiLCf/hT1FiBnEvH3x+yfi6iYtJt7SMY+WF8LllKQskJXOPNW5mZ+OF6YnJiaI9SHncFVur4B2y+LA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@storybook/global": "^5.0.0",
+ "@storybook/icons": "^1.4.0",
+ "prompts": "^2.4.0",
+ "ts-dedent": "^2.2.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "@vitest/browser": "^3.0.0",
+ "@vitest/runner": "^3.0.0",
+ "storybook": "^9.0.14",
+ "vitest": "^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@vitest/browser": {
+ "optional": true
+ },
+ "@vitest/runner": {
+ "optional": true
+ },
+ "vitest": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/builder-vite": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-9.0.14.tgz",
+ "integrity": "sha512-pMe/RmiC98SMRNVDvfvISW/rEVbKwKLuLm3KilHSKkW1187S/BkxBQx/o61avAEnZR2AC+JgwWZC18PJGRH/pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@storybook/csf-plugin": "9.0.14",
+ "ts-dedent": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^9.0.14",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ }
+ },
+ "node_modules/@storybook/csf-plugin": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-9.0.14.tgz",
+ "integrity": "sha512-PKUmF5y/SfPOifC2bRo79YwfGv6TYISM5JK6r6FHVKMwV1nWLmj7Xx2t5aHa/5JggdBz/iGganTP7oo7QOn+0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "unplugin": "^1.3.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^9.0.14"
+ }
+ },
+ "node_modules/@storybook/csf-plugin/node_modules/unplugin": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz",
+ "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@storybook/global": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz",
+ "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@storybook/icons": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz",
+ "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta"
+ }
+ },
+ "node_modules/@storybook/react": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-9.0.14.tgz",
+ "integrity": "sha512-Ig4Y1xUOMcOWtQ/H73JZa4MeE0GJvYOcK16AhbfvPZMotdXCFyPbb1/pWhS209HuGwfNTVvWGz9rk7KrHmKsNw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@storybook/global": "^5.0.0",
+ "@storybook/react-dom-shim": "9.0.14"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^9.0.14",
+ "typescript": ">= 4.9.x"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@storybook/react-dom-shim": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-9.0.14.tgz",
+ "integrity": "sha512-fXMzhgFMnGZUhWm9zWiR8qOB90OykPhkB/qiebFbD/wUedPyp3H1+NAzX1/UWV2SYqr+aFK9vH1PokAYbpTRsw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^9.0.14"
+ }
+ },
+ "node_modules/@storybook/react-vite": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-9.0.14.tgz",
+ "integrity": "sha512-Qz231WFDcfRiB61P9zBv12GxX/V0CO0YiuIFNDoCNroVRAzGaBK8IYR2KKRd5V/1UGJl35YyyEIZUcA4Zt5xEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@joshwooding/vite-plugin-react-docgen-typescript": "0.6.0",
+ "@rollup/pluginutils": "^5.0.2",
+ "@storybook/builder-vite": "9.0.14",
+ "@storybook/react": "9.0.14",
+ "find-up": "^7.0.0",
+ "magic-string": "^0.30.0",
+ "react-docgen": "^8.0.0",
+ "resolve": "^1.22.8",
+ "tsconfig-paths": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
+ "storybook": "^9.0.14",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ }
+ },
+ "node_modules/@storybook/react-vite/node_modules/find-up": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz",
+ "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^7.2.0",
+ "path-exists": "^5.0.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react-vite/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react-vite/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react-vite/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@storybook/react-vite/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/@storybook/react-vite/node_modules/yocto-queue": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
+ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
+ "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
+ "dependencies": {
+ "tslib": "^2.8.0"
+ }
+ },
+ "node_modules/@tailwindcss/node": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz",
+ "integrity": "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.3.0",
+ "enhanced-resolve": "^5.18.1",
+ "jiti": "^2.4.2",
+ "lightningcss": "1.30.1",
+ "magic-string": "^0.30.17",
+ "source-map-js": "^1.2.1",
+ "tailwindcss": "4.1.11"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.11.tgz",
+ "integrity": "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-libc": "^2.0.4",
+ "tar": "^7.4.3"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.1.11",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.11",
+ "@tailwindcss/oxide-darwin-x64": "4.1.11",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.11",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.11",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.11",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.11",
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.11",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.11"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz",
+ "integrity": "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz",
+ "integrity": "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz",
+ "integrity": "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz",
+ "integrity": "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz",
+ "integrity": "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz",
+ "integrity": "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz",
+ "integrity": "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz",
+ "integrity": "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz",
+ "integrity": "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz",
+ "integrity": "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.3",
+ "@emnapi/runtime": "^1.4.3",
+ "@emnapi/wasi-threads": "^1.0.2",
+ "@napi-rs/wasm-runtime": "^0.2.11",
+ "@tybys/wasm-util": "^0.9.0",
+ "tslib": "^2.8.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz",
+ "integrity": "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz",
+ "integrity": "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/typography": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz",
+ "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lodash.castarray": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.merge": "^4.6.2",
+ "postcss-selector-parser": "6.0.10"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
+ }
+ },
+ "node_modules/@tailwindcss/vite": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.11.tgz",
+ "integrity": "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tailwindcss/node": "4.1.11",
+ "@tailwindcss/oxide": "4.1.11",
+ "tailwindcss": "4.1.11"
+ },
+ "peerDependencies": {
+ "vite": "^5.2.0 || ^6 || ^7"
+ }
+ },
+ "node_modules/@tanstack/history": {
+ "version": "1.120.17",
+ "resolved": "https://registry.npmjs.org/@tanstack/history/-/history-1.120.17.tgz",
+ "integrity": "sha512-k07LFI4Qo074IIaWzT/XjD0KlkGx2w1V3fnNtclKx0oAl8z4O9kCh6za+FPEIRe98xLgNFEiddDbJeAYGSlPtw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/query-core": {
+ "version": "5.80.7",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.80.7.tgz",
+ "integrity": "sha512-s09l5zeUKC8q7DCCCIkVSns8zZrK4ZDT6ryEjxNBFi68G4z2EBobBS7rdOY3r6W1WbUDpc1fe5oY+YO/+2UVUg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/react-query": {
+ "version": "5.80.7",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.80.7.tgz",
+ "integrity": "sha512-u2F0VK6+anItoEvB3+rfvTO9GEh2vb00Je05OwlUe/A0lkJBgW1HckiY3f9YZa+jx6IOe4dHPh10dyp9aY3iRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/query-core": "5.80.7"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^18 || ^19"
+ }
+ },
+ "node_modules/@tanstack/react-router": {
+ "version": "1.120.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.120.20.tgz",
+ "integrity": "sha512-+zNruUE9NsfGm9cHd22Xs7FRtBrBhDZe94pB69BEIjqjrEPZct6f5VhTV9WQ+bDZ6fRz8tUuxNFAgm/3Lm4AIg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/history": "1.120.17",
+ "@tanstack/react-store": "^0.7.0",
+ "@tanstack/router-core": "1.120.19",
+ "jsesc": "^3.1.0",
+ "tiny-invariant": "^1.3.3",
+ "tiny-warning": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": ">=18.0.0 || >=19.0.0",
+ "react-dom": ">=18.0.0 || >=19.0.0"
+ }
+ },
+ "node_modules/@tanstack/react-router-devtools": {
+ "version": "1.120.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-router-devtools/-/react-router-devtools-1.120.20.tgz",
+ "integrity": "sha512-8wYUBdhaMQLo+f5GlJ31WK3T5gpQWetIG7bEGbhrgmd8Z6nZbUYfq10BtVnIwhJwiQa/39Fi9778/09N13l00A==",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/router-devtools-core": "^1.120.19",
+ "solid-js": "^1.9.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "@tanstack/react-router": "^1.120.20",
+ "react": ">=18.0.0 || >=19.0.0",
+ "react-dom": ">=18.0.0 || >=19.0.0"
+ }
+ },
+ "node_modules/@tanstack/react-store": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.1.tgz",
+ "integrity": "sha512-qUTEKdId6QPWGiWyKAPf/gkN29scEsz6EUSJ0C3HgLMgaqTAyBsQ2sMCfGVcqb+kkhEXAdjleCgH6LAPD6f2sA==",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/store": "0.7.1",
+ "use-sync-external-store": "^1.5.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@tanstack/react-virtual": {
+ "version": "3.13.10",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.10.tgz",
+ "integrity": "sha512-nvrzk4E9mWB4124YdJ7/yzwou7IfHxlSef6ugCFcBfRmsnsma3heciiiV97sBNxyc3VuwtZvmwXd0aB5BpucVw==",
+ "dependencies": {
+ "@tanstack/virtual-core": "3.13.10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/@tanstack/router-core": {
+ "version": "1.120.19",
+ "resolved": "https://registry.npmjs.org/@tanstack/router-core/-/router-core-1.120.19.tgz",
+ "integrity": "sha512-5JUVgkxnIM3NxMwzKt0tfz2UopZVxwq6Kl7Rp33zlFJaPjpiRs46VuRjVeAvkpJd6samo1gcH1rWqmnPUmtGcw==",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/history": "1.120.17",
+ "@tanstack/store": "^0.7.0",
+ "tiny-invariant": "^1.3.3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/router-devtools-core": {
+ "version": "1.120.19",
+ "resolved": "https://registry.npmjs.org/@tanstack/router-devtools-core/-/router-devtools-core-1.120.19.tgz",
+ "integrity": "sha512-B/8riYIxs5z+6BmkycfkllhZzRV0/jt8MEqlVHU/HDyAi+00luhi+4xwqQNxiAIUpFa6+0twmGPj4SI3SPA6nQ==",
+ "license": "MIT",
+ "dependencies": {
+ "clsx": "^2.1.1",
+ "goober": "^2.1.16"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "@tanstack/router-core": "^1.120.19",
+ "csstype": "^3.0.10",
+ "solid-js": ">=1.9.5",
+ "tiny-invariant": "^1.3.3"
+ },
+ "peerDependenciesMeta": {
+ "csstype": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@tanstack/router-generator": {
+ "version": "1.120.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/router-generator/-/router-generator-1.120.20.tgz",
+ "integrity": "sha512-tv8uOjteyMnUUDepjknkiTQ90EL6sNuDGsfeUz0wXFQ6dy/cqYqV0pXzJuBRN79ToteWFdq5sJeypqUdzOC8+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/virtual-file-routes": "^1.120.17",
+ "prettier": "^3.5.0",
+ "tsx": "^4.19.2",
+ "zod": "^3.24.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "@tanstack/react-router": "^1.120.20"
+ },
+ "peerDependenciesMeta": {
+ "@tanstack/react-router": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@tanstack/router-plugin": {
+ "version": "1.120.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/router-plugin/-/router-plugin-1.120.20.tgz",
+ "integrity": "sha512-GaDcIZSVaMoLvG6pu0yRLz8C8jtFo1avV23Q1UbZzv+1i66Uk0twcfTPy/eJbB8pgRA2P5Eu7xo7L3g5HvkGRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.26.8",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9",
+ "@babel/template": "^7.26.8",
+ "@babel/traverse": "^7.26.8",
+ "@babel/types": "^7.26.8",
+ "@tanstack/router-core": "^1.120.19",
+ "@tanstack/router-generator": "^1.120.20",
+ "@tanstack/router-utils": "^1.120.17",
+ "@tanstack/virtual-file-routes": "^1.120.17",
+ "@types/babel__core": "^7.20.5",
+ "@types/babel__template": "^7.4.4",
+ "@types/babel__traverse": "^7.20.6",
+ "babel-dead-code-elimination": "^1.0.10",
+ "chokidar": "^3.6.0",
+ "unplugin": "^2.1.2",
+ "zod": "^3.24.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "@rsbuild/core": ">=1.0.2",
+ "@tanstack/react-router": "^1.120.20",
+ "vite": ">=5.0.0 || >=6.0.0",
+ "vite-plugin-solid": "^2.11.2",
+ "webpack": ">=5.92.0"
+ },
+ "peerDependenciesMeta": {
+ "@rsbuild/core": {
+ "optional": true
+ },
+ "@tanstack/react-router": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ },
+ "vite-plugin-solid": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@tanstack/router-utils": {
+ "version": "1.120.17",
+ "resolved": "https://registry.npmjs.org/@tanstack/router-utils/-/router-utils-1.120.17.tgz",
+ "integrity": "sha512-emgT4FthaGtTRaRg9bsr0uaq3EHdl/flS4bKLuFaetiFTt8wk8EVU2a7EZlkaaAfLLDPaiGbP1S2DDaZQ7ci+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/generator": "^7.26.8",
+ "@babel/parser": "^7.26.8",
+ "ansis": "^3.11.0",
+ "diff": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/store": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@tanstack/store/-/store-0.7.1.tgz",
+ "integrity": "sha512-PjUQKXEXhLYj2X5/6c1Xn/0/qKY0IVFxTJweopRfF26xfjVyb14yALydJrHupDh3/d+1WKmfEgZPBVCmDkzzwg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/virtual-core": {
+ "version": "3.13.10",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.10.tgz",
+ "integrity": "sha512-sPEDhXREou5HyZYqSWIqdU580rsF6FGeN7vpzijmP3KTiOGjOMZASz4Y6+QKjiFQwhWrR58OP8izYaNGVxvViA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/virtual-file-routes": {
+ "version": "1.120.17",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-file-routes/-/virtual-file-routes-1.120.17.tgz",
+ "integrity": "sha512-Ssi+yKcjG9ru02ieCpUBF7QQBEKGB7WQS1R9va3GHu+Oq9WjzmJ4rifzdugjTeKD3yfT7d1I+pOxRhoWog6CHw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@testing-library/dom": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz",
+ "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^5.0.1",
+ "aria-query": "5.3.0",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.5.0",
+ "pretty-format": "^27.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@testing-library/jest-dom": {
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz",
+ "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@adobe/css-tools": "^4.4.0",
+ "aria-query": "^5.0.0",
+ "chalk": "^3.0.0",
+ "css.escape": "^1.5.1",
+ "dom-accessibility-api": "^0.6.3",
+ "lodash": "^4.17.21",
+ "redent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
+ "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@testing-library/user-event": {
+ "version": "14.6.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz",
+ "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "@testing-library/dom": ">=7.21.4"
+ }
+ },
+ "node_modules/@types/aria-query": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
+ "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
+ "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/chai": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz",
+ "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/deep-eql": "*"
+ }
+ },
+ "node_modules/@types/d3": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
+ "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-array": "*",
+ "@types/d3-axis": "*",
+ "@types/d3-brush": "*",
+ "@types/d3-chord": "*",
+ "@types/d3-color": "*",
+ "@types/d3-contour": "*",
+ "@types/d3-delaunay": "*",
+ "@types/d3-dispatch": "*",
+ "@types/d3-drag": "*",
+ "@types/d3-dsv": "*",
+ "@types/d3-ease": "*",
+ "@types/d3-fetch": "*",
+ "@types/d3-force": "*",
+ "@types/d3-format": "*",
+ "@types/d3-geo": "*",
+ "@types/d3-hierarchy": "*",
+ "@types/d3-interpolate": "*",
+ "@types/d3-path": "*",
+ "@types/d3-polygon": "*",
+ "@types/d3-quadtree": "*",
+ "@types/d3-random": "*",
+ "@types/d3-scale": "*",
+ "@types/d3-scale-chromatic": "*",
+ "@types/d3-selection": "*",
+ "@types/d3-shape": "*",
+ "@types/d3-time": "*",
+ "@types/d3-time-format": "*",
+ "@types/d3-timer": "*",
+ "@types/d3-transition": "*",
+ "@types/d3-zoom": "*"
+ }
+ },
+ "node_modules/@types/d3-array": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz",
+ "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-axis": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
+ "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-brush": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
+ "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-chord": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
+ "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-color": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
+ "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-contour": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
+ "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-array": "*",
+ "@types/geojson": "*"
+ }
+ },
+ "node_modules/@types/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-dispatch": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz",
+ "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-drag": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
+ "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-dsv": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
+ "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-ease": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
+ "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-fetch": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
+ "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-dsv": "*"
+ }
+ },
+ "node_modules/@types/d3-force": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz",
+ "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-format": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
+ "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-geo": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/geojson": "*"
+ }
+ },
+ "node_modules/@types/d3-hierarchy": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz",
+ "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-interpolate": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
+ "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-color": "*"
+ }
+ },
+ "node_modules/@types/d3-path": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz",
+ "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-polygon": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
+ "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-quadtree": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
+ "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-random": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
+ "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-scale": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz",
+ "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-time": "*"
+ }
+ },
+ "node_modules/@types/d3-scale-chromatic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
+ "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-selection": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz",
+ "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-shape": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz",
+ "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-path": "*"
+ }
+ },
+ "node_modules/@types/d3-time": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz",
+ "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-time-format": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
+ "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-timer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
+ "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-transition": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz",
+ "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-zoom": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
+ "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-interpolate": "*",
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/doctrine": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz",
+ "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
+ "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/geojson": {
+ "version": "7946.0.16",
+ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz",
+ "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/katex": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
+ "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/mdx": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
+ "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "24.7.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz",
+ "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.14.0"
+ }
+ },
+ "node_modules/@types/prismjs": {
+ "version": "1.26.5",
+ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
+ "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "19.1.7",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.7.tgz",
+ "integrity": "sha512-BnsPLV43ddr05N71gaGzyZ5hzkCmGwhMvYc8zmvI8Ci1bRkkDSzDDVfAXfN2tk748OwI7ediiPX6PfT9p0QGVg==",
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "19.1.6",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz",
+ "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.0.0"
+ }
+ },
+ "node_modules/@types/resolve": {
+ "version": "1.20.6",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz",
+ "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz",
+ "integrity": "sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.34.0",
+ "@typescript-eslint/type-utils": "8.34.0",
+ "@typescript-eslint/utils": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^7.0.0",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.34.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.0.tgz",
+ "integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.34.0",
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/typescript-estree": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz",
+ "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.34.0",
+ "@typescript-eslint/types": "^8.34.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz",
+ "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz",
+ "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz",
+ "integrity": "sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.34.0",
+ "@typescript-eslint/utils": "8.34.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz",
+ "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz",
+ "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.34.0",
+ "@typescript-eslint/tsconfig-utils": "8.34.0",
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/visitor-keys": "8.34.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz",
+ "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@typescript-eslint/scope-manager": "8.34.0",
+ "@typescript-eslint/types": "8.34.0",
+ "@typescript-eslint/typescript-estree": "8.34.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz",
+ "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.34.0",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "license": "ISC"
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.1.tgz",
+ "integrity": "sha512-uPZBqSI0YD4lpkIru6M35sIfylLGTyhGHvDZbNLuMA73lMlwJKz5xweH7FajfcCAc2HnINciejA9qTz0dr0M7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.26.10",
+ "@babel/plugin-transform-react-jsx-self": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-source": "^7.25.9",
+ "@rolldown/pluginutils": "1.0.0-beta.9",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.17.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
+ }
+ },
+ "node_modules/@vitest/browser": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-3.2.4.tgz",
+ "integrity": "sha512-tJxiPrWmzH8a+w9nLKlQMzAKX/7VjFs50MWgcAj7p9XQ7AQ9/35fByFYptgPELyLw+0aixTnC4pUWV+APcZ/kw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@testing-library/dom": "^10.4.0",
+ "@testing-library/user-event": "^14.6.1",
+ "@vitest/mocker": "3.2.4",
+ "@vitest/utils": "3.2.4",
+ "magic-string": "^0.30.17",
+ "sirv": "^3.0.1",
+ "tinyrainbow": "^2.0.0",
+ "ws": "^8.18.2"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "playwright": "*",
+ "vitest": "3.2.4",
+ "webdriverio": "^7.0.0 || ^8.0.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "playwright": {
+ "optional": true
+ },
+ "safaridriver": {
+ "optional": true
+ },
+ "webdriverio": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/coverage-v8": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz",
+ "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.3.0",
+ "@bcoe/v8-coverage": "^1.0.2",
+ "ast-v8-to-istanbul": "^0.3.3",
+ "debug": "^4.4.1",
+ "istanbul-lib-coverage": "^3.2.2",
+ "istanbul-lib-report": "^3.0.1",
+ "istanbul-lib-source-maps": "^5.0.6",
+ "istanbul-reports": "^3.1.7",
+ "magic-string": "^0.30.17",
+ "magicast": "^0.3.5",
+ "std-env": "^3.9.0",
+ "test-exclude": "^7.0.1",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@vitest/browser": "3.2.4",
+ "vitest": "3.2.4"
+ },
+ "peerDependenciesMeta": {
+ "@vitest/browser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/expect": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz",
+ "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "3.2.4",
+ "@vitest/utils": "3.2.4",
+ "chai": "^5.2.0",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/mocker": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz",
+ "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "3.2.4",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.17"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/mocker/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/@vitest/pretty-format": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz",
+ "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz",
+ "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/utils": "3.2.4",
+ "pathe": "^2.0.3",
+ "strip-literal": "^3.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz",
+ "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "3.2.4",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/spy": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz",
+ "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyspy": "^4.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/ui": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.2.4.tgz",
+ "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/utils": "3.2.4",
+ "fflate": "^0.8.2",
+ "flatted": "^3.3.3",
+ "pathe": "^2.0.3",
+ "sirv": "^3.0.1",
+ "tinyglobby": "^0.2.14",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "vitest": "3.2.4"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz",
+ "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "3.2.4",
+ "loupe": "^3.1.4",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ansis": {
+ "version": "3.17.0",
+ "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz",
+ "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz",
+ "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ast-v8-to-istanbul": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz",
+ "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "estree-walker": "^3.0.3",
+ "js-tokens": "^9.0.1"
+ }
+ },
+ "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.21",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
+ "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.24.4",
+ "caniuse-lite": "^1.0.30001702",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.1.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.10.3",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz",
+ "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/babel-dead-code-elimination": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/babel-dead-code-elimination/-/babel-dead-code-elimination-1.0.10.tgz",
+ "integrity": "sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.23.7",
+ "@babel/parser": "^7.23.6",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6"
+ }
+ },
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/better-opn": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz",
+ "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "open": "^8.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
+ "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001718",
+ "electron-to-chromium": "^1.5.160",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/cac": {
+ "version": "6.7.14",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
+ "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001721",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz",
+ "integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chai": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
+ "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "assertion-error": "^2.0.1",
+ "check-error": "^2.1.1",
+ "deep-eql": "^5.0.1",
+ "loupe": "^3.1.0",
+ "pathval": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/check-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
+ "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/chevrotain": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz",
+ "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/cst-dts-gen": "11.0.3",
+ "@chevrotain/gast": "11.0.3",
+ "@chevrotain/regexp-to-ast": "11.0.3",
+ "@chevrotain/types": "11.0.3",
+ "@chevrotain/utils": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
+ },
+ "node_modules/chevrotain-allstar": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz",
+ "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash-es": "^4.17.21"
+ },
+ "peerDependencies": {
+ "chevrotain": "^11.0.0"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/chromatic": {
+ "version": "12.2.0",
+ "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-12.2.0.tgz",
+ "integrity": "sha512-GswmBW9ZptAoTns1BMyjbm55Z7EsIJnUvYKdQqXIBZIKbGErmpA+p4c0BYA+nzw5B0M+rb3Iqp1IaH8TFwIQew==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "chroma": "dist/bin.js",
+ "chromatic": "dist/bin.js",
+ "chromatic-cli": "dist/bin.js"
+ },
+ "peerDependencies": {
+ "@chromatic-com/cypress": "^0.*.* || ^1.0.0",
+ "@chromatic-com/playwright": "^0.*.* || ^1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@chromatic-com/cypress": {
+ "optional": true
+ },
+ "@chromatic-com/playwright": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/confbox": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
+ "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
+ "license": "MIT"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cose-base": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
+ "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
+ "license": "MIT",
+ "dependencies": {
+ "layout-base": "^1.0.0"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-blank-pseudo": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz",
+ "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-has-pseudo": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz",
+ "integrity": "sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-prefers-color-scheme": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz",
+ "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/css.escape": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+ "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cssdb": {
+ "version": "8.3.1",
+ "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.3.1.tgz",
+ "integrity": "sha512-XnDRQMXucLueX92yDe0LPKupXetWoFOgawr4O4X41l5TltgK2NVbJJVDnnOywDYfW1sTJ28AcXGKOqdRKwCcmQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ }
+ ],
+ "license": "MIT-0"
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "license": "MIT"
+ },
+ "node_modules/cytoscape": {
+ "version": "3.33.1",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz",
+ "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/cytoscape-cose-bilkent": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
+ "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cose-base": "^1.0.0"
+ },
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
+ }
+ },
+ "node_modules/cytoscape-fcose": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz",
+ "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cose-base": "^2.2.0"
+ },
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/cose-base": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz",
+ "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
+ "license": "MIT",
+ "dependencies": {
+ "layout-base": "^2.0.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/layout-base": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz",
+ "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==",
+ "license": "MIT"
+ },
+ "node_modules/d3": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
+ "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "license": "ISC",
+ "dependencies": {
+ "internmap": "1 - 2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-axis": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-brush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-chord": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-path": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "license": "ISC",
+ "dependencies": {
+ "delaunator": "5"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "license": "ISC",
+ "dependencies": {
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dsv/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dsv": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-force": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-geo": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
+ "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "2.5.0 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-hierarchy": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-polygon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-quadtree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-random": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-sankey": {
+ "version": "0.12.3",
+ "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz",
+ "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "d3-array": "1 - 2",
+ "d3-shape": "^1.2.0"
+ }
+ },
+ "node_modules/d3-sankey/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "internmap": "^1.0.0"
+ }
+ },
+ "node_modules/d3-sankey/node_modules/d3-path": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
+ "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/d3-sankey/node_modules/d3-shape": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
+ "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "d3-path": "1"
+ }
+ },
+ "node_modules/d3-sankey/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==",
+ "license": "ISC"
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
+ "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-path": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-time": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
+ }
+ },
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dagre-d3-es": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz",
+ "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "d3": "^7.9.0",
+ "lodash-es": "^4.17.21"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.19",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-named-character-reference": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz",
+ "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/deep-eql": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+ "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/delaunator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
+ "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
+ "license": "ISC",
+ "dependencies": {
+ "robust-predicates": "^3.0.2"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/diff": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
+ "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-accessibility-api": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/dompurify": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz",
+ "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==",
+ "license": "(MPL-2.0 OR Apache-2.0)",
+ "optionalDependencies": {
+ "@types/trusted-types": "^2.0.7"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.166",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.166.tgz",
+ "integrity": "sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.2",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz",
+ "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
+ "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.5",
+ "@esbuild/android-arm": "0.25.5",
+ "@esbuild/android-arm64": "0.25.5",
+ "@esbuild/android-x64": "0.25.5",
+ "@esbuild/darwin-arm64": "0.25.5",
+ "@esbuild/darwin-x64": "0.25.5",
+ "@esbuild/freebsd-arm64": "0.25.5",
+ "@esbuild/freebsd-x64": "0.25.5",
+ "@esbuild/linux-arm": "0.25.5",
+ "@esbuild/linux-arm64": "0.25.5",
+ "@esbuild/linux-ia32": "0.25.5",
+ "@esbuild/linux-loong64": "0.25.5",
+ "@esbuild/linux-mips64el": "0.25.5",
+ "@esbuild/linux-ppc64": "0.25.5",
+ "@esbuild/linux-riscv64": "0.25.5",
+ "@esbuild/linux-s390x": "0.25.5",
+ "@esbuild/linux-x64": "0.25.5",
+ "@esbuild/netbsd-arm64": "0.25.5",
+ "@esbuild/netbsd-x64": "0.25.5",
+ "@esbuild/openbsd-arm64": "0.25.5",
+ "@esbuild/openbsd-x64": "0.25.5",
+ "@esbuild/sunos-x64": "0.25.5",
+ "@esbuild/win32-arm64": "0.25.5",
+ "@esbuild/win32-ia32": "0.25.5",
+ "@esbuild/win32-x64": "0.25.5"
+ }
+ },
+ "node_modules/esbuild-register": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz",
+ "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.12 <1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.28.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz",
+ "integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.20.0",
+ "@eslint/config-helpers": "^0.2.1",
+ "@eslint/core": "^0.14.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.28.0",
+ "@eslint/plugin-kit": "^0.3.1",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.3.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
+ "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.20",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz",
+ "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "eslint": ">=8.40"
+ }
+ },
+ "node_modules/eslint-plugin-storybook": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-9.0.14.tgz",
+ "integrity": "sha512-YZsDhyFgVfeFPdvd7Xcl9ZusY7Jniq7AOAWN/cdg0a2Y+ywKKNYrQ+EfyuhXsiMjh58plYKMpJYxKVxeUwW9jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^8.8.1"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=8",
+ "storybook": "^9.0.14"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+ "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expect-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz",
+ "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/exsolve": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+ "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
+ "license": "MIT"
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fflate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/filesize": {
+ "version": "10.1.6",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz",
+ "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 10.4.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "12.17.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.17.0.tgz",
+ "integrity": "sha512-2hISKgDk49yCLStwG1wf4Kdy/D6eBw9/eRNaWFIYoI9vMQ/Mqd1Fz+gzVlEtxJmtQ9y4IWnXm19/+UXD3dAYAA==",
+ "dependencies": {
+ "motion-dom": "^12.17.0",
+ "motion-utils": "^12.12.1",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz",
+ "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/globals": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz",
+ "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globrex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
+ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/goober": {
+ "version": "2.1.16",
+ "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz",
+ "integrity": "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==",
+ "license": "MIT",
+ "peerDependencies": {
+ "csstype": "^3.0.10"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/hachure-fill": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz",
+ "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==",
+ "license": "MIT"
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hast-util-from-dom": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz",
+ "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==",
+ "license": "ISC",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hastscript": "^9.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz",
+ "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.1.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "parse5": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz",
+ "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-dom": "^5.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unist-util-remove-position": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-parse5": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
+ "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^9.0.0",
+ "property-information": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-element": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
+ "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
+ "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-raw": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
+ "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "hast-util-to-parse5": "^8.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "parse5": "^7.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-sanitize": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz",
+ "integrity": "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "unist-util-position": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-html": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
+ "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "zwitch": "^2.0.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-jsx-runtime": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
+ "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-js": "^1.0.0",
+ "unist-util-position": "^5.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
+ "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5/node_modules/property-information": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/hast-util-to-string": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz",
+ "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-text": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
+ "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "unist-util-find-after": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz",
+ "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^4.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/html-url-attributes": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
+ "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inline-style-parser": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
+ "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
+ "license": "MIT"
+ },
+ "node_modules/internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
+ "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.23",
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/katex": {
+ "version": "0.16.22",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz",
+ "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==",
+ "funding": [
+ "https://opencollective.com/katex",
+ "https://github.com/sponsors/katex"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^8.3.0"
+ },
+ "bin": {
+ "katex": "cli.js"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/khroma": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz",
+ "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "license": "MIT"
+ },
+ "node_modules/langium": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz",
+ "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==",
+ "license": "MIT",
+ "dependencies": {
+ "chevrotain": "~11.0.3",
+ "chevrotain-allstar": "~0.3.0",
+ "vscode-languageserver": "~9.0.1",
+ "vscode-languageserver-textdocument": "~1.0.11",
+ "vscode-uri": "~3.0.8"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/layout-base": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
+ "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==",
+ "license": "MIT"
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lightningcss": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz",
+ "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.30.1",
+ "lightningcss-darwin-x64": "1.30.1",
+ "lightningcss-freebsd-x64": "1.30.1",
+ "lightningcss-linux-arm-gnueabihf": "1.30.1",
+ "lightningcss-linux-arm64-gnu": "1.30.1",
+ "lightningcss-linux-arm64-musl": "1.30.1",
+ "lightningcss-linux-x64-gnu": "1.30.1",
+ "lightningcss-linux-x64-musl": "1.30.1",
+ "lightningcss-win32-arm64-msvc": "1.30.1",
+ "lightningcss-win32-x64-msvc": "1.30.1"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz",
+ "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz",
+ "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz",
+ "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz",
+ "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz",
+ "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz",
+ "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz",
+ "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz",
+ "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz",
+ "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz",
+ "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/local-pkg": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz",
+ "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==",
+ "license": "MIT",
+ "dependencies": {
+ "mlly": "^1.7.4",
+ "pkg-types": "^2.3.0",
+ "quansync": "^0.2.11"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.castarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/loupe": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz",
+ "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/lucide-react": {
+ "version": "0.542.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.542.0.tgz",
+ "integrity": "sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/lz-string": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "lz-string": "bin/bin.js"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/magicast": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
+ "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.4",
+ "@babel/types": "^7.25.4",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/markdown-table": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
+ "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/marked": {
+ "version": "16.4.1",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.1.tgz",
+ "integrity": "sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==",
+ "license": "MIT",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
+ "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
+ "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
+ "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-gfm-autolink-literal": "^2.0.0",
+ "mdast-util-gfm-footnote": "^2.0.0",
+ "mdast-util-gfm-strikethrough": "^2.0.0",
+ "mdast-util-gfm-table": "^2.0.0",
+ "mdast-util-gfm-task-list-item": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-footnote": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
+ "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
+ "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "markdown-table": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
+ "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm/node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz",
+ "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-find-and-replace": "^3.0.0",
+ "micromark-util-character": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-math": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz",
+ "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.1.0",
+ "unist-util-remove-position": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
+ "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
+ "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+ "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/mermaid": {
+ "version": "11.12.1",
+ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.1.tgz",
+ "integrity": "sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g==",
+ "license": "MIT",
+ "dependencies": {
+ "@braintree/sanitize-url": "^7.1.1",
+ "@iconify/utils": "^3.0.1",
+ "@mermaid-js/parser": "^0.6.3",
+ "@types/d3": "^7.4.3",
+ "cytoscape": "^3.29.3",
+ "cytoscape-cose-bilkent": "^4.1.0",
+ "cytoscape-fcose": "^2.2.0",
+ "d3": "^7.9.0",
+ "d3-sankey": "^0.12.3",
+ "dagre-d3-es": "7.0.13",
+ "dayjs": "^1.11.18",
+ "dompurify": "^3.2.5",
+ "katex": "^0.16.22",
+ "khroma": "^2.1.0",
+ "lodash-es": "^4.17.21",
+ "marked": "^16.2.1",
+ "roughjs": "^4.6.6",
+ "stylis": "^4.3.6",
+ "ts-dedent": "^2.2.0",
+ "uuid": "^11.1.0"
+ }
+ },
+ "node_modules/micromark": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
+ "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
+ "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
+ "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-extension-gfm-autolink-literal": "^2.0.0",
+ "micromark-extension-gfm-footnote": "^2.0.0",
+ "micromark-extension-gfm-strikethrough": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-tagfilter": "^2.0.0",
+ "micromark-extension-gfm-task-list-item": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
+ "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
+ "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
+ "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
+ "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
+ "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-llm-math": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-llm-math/-/micromark-extension-llm-math-3.1.0.tgz",
+ "integrity": "sha512-VIYHuIEk0gpHrojEtNGaxGwdpSLtdWYlLL2vu9PM4M1ilEtak10S8F9zzbNAPBNRoWFs/bjs+J7R3yUBoIQUEA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/katex": "^0.16.0",
+ "devlop": "^1.0.0",
+ "katex": "^0.16.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-math": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz",
+ "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/katex": "^0.16.0",
+ "devlop": "^1.0.0",
+ "katex": "^0.16.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
+ "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
+ "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mlly": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz",
+ "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "pathe": "^2.0.3",
+ "pkg-types": "^1.3.1",
+ "ufo": "^1.6.1"
+ }
+ },
+ "node_modules/mlly/node_modules/confbox": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
+ "license": "MIT"
+ },
+ "node_modules/mlly/node_modules/pkg-types": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
+ "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.1"
+ }
+ },
+ "node_modules/motion-dom": {
+ "version": "12.17.0",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.17.0.tgz",
+ "integrity": "sha512-FA6/c70R9NKs3g41XDVONzmUUrEmyaifLVGCWtAmHP0usDnX9W+RN/tmbC4EUl0w6yLGvMTOwnWCFVgA5luhRg==",
+ "dependencies": {
+ "motion-utils": "^12.12.1"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.12.1",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.12.1.tgz",
+ "integrity": "sha512-f9qiqUHm7hWSLlNW8gS9pisnsN7CRFRD58vNjptKdsqFLpkVnX00TNeD6Q0d27V9KzT7ySFyK1TZ/DShfVOv6w=="
+ },
+ "node_modules/mrmime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ollama": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/ollama/-/ollama-0.6.0.tgz",
+ "integrity": "sha512-FHjdU2Ok5x2HZsxPui/MBJZ5J+HzmxoWYa/p9wk736eT+uAhS8nvIICar5YgwlG5MFNjDR6UA5F3RSKq+JseOA==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-fetch": "^3.6.20"
+ }
+ },
+ "node_modules/oniguruma-parser": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz",
+ "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==",
+ "license": "MIT"
+ },
+ "node_modules/oniguruma-to-es": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz",
+ "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==",
+ "license": "MIT",
+ "dependencies": {
+ "oniguruma-parser": "^0.12.1",
+ "regex": "^6.0.1",
+ "regex-recursion": "^6.0.2"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/package-manager-detector": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.5.0.tgz",
+ "integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==",
+ "license": "MIT"
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
+ "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-entities/node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
+ "license": "MIT"
+ },
+ "node_modules/parse-numeric-range": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz",
+ "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==",
+ "license": "ISC"
+ },
+ "node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/path-data-parser": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz",
+ "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==",
+ "license": "MIT"
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "license": "MIT"
+ },
+ "node_modules/pathval": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz",
+ "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.16"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
+ "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.2.2",
+ "exsolve": "^1.0.7",
+ "pathe": "^2.0.3"
+ }
+ },
+ "node_modules/playwright": {
+ "version": "1.53.2",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.53.2.tgz",
+ "integrity": "sha512-6K/qQxVFuVQhRQhFsVZ9fGeatxirtrpPgxzBYWyZLEXJzqYwuL4fuNmfOfD5et1tJE4GScKyPNeLhZeRwuTU3A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.53.2"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.53.2",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.53.2.tgz",
+ "integrity": "sha512-ox/OytMy+2w1jcYEYlOo1Hhp8hZkLCximMTUTMBXjGUA1KoFfiSZ+DU+3a739jsPY0yoKH2TFy9S2fsJas8yAw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/points-on-curve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz",
+ "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==",
+ "license": "MIT"
+ },
+ "node_modules/points-on-path": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz",
+ "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==",
+ "license": "MIT",
+ "dependencies": {
+ "path-data-parser": "0.1.0",
+ "points-on-curve": "0.2.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.4",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz",
+ "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-attribute-case-insensitive": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz",
+ "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-clamp": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
+ "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=7.6.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.6"
+ }
+ },
+ "node_modules/postcss-color-functional-notation": {
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.10.tgz",
+ "integrity": "sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-color-hex-alpha": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz",
+ "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-color-rebeccapurple": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz",
+ "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-custom-media": {
+ "version": "11.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz",
+ "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/cascade-layer-name-parser": "^2.0.5",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-custom-properties": {
+ "version": "14.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz",
+ "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/cascade-layer-name-parser": "^2.0.5",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-custom-selectors": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz",
+ "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/cascade-layer-name-parser": "^2.0.5",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-dir-pseudo-class": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz",
+ "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-double-position-gradients": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.2.tgz",
+ "integrity": "sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-focus-visible": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz",
+ "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-focus-within": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz",
+ "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-font-variant": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
+ "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-gap-properties": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz",
+ "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-image-set-function": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz",
+ "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-lab-function": {
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.10.tgz",
+ "integrity": "sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-color-parser": "^3.0.10",
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-logical": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz",
+ "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-nesting": {
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz",
+ "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/selector-resolve-nested": "^3.1.0",
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz",
+ "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+ "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ }
+ },
+ "node_modules/postcss-nesting/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-opacity-percentage": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz",
+ "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "kofi",
+ "url": "https://ko-fi.com/mrcgrtz"
+ },
+ {
+ "type": "liberapay",
+ "url": "https://liberapay.com/mrcgrtz"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-overflow-shorthand": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz",
+ "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-page-break": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
+ "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8"
+ }
+ },
+ "node_modules/postcss-place": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz",
+ "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-preset-env": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.2.4.tgz",
+ "integrity": "sha512-q+lXgqmTMdB0Ty+EQ31SuodhdfZetUlwCA/F0zRcd/XdxjzI+Rl2JhZNz5US2n/7t9ePsvuhCnEN4Bmu86zXlA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/postcss-cascade-layers": "^5.0.2",
+ "@csstools/postcss-color-function": "^4.0.10",
+ "@csstools/postcss-color-mix-function": "^3.0.10",
+ "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.0",
+ "@csstools/postcss-content-alt-text": "^2.0.6",
+ "@csstools/postcss-exponential-functions": "^2.0.9",
+ "@csstools/postcss-font-format-keywords": "^4.0.0",
+ "@csstools/postcss-gamut-mapping": "^2.0.10",
+ "@csstools/postcss-gradients-interpolation-method": "^5.0.10",
+ "@csstools/postcss-hwb-function": "^4.0.10",
+ "@csstools/postcss-ic-unit": "^4.0.2",
+ "@csstools/postcss-initial": "^2.0.1",
+ "@csstools/postcss-is-pseudo-class": "^5.0.3",
+ "@csstools/postcss-light-dark-function": "^2.0.9",
+ "@csstools/postcss-logical-float-and-clear": "^3.0.0",
+ "@csstools/postcss-logical-overflow": "^2.0.0",
+ "@csstools/postcss-logical-overscroll-behavior": "^2.0.0",
+ "@csstools/postcss-logical-resize": "^3.0.0",
+ "@csstools/postcss-logical-viewport-units": "^3.0.4",
+ "@csstools/postcss-media-minmax": "^2.0.9",
+ "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5",
+ "@csstools/postcss-nested-calc": "^4.0.0",
+ "@csstools/postcss-normalize-display-values": "^4.0.0",
+ "@csstools/postcss-oklab-function": "^4.0.10",
+ "@csstools/postcss-progressive-custom-properties": "^4.1.0",
+ "@csstools/postcss-random-function": "^2.0.1",
+ "@csstools/postcss-relative-color-syntax": "^3.0.10",
+ "@csstools/postcss-scope-pseudo-class": "^4.0.1",
+ "@csstools/postcss-sign-functions": "^1.1.4",
+ "@csstools/postcss-stepped-value-functions": "^4.0.9",
+ "@csstools/postcss-text-decoration-shorthand": "^4.0.2",
+ "@csstools/postcss-trigonometric-functions": "^4.0.9",
+ "@csstools/postcss-unset-value": "^4.0.0",
+ "autoprefixer": "^10.4.21",
+ "browserslist": "^4.25.0",
+ "css-blank-pseudo": "^7.0.1",
+ "css-has-pseudo": "^7.0.2",
+ "css-prefers-color-scheme": "^10.0.0",
+ "cssdb": "^8.3.0",
+ "postcss-attribute-case-insensitive": "^7.0.1",
+ "postcss-clamp": "^4.1.0",
+ "postcss-color-functional-notation": "^7.0.10",
+ "postcss-color-hex-alpha": "^10.0.0",
+ "postcss-color-rebeccapurple": "^10.0.0",
+ "postcss-custom-media": "^11.0.6",
+ "postcss-custom-properties": "^14.0.6",
+ "postcss-custom-selectors": "^8.0.5",
+ "postcss-dir-pseudo-class": "^9.0.1",
+ "postcss-double-position-gradients": "^6.0.2",
+ "postcss-focus-visible": "^10.0.1",
+ "postcss-focus-within": "^9.0.1",
+ "postcss-font-variant": "^5.0.0",
+ "postcss-gap-properties": "^6.0.0",
+ "postcss-image-set-function": "^7.0.0",
+ "postcss-lab-function": "^7.0.10",
+ "postcss-logical": "^8.1.0",
+ "postcss-nesting": "^13.0.2",
+ "postcss-opacity-percentage": "^3.0.0",
+ "postcss-overflow-shorthand": "^6.0.0",
+ "postcss-page-break": "^3.0.4",
+ "postcss-place": "^10.0.0",
+ "postcss-pseudo-class-any-link": "^10.0.1",
+ "postcss-replace-overflow-wrap": "^4.0.0",
+ "postcss-selector-not": "^8.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-pseudo-class-any-link": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz",
+ "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-replace-overflow-wrap": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
+ "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": "^8.0.3"
+ }
+ },
+ "node_modules/postcss-selector-not": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz",
+ "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
+ },
+ "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/property-information": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+ "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/quansync": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz",
+ "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/antfu"
+ },
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/react": {
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
+ "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-docgen": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-8.0.0.tgz",
+ "integrity": "sha512-kmob/FOTwep7DUWf9KjuenKX0vyvChr3oTdvvPt09V60Iz75FJp+T/0ZeHMbAfJj2WaVWqAPP5Hmm3PYzSPPKg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.18.9",
+ "@babel/traverse": "^7.18.9",
+ "@babel/types": "^7.18.9",
+ "@types/babel__core": "^7.18.0",
+ "@types/babel__traverse": "^7.18.0",
+ "@types/doctrine": "^0.0.9",
+ "@types/resolve": "^1.20.2",
+ "doctrine": "^3.0.0",
+ "resolve": "^1.22.1",
+ "strip-indent": "^4.0.0"
+ },
+ "engines": {
+ "node": "^20.9.0 || >=22"
+ }
+ },
+ "node_modules/react-docgen-typescript": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz",
+ "integrity": "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "typescript": ">= 4.3.x"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
+ "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.26.0"
+ },
+ "peerDependencies": {
+ "react": "^19.1.0"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/react-markdown": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz",
+ "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "hast-util-to-jsx-runtime": "^2.0.0",
+ "html-url-attributes": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.0.0",
+ "unified": "^11.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "@types/react": ">=18",
+ "react": ">=18"
+ }
+ },
+ "node_modules/react-refresh": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/recast": {
+ "version": "0.23.11",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz",
+ "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.16.1",
+ "esprima": "~4.0.0",
+ "source-map": "~0.6.1",
+ "tiny-invariant": "^1.3.3",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/redent/node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/refractor": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/refractor/-/refractor-4.9.0.tgz",
+ "integrity": "sha512-nEG1SPXFoGGx+dcjftjv8cAjEusIh6ED1xhf5DG3C0x/k+rmZ2duKnc3QLpt6qeHv5fPb8uwN3VWN2BT7fr3Og==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "@types/prismjs": "^1.0.0",
+ "hastscript": "^7.0.0",
+ "parse-entities": "^4.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/refractor/node_modules/@types/hast": {
+ "version": "2.3.10",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
+ "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2"
+ }
+ },
+ "node_modules/refractor/node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
+ "license": "MIT"
+ },
+ "node_modules/refractor/node_modules/hast-util-parse-selector": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz",
+ "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/refractor/node_modules/hastscript": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz",
+ "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^3.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/refractor/node_modules/property-information": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz",
+ "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-recursion": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz",
+ "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-utilities": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
+ "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
+ "license": "MIT"
+ },
+ "node_modules/rehype-harden": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/rehype-harden/-/rehype-harden-1.1.5.tgz",
+ "integrity": "sha512-JrtBj5BVd/5vf3H3/blyJatXJbzQfRT9pJBmjafbTaPouQCAKxHwRyCc7dle9BXQKxv4z1OzZylz/tNamoiG3A==",
+ "license": "MIT"
+ },
+ "node_modules/rehype-katex": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz",
+ "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/katex": "^0.16.0",
+ "hast-util-from-html-isomorphic": "^2.0.0",
+ "hast-util-to-text": "^4.0.0",
+ "katex": "^0.16.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-parse": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz",
+ "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-prism-plus": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-prism-plus/-/rehype-prism-plus-2.0.1.tgz",
+ "integrity": "sha512-Wglct0OW12tksTUseAPyWPo3srjBOY7xKlql/DPKi7HbsdZTyaLCAoO58QBKSczFQxElTsQlOY3JDOFzB/K++Q==",
+ "license": "MIT",
+ "dependencies": {
+ "hast-util-to-string": "^3.0.0",
+ "parse-numeric-range": "^1.3.0",
+ "refractor": "^4.8.0",
+ "rehype-parse": "^9.0.0",
+ "unist-util-filter": "^5.0.0",
+ "unist-util-visit": "^5.0.0"
+ }
+ },
+ "node_modules/rehype-raw": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
+ "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-raw": "^9.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-sanitize": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-sanitize/-/rehype-sanitize-6.0.0.tgz",
+ "integrity": "sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-sanitize": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark": {
+ "version": "15.0.1",
+ "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz",
+ "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-gfm": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
+ "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-gfm": "^3.0.0",
+ "micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-math": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz",
+ "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-math": "^3.0.0",
+ "micromark-extension-math": "^3.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
+ "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
+ "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/robust-predicates": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==",
+ "license": "Unlicense"
+ },
+ "node_modules/rollup": {
+ "version": "4.42.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.42.0.tgz",
+ "integrity": "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.7"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.42.0",
+ "@rollup/rollup-android-arm64": "4.42.0",
+ "@rollup/rollup-darwin-arm64": "4.42.0",
+ "@rollup/rollup-darwin-x64": "4.42.0",
+ "@rollup/rollup-freebsd-arm64": "4.42.0",
+ "@rollup/rollup-freebsd-x64": "4.42.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.42.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.42.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.42.0",
+ "@rollup/rollup-linux-arm64-musl": "4.42.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.42.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.42.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.42.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.42.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.42.0",
+ "@rollup/rollup-linux-x64-gnu": "4.42.0",
+ "@rollup/rollup-linux-x64-musl": "4.42.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.42.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.42.0",
+ "@rollup/rollup-win32-x64-msvc": "4.42.0",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup/node_modules/@types/estree": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/roughjs": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz",
+ "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "hachure-fill": "^0.5.2",
+ "path-data-parser": "^0.1.0",
+ "points-on-curve": "^0.2.0",
+ "points-on-path": "^0.2.1"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/scheduler": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
+ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/seroval": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz",
+ "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/seroval-plugins": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.3.2.tgz",
+ "integrity": "sha512-0QvCV2lM3aj/U3YozDiVwx9zpH0q8A60CTWIv4Jszj/givcudPb48B+rkU5D51NJ0pTpweGMttHjboPa9/zoIQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "seroval": "^1.0"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.14.0.tgz",
+ "integrity": "sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/core": "3.14.0",
+ "@shikijs/engine-javascript": "3.14.0",
+ "@shikijs/engine-oniguruma": "3.14.0",
+ "@shikijs/langs": "3.14.0",
+ "@shikijs/themes": "3.14.0",
+ "@shikijs/types": "3.14.0",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sirv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz",
+ "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/solid-js": {
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.7.tgz",
+ "integrity": "sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw==",
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.1.0",
+ "seroval": "~1.3.0",
+ "seroval-plugins": "~1.3.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/stackback": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/std-env": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
+ "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/storybook": {
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.0.14.tgz",
+ "integrity": "sha512-PfVo9kSa4XsDTD2gXFvMRGix032+clBDcUMI4MhUzYxONLiZifnhwch4p/1lG+c3IVN4qkOEgGNc9PEgVMgApw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@storybook/global": "^5.0.0",
+ "@testing-library/jest-dom": "^6.6.3",
+ "@testing-library/user-event": "^14.6.1",
+ "@vitest/expect": "3.2.4",
+ "@vitest/spy": "3.2.4",
+ "better-opn": "^3.0.2",
+ "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0",
+ "esbuild-register": "^3.5.0",
+ "recast": "^0.23.5",
+ "semver": "^7.6.2",
+ "ws": "^8.18.0"
+ },
+ "bin": {
+ "storybook": "bin/index.cjs"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "prettier": "^2 || ^3"
+ },
+ "peerDependenciesMeta": {
+ "prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/storybook/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/streamdown": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/streamdown/-/streamdown-1.4.0.tgz",
+ "integrity": "sha512-ylhDSQ4HpK5/nAH9v7OgIIdGJxlJB2HoYrYkJNGrO8lMpnWuKUcrz/A8xAMwA6eILA27469vIavcOTjmxctrKg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "clsx": "^2.1.1",
+ "katex": "^0.16.22",
+ "lucide-react": "^0.542.0",
+ "marked": "^16.2.1",
+ "mermaid": "^11.11.0",
+ "react-markdown": "^10.1.0",
+ "rehype-harden": "^1.1.5",
+ "rehype-katex": "^7.0.1",
+ "rehype-raw": "^7.0.0",
+ "remark-gfm": "^4.0.1",
+ "remark-math": "^6.0.0",
+ "shiki": "^3.12.2",
+ "tailwind-merge": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
+ "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "min-indent": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-literal": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz",
+ "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^9.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/strip-literal/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/style-to-js": {
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz",
+ "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==",
+ "license": "MIT",
+ "dependencies": {
+ "style-to-object": "1.0.8"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
+ "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.4"
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz",
+ "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==",
+ "license": "MIT"
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tabbable": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
+ },
+ "node_modules/tailwind-merge": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz",
+ "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz",
+ "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tapable": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz",
+ "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.0.1",
+ "mkdirp": "^3.0.1",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
+ "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^10.4.1",
+ "minimatch": "^9.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/test-exclude/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/test-exclude/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
+ "license": "MIT"
+ },
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
+ "license": "MIT"
+ },
+ "node_modules/tinybench": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
+ "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
+ "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/tinypool": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
+ "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ }
+ },
+ "node_modules/tinyrainbow": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
+ "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tinyspy": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz",
+ "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/trough": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/ts-dedent": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz",
+ "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.10"
+ }
+ },
+ "node_modules/tsconfck": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz",
+ "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "tsconfck": "bin/tsconfck.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ },
+ "peerDependencies": {
+ "typescript": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json5": "^2.2.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ },
+ "node_modules/tsx": {
+ "version": "4.19.4",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz",
+ "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.25.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-eslint": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.0.tgz",
+ "integrity": "sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.34.0",
+ "@typescript-eslint/parser": "8.34.0",
+ "@typescript-eslint/utils": "8.34.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
+ "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz",
+ "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unified": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
+ "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-builder": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-4.0.0.tgz",
+ "integrity": "sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-filter": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-filter/-/unist-util-filter-5.0.1.tgz",
+ "integrity": "sha512-pHx7D4Zt6+TsfwylH9+lYhBhzyhEnCXs/lbq/Hstxno5z4gVdyc2WEW0asfjGKPyG4pEKrnBv5hdkO6+aRnQJw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ }
+ },
+ "node_modules/unist-util-find-after": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz",
+ "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-parents": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-parents/-/unist-util-parents-3.0.0.tgz",
+ "integrity": "sha512-3DVSfp+MkJhcJbGn/W7aOlZYVpsMQQ054cpfbPHZAqYPu/lvu5rCdzjuIt4eEMriLkCWLcnJjax97Awm1Bkhtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+ "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unplugin": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.5.tgz",
+ "integrity": "sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.14.1",
+ "picomatch": "^4.0.2",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/unplugin/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/use-sync-external-store": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz",
+ "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/uuid": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/esm/bin/uuid"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-location": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
+ "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vite": {
+ "version": "6.3.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
+ "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
+ "postcss": "^8.5.3",
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-node": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz",
+ "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cac": "^6.7.14",
+ "debug": "^4.4.1",
+ "es-module-lexer": "^1.7.0",
+ "pathe": "^2.0.3",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ },
+ "bin": {
+ "vite-node": "vite-node.mjs"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/vite-tsconfig-paths": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz",
+ "integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "globrex": "^0.1.2",
+ "tsconfck": "^3.0.3"
+ },
+ "peerDependencies": {
+ "vite": "*"
+ },
+ "peerDependenciesMeta": {
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/fdir": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
+ "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/vitest": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz",
+ "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/chai": "^5.2.2",
+ "@vitest/expect": "3.2.4",
+ "@vitest/mocker": "3.2.4",
+ "@vitest/pretty-format": "^3.2.4",
+ "@vitest/runner": "3.2.4",
+ "@vitest/snapshot": "3.2.4",
+ "@vitest/spy": "3.2.4",
+ "@vitest/utils": "3.2.4",
+ "chai": "^5.2.0",
+ "debug": "^4.4.1",
+ "expect-type": "^1.2.1",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.2",
+ "std-env": "^3.9.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^0.3.2",
+ "tinyglobby": "^0.2.14",
+ "tinypool": "^1.1.1",
+ "tinyrainbow": "^2.0.0",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0",
+ "vite-node": "3.2.4",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@types/debug": "^4.1.12",
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "@vitest/browser": "3.2.4",
+ "@vitest/ui": "3.2.4",
+ "happy-dom": "*",
+ "jsdom": "*"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@types/debug": {
+ "optional": true
+ },
+ "@types/node": {
+ "optional": true
+ },
+ "@vitest/browser": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vitest/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageserver": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
+ "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-languageserver-protocol": "3.17.5"
+ },
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
+ }
+ },
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
+ "license": "MIT"
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
+ "license": "MIT"
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
+ "license": "MIT"
+ },
+ "node_modules/web-namespaces": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
+ "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/whatwg-fetch": {
+ "version": "3.6.20",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
+ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
+ "license": "MIT"
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/why-is-node-running": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+ "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "siginfo": "^2.0.0",
+ "stackback": "0.0.2"
+ },
+ "bin": {
+ "why-is-node-running": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.25.57",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.57.tgz",
+ "integrity": "sha512-6tgzLuwVST5oLUxXTmBqoinKMd3JeesgbgseXeFasKKj8Q1FCZrHnbqJOyiEvr4cVAlbug+CgIsmJ8cl/pU5FA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/app/ui/app/package.json b/app/ui/app/package.json
new file mode 100644
index 000000000..5532e70f0
--- /dev/null
+++ b/app/ui/app/package.json
@@ -0,0 +1,82 @@
+{
+ "name": "app",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview",
+ "prettier": "prettier --write .",
+ "prettier:check": "prettier --check .",
+ "storybook": "storybook dev -p 6006",
+ "build-storybook": "storybook build",
+ "test": "vitest",
+ "test:ui": "vitest --ui",
+ "test:coverage": "vitest --coverage"
+ },
+ "dependencies": {
+ "@headlessui/react": "^2.2.4",
+ "@heroicons/react": "^2.2.0",
+ "@tanstack/react-query": "^5.80.7",
+ "@tanstack/react-router": "^1.120.20",
+ "@tanstack/react-router-devtools": "^1.120.20",
+ "clsx": "^2.1.1",
+ "framer-motion": "^12.17.0",
+ "katex": "^0.16.22",
+ "micromark-extension-llm-math": "^3.1.0",
+ "ollama": "^0.6.0",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "rehype-katex": "^7.0.1",
+ "rehype-prism-plus": "^2.0.1",
+ "rehype-raw": "^7.0.0",
+ "rehype-sanitize": "^6.0.0",
+ "remark-math": "^6.0.0",
+ "streamdown": "^1.4.0",
+ "unist-builder": "^4.0.0",
+ "unist-util-parents": "^3.0.0"
+ },
+ "devDependencies": {
+ "@chromatic-com/storybook": "^4.0.1",
+ "@eslint/js": "^9.25.0",
+ "@storybook/addon-a11y": "^9.0.14",
+ "@storybook/addon-docs": "^9.0.14",
+ "@storybook/addon-onboarding": "^9.0.14",
+ "@storybook/addon-vitest": "^9.0.14",
+ "@storybook/react-vite": "^9.0.14",
+ "@tailwindcss/typography": "^0.5.16",
+ "@tailwindcss/vite": "^4.1.11",
+ "@tanstack/router-plugin": "^1.120.20",
+ "@types/node": "^24.7.2",
+ "@types/react": "^19.1.2",
+ "@types/react-dom": "^19.1.2",
+ "@vitejs/plugin-react": "^4.4.1",
+ "@vitest/browser": "^3.2.4",
+ "@vitest/coverage-v8": "^3.2.4",
+ "@vitest/ui": "^3.2.4",
+ "autoprefixer": "^10.4.21",
+ "eslint": "^9.25.0",
+ "eslint-plugin-react-hooks": "^5.2.0",
+ "eslint-plugin-react-refresh": "^0.4.19",
+ "eslint-plugin-storybook": "^9.0.14",
+ "globals": "^16.0.0",
+ "playwright": "^1.53.2",
+ "postcss-preset-env": "^10.2.4",
+ "react-markdown": "^10.1.0",
+ "remark": "^15.0.1",
+ "remark-gfm": "^4.0.1",
+ "remark-stringify": "^11.0.0",
+ "storybook": "^9.0.14",
+ "tailwindcss": "^4.1.9",
+ "typescript": "~5.8.3",
+ "typescript-eslint": "^8.30.1",
+ "vite": "^6.3.5",
+ "vite-tsconfig-paths": "^5.1.4",
+ "vitest": "^3.2.4"
+ },
+ "overrides": {
+ "mdast-util-gfm-autolink-literal": "2.0.0"
+ }
+}
diff --git a/app/ui/app/public/hello.png b/app/ui/app/public/hello.png
new file mode 100644
index 000000000..fd04d9d0a
Binary files /dev/null and b/app/ui/app/public/hello.png differ
diff --git a/app/ui/app/src/api.ts b/app/ui/app/src/api.ts
new file mode 100644
index 000000000..273850d6b
--- /dev/null
+++ b/app/ui/app/src/api.ts
@@ -0,0 +1,416 @@
+import {
+ ChatResponse,
+ ChatsResponse,
+ ChatEvent,
+ DownloadEvent,
+ ErrorEvent,
+ InferenceCompute,
+ InferenceComputeResponse,
+ ModelCapabilitiesResponse,
+ Model,
+ ChatRequest,
+ Settings,
+ User,
+} from "@/gotypes";
+import { parseJsonlFromResponse } from "./util/jsonl-parsing";
+import { ollamaClient as ollama } from "./lib/ollama-client";
+import type { ModelResponse } from "ollama/browser";
+import { API_BASE, OLLAMA_DOT_COM } from "./lib/config";
+
+// Extend Model class with utility methods
+declare module "@/gotypes" {
+ interface Model {
+ isCloud(): boolean;
+ }
+}
+
+Model.prototype.isCloud = function (): boolean {
+ return this.model.endsWith("cloud");
+};
+// Helper function to convert Uint8Array to base64
+function uint8ArrayToBase64(uint8Array: Uint8Array): string {
+ const chunkSize = 0x8000; // 32KB chunks to avoid stack overflow
+ let binary = "";
+
+ for (let i = 0; i < uint8Array.length; i += chunkSize) {
+ const chunk = uint8Array.subarray(i, i + chunkSize);
+ binary += String.fromCharCode(...chunk);
+ }
+
+ return btoa(binary);
+}
+
+export async function fetchUser(): Promise {
+ const response = await fetch(`${API_BASE}/api/me`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+
+ if (response.ok) {
+ const userData: User = await response.json();
+
+ if (userData.avatarurl && !userData.avatarurl.startsWith("http")) {
+ userData.avatarurl = `${OLLAMA_DOT_COM}${userData.avatarurl}`;
+ }
+
+ return userData;
+ }
+
+ if (response.status === 401 || response.status === 403) {
+ return null;
+ }
+
+ throw new Error(`Failed to fetch user: ${response.status}`);
+}
+
+export async function fetchConnectUrl(): Promise {
+ const response = await fetch(`${API_BASE}/api/me`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+
+ if (response.status === 401) {
+ const data = await response.json();
+ if (data.signin_url) {
+ return data.signin_url;
+ }
+ }
+
+ throw new Error("Failed to fetch connect URL");
+}
+
+export async function disconnectUser(): Promise {
+ const response = await fetch(`${API_BASE}/api/signout`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to disconnect user");
+ }
+}
+
+export async function getChats(): Promise {
+ const response = await fetch(`${API_BASE}/api/v1/chats`);
+ const data = await response.json();
+ return new ChatsResponse(data);
+}
+
+export async function getChat(chatId: string): Promise {
+ const response = await fetch(`${API_BASE}/api/v1/chat/${chatId}`);
+ const data = await response.json();
+ return new ChatResponse(data);
+}
+
+export async function getModels(query?: string): Promise {
+ try {
+ const { models: modelsResponse } = await ollama.list();
+
+ let models: Model[] = modelsResponse
+ .filter((m: ModelResponse) => {
+ const families = m.details?.families;
+
+ if (!families || families.length === 0) {
+ return true;
+ }
+
+ const isBertOnly = families.every((family: string) =>
+ family.toLowerCase().includes("bert"),
+ );
+
+ return !isBertOnly;
+ })
+ .map((m: ModelResponse) => {
+ // Remove the latest tag from the returned model
+ const modelName = m.name.replace(/:latest$/, "");
+
+ return new Model({
+ model: modelName,
+ digest: m.digest,
+ modified_at: m.modified_at ? new Date(m.modified_at) : undefined,
+ });
+ });
+
+ // Filter by query if provided
+ if (query) {
+ const normalizedQuery = query.toLowerCase().trim();
+
+ const filteredModels = models.filter((m: Model) => {
+ return m.model.toLowerCase().startsWith(normalizedQuery);
+ });
+
+ let exactMatch = false;
+ for (const m of filteredModels) {
+ if (m.model.toLowerCase() === normalizedQuery) {
+ exactMatch = true;
+ break;
+ }
+ }
+
+ // Add query if it's in the registry and not already in the list
+ if (!exactMatch) {
+ const result = await getModelUpstreamInfo(new Model({ model: query }));
+ const existsUpstream = !!result.digest && !result.error;
+ if (existsUpstream) {
+ filteredModels.push(new Model({ model: query }));
+ }
+ }
+
+ models = filteredModels;
+ }
+
+ return models;
+ } catch (err) {
+ throw new Error(`Failed to fetch models: ${err}`);
+ }
+}
+
+export async function getModelCapabilities(
+ modelName: string,
+): Promise {
+ try {
+ const showResponse = await ollama.show({ model: modelName });
+
+ return new ModelCapabilitiesResponse({
+ capabilities: Array.isArray(showResponse.capabilities)
+ ? showResponse.capabilities
+ : [],
+ });
+ } catch (error) {
+ // Model might not be downloaded yet, return empty capabilities
+ console.error(`Failed to get capabilities for ${modelName}:`, error);
+ return new ModelCapabilitiesResponse({ capabilities: [] });
+ }
+}
+
+export type ChatEventUnion = ChatEvent | DownloadEvent | ErrorEvent;
+
+export async function* sendMessage(
+ chatId: string,
+ message: string,
+ model: Model,
+ attachments?: Array<{ filename: string; data: Uint8Array }>,
+ signal?: AbortSignal,
+ index?: number,
+ webSearch?: boolean,
+ fileTools?: boolean,
+ forceUpdate?: boolean,
+ think?: boolean | string,
+): AsyncGenerator {
+ // Convert Uint8Array to base64 for JSON serialization
+ const serializedAttachments = attachments?.map((att) => ({
+ filename: att.filename,
+ data: uint8ArrayToBase64(att.data),
+ }));
+
+ // Send think parameter when it's explicitly set (true, false, or a non-empty string).
+ const shouldSendThink =
+ think !== undefined &&
+ (typeof think === "boolean" || (typeof think === "string" && think !== ""));
+
+ const response = await fetch(`${API_BASE}/api/v1/chat/${chatId}`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(
+ new ChatRequest({
+ model: model.model,
+ prompt: message,
+ ...(index !== undefined ? { index } : {}),
+ ...(serializedAttachments !== undefined
+ ? { attachments: serializedAttachments }
+ : {}),
+ // Always send web_search as a boolean value (default to false)
+ web_search: webSearch ?? false,
+ file_tools: fileTools ?? false,
+ ...(forceUpdate !== undefined ? { forceUpdate } : {}),
+ ...(shouldSendThink ? { think } : {}),
+ }),
+ ),
+ signal,
+ });
+
+ for await (const event of parseJsonlFromResponse(response)) {
+ switch (event.eventName) {
+ case "download":
+ yield new DownloadEvent(event);
+ break;
+ case "error":
+ yield new ErrorEvent(event);
+ break;
+ default:
+ yield new ChatEvent(event);
+ break;
+ }
+ }
+}
+
+export async function getSettings(): Promise<{
+ settings: Settings;
+}> {
+ const response = await fetch(`${API_BASE}/api/v1/settings`);
+ if (!response.ok) {
+ throw new Error("Failed to fetch settings");
+ }
+ const data = await response.json();
+ return {
+ settings: new Settings(data.settings),
+ };
+}
+
+export async function updateSettings(settings: Settings): Promise<{
+ settings: Settings;
+}> {
+ const response = await fetch(`${API_BASE}/api/v1/settings`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(settings),
+ });
+ if (!response.ok) {
+ const error = await response.text();
+ throw new Error(error || "Failed to update settings");
+ }
+ const data = await response.json();
+ return {
+ settings: new Settings(data.settings),
+ };
+}
+
+export async function renameChat(chatId: string, title: string): Promise {
+ const response = await fetch(`${API_BASE}/api/v1/chat/${chatId}/rename`, {
+ method: "PUT",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({ title: title.trim() }),
+ });
+ if (!response.ok) {
+ const error = await response.text();
+ throw new Error(error || "Failed to rename chat");
+ }
+}
+
+export async function deleteChat(chatId: string): Promise {
+ const response = await fetch(`${API_BASE}/api/v1/chat/${chatId}`, {
+ method: "DELETE",
+ });
+ if (!response.ok) {
+ const error = await response.text();
+ throw new Error(error || "Failed to delete chat");
+ }
+}
+
+// Get upstream information for model staleness checking
+export async function getModelUpstreamInfo(
+ model: Model,
+): Promise<{ digest?: string; pushTime: number; error?: string }> {
+ try {
+ const response = await fetch(`${API_BASE}/api/v1/model/upstream`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ model: model.model,
+ }),
+ });
+
+ if (!response.ok) {
+ console.warn(
+ `Failed to check upstream digest for ${model.model}: ${response.status}`,
+ );
+ return { pushTime: 0 };
+ }
+
+ const data = await response.json();
+
+ if (data.error) {
+ console.warn(`Upstream digest check: ${data.error}`);
+ return { error: data.error, pushTime: 0 };
+ }
+
+ return { digest: data.digest, pushTime: data.pushTime || 0 };
+ } catch (error) {
+ console.warn(`Error checking model staleness:`, error);
+ return { pushTime: 0 };
+ }
+}
+
+export async function* pullModel(
+ modelName: string,
+ signal?: AbortSignal,
+): AsyncGenerator<{
+ status: string;
+ digest?: string;
+ total?: number;
+ completed?: number;
+ done?: boolean;
+}> {
+ const response = await fetch(`${API_BASE}/api/v1/models/pull`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({ name: modelName }),
+ signal,
+ });
+
+ if (!response.ok) {
+ throw new Error(`Failed to pull model: ${response.statusText}`);
+ }
+
+ for await (const event of parseJsonlFromResponse<{
+ status: string;
+ digest?: string;
+ total?: number;
+ completed?: number;
+ done?: boolean;
+ }>(response)) {
+ yield event;
+ }
+}
+
+export async function getInferenceCompute(): Promise {
+ const response = await fetch(`${API_BASE}/api/v1/inference-compute`);
+ if (!response.ok) {
+ throw new Error(
+ `Failed to fetch inference compute: ${response.statusText}`,
+ );
+ }
+
+ const data = await response.json();
+ const inferenceComputeResponse = new InferenceComputeResponse(data);
+ return inferenceComputeResponse.inferenceComputes || [];
+}
+
+export async function fetchHealth(): Promise {
+ try {
+ // Use the /api/version endpoint as a health check
+ const response = await fetch(`${API_BASE}/api/version`, {
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+
+ if (response.ok) {
+ const data = await response.json();
+ // If we get a version back, the server is healthy
+ return !!data.version;
+ }
+
+ return false;
+ } catch (error) {
+ console.error("Error checking health:", error);
+ return false;
+ }
+}
diff --git a/app/ui/app/src/components/Chat.tsx b/app/ui/app/src/components/Chat.tsx
new file mode 100644
index 000000000..e0fcb4ff3
--- /dev/null
+++ b/app/ui/app/src/components/Chat.tsx
@@ -0,0 +1,298 @@
+import MessageList from "./MessageList";
+import ChatForm from "./ChatForm";
+import { FileUpload } from "./FileUpload";
+import { DisplayUpgrade } from "./DisplayUpgrade";
+import { DisplayStale } from "./DisplayStale";
+import { DisplayLogin } from "./DisplayLogin";
+import {
+ useChat,
+ useSendMessage,
+ useIsStreaming,
+ useIsWaitingForLoad,
+ useDownloadProgress,
+ useChatError,
+ useShouldShowStaleDisplay,
+ useDismissStaleModel,
+} from "@/hooks/useChats";
+import { useHealth } from "@/hooks/useHealth";
+import { useMessageAutoscroll } from "@/hooks/useMessageAutoscroll";
+import {
+ useState,
+ useEffect,
+ useLayoutEffect,
+ useRef,
+ useCallback,
+} from "react";
+import { useQueryClient } from "@tanstack/react-query";
+import { useNavigate } from "@tanstack/react-router";
+import { useSelectedModel } from "@/hooks/useSelectedModel";
+import { useUser } from "@/hooks/useUser";
+import { useHasVisionCapability } from "@/hooks/useModelCapabilities";
+import { Message } from "@/gotypes";
+
+export default function Chat({ chatId }: { chatId: string }) {
+ const queryClient = useQueryClient();
+ const navigate = useNavigate();
+ const chatQuery = useChat(chatId === "new" ? "" : chatId);
+ const chatErrorQuery = useChatError(chatId === "new" ? "" : chatId);
+ const { selectedModel } = useSelectedModel(chatId);
+ const { user } = useUser();
+ const hasVisionCapability = useHasVisionCapability(selectedModel?.model);
+ const shouldShowStaleDisplay = useShouldShowStaleDisplay(selectedModel);
+ const dismissStaleModel = useDismissStaleModel();
+ const { isHealthy } = useHealth();
+
+ const [editingMessage, setEditingMessage] = useState<{
+ content: string;
+ index: number;
+ originalMessage: Message;
+ } | null>(null);
+ const prevChatIdRef = useRef(chatId);
+
+ const chatFormCallbackRef = useRef<
+ | ((
+ files: Array<{ filename: string; data: Uint8Array; type?: string }>,
+ errors: Array<{ filename: string; error: string }>,
+ ) => void)
+ | null
+ >(null);
+
+ const handleFilesReceived = useCallback(
+ (
+ callback: (
+ files: Array<{
+ filename: string;
+ data: Uint8Array;
+ type?: string;
+ }>,
+ errors: Array<{ filename: string; error: string }>,
+ ) => void,
+ ) => {
+ chatFormCallbackRef.current = callback;
+ },
+ [],
+ );
+
+ const handleFilesProcessed = useCallback(
+ (
+ files: Array<{ filename: string; data: Uint8Array; type?: string }>,
+ errors: Array<{ filename: string; error: string }> = [],
+ ) => {
+ chatFormCallbackRef.current?.(files, errors);
+ },
+ [],
+ );
+
+ const allMessages = chatQuery?.data?.chat?.messages ?? [];
+ // TODO(parthsareen): will need to consolidate when used with more tools with state
+ const browserToolResult = chatQuery?.data?.chat?.browser_state;
+ const chatError = chatErrorQuery.data;
+
+ const messages = allMessages;
+ const isStreaming = useIsStreaming(chatId);
+ const isWaitingForLoad = useIsWaitingForLoad(chatId);
+ const downloadProgress = useDownloadProgress(chatId);
+ const isDownloadingModel = downloadProgress && !downloadProgress.done;
+ const isDisabled = !isHealthy;
+
+ // Clear editing state when navigating to a different chat
+ useEffect(() => {
+ setEditingMessage(null);
+ }, [chatId]);
+
+ const sendMessageMutation = useSendMessage(chatId);
+
+ const { containerRef, handleNewUserMessage, spacerHeight } =
+ useMessageAutoscroll({
+ messages,
+ isStreaming,
+ chatId,
+ });
+
+ // Scroll to bottom only when switching to a different existing chat
+ useLayoutEffect(() => {
+ // Only scroll if the chatId actually changed (not just messages updating)
+ if (
+ prevChatIdRef.current !== chatId &&
+ containerRef.current &&
+ messages.length > 0 &&
+ chatId !== "new"
+ ) {
+ // Always scroll to the bottom when opening a chat
+ containerRef.current.scrollTop = containerRef.current.scrollHeight;
+ }
+ prevChatIdRef.current = chatId;
+ }, [chatId, messages.length]);
+
+ // Simplified submit handler - ChatForm handles all the attachment logic
+ const handleChatFormSubmit = (
+ message: string,
+ options: {
+ attachments?: Array<{ filename: string; data: Uint8Array }>;
+ index?: number;
+ webSearch?: boolean;
+ fileTools?: boolean;
+ think?: boolean | string;
+ },
+ ) => {
+ // Clear any existing errors when sending a new message
+ sendMessageMutation.reset();
+ if (chatError) {
+ clearChatError();
+ }
+
+ // Prepare attachments for backend
+ const allAttachments = (options.attachments || []).map((att) => ({
+ filename: att.filename,
+ data: att.data.length === 0 ? new Uint8Array(0) : att.data,
+ }));
+
+ sendMessageMutation.mutate({
+ message,
+ attachments: allAttachments,
+ index: editingMessage ? editingMessage.index : options.index,
+ webSearch: options.webSearch,
+ fileTools: options.fileTools,
+ think: options.think,
+ onChatEvent: (event) => {
+ if (event.eventName === "chat_created" && event.chatId) {
+ navigate({
+ to: "/c/$chatId",
+ params: {
+ chatId: event.chatId,
+ },
+ });
+ }
+ },
+ });
+
+ // Clear edit mode after submission
+ setEditingMessage(null);
+ handleNewUserMessage();
+ };
+
+ const handleEditMessage = (content: string, index: number) => {
+ setEditingMessage({
+ content,
+ index,
+ originalMessage: messages[index],
+ });
+ };
+
+ const handleCancelEdit = () => {
+ setEditingMessage(null);
+ if (chatError) {
+ clearChatError();
+ }
+ };
+
+ const clearChatError = () => {
+ queryClient.setQueryData(
+ ["chatError", chatId === "new" ? "" : chatId],
+ null,
+ );
+ };
+
+ const isWindows = navigator.platform.toLowerCase().includes("win");
+
+ return chatId === "new" || chatQuery ? (
+
+ {chatId === "new" ? (
+
+ ) : (
+
+
+ {
+ handleEditMessage(content, index);
+ }}
+ editingMessageIndex={editingMessage?.index}
+ error={chatError}
+ browserToolResult={browserToolResult}
+ />
+
+
+
+ {selectedModel && shouldShowStaleDisplay && (
+
+
+ dismissStaleModel(selectedModel?.model || "")
+ }
+ chatId={chatId}
+ onScrollToBottom={() => {
+ if (containerRef.current) {
+ containerRef.current.scrollTo({
+ top: containerRef.current.scrollHeight,
+ behavior: "smooth",
+ });
+ }
+ }}
+ />
+
+ )}
+ {chatError && chatError.code === "usage_limit_upgrade" && (
+
+
+
+ )}
+ {chatError && chatError.code === "cloud_unauthorized" && (
+
+
+
+ )}
+
0}
+ onSubmit={handleChatFormSubmit}
+ chatId={chatId}
+ autoFocus={true}
+ editingMessage={editingMessage}
+ onCancelEdit={handleCancelEdit}
+ isDisabled={isDisabled}
+ isDownloadingModel={isDownloadingModel}
+ onFilesReceived={handleFilesReceived}
+ />
+
+
+ )}
+
+ ) : (
+ Loading...
+ );
+}
diff --git a/app/ui/app/src/components/ChatForm.tsx b/app/ui/app/src/components/ChatForm.tsx
new file mode 100644
index 000000000..b13ebd802
--- /dev/null
+++ b/app/ui/app/src/components/ChatForm.tsx
@@ -0,0 +1,984 @@
+import Logo from "@/components/Logo";
+import { ModelPicker } from "@/components/ModelPicker";
+import { WebSearchButton } from "@/components/WebSearchButton";
+import { ImageThumbnail } from "@/components/ImageThumbnail";
+import { isImageFile } from "@/utils/imageUtils";
+import {
+ useRef,
+ useState,
+ useEffect,
+ useLayoutEffect,
+ useCallback,
+} from "react";
+import {
+ useSendMessage,
+ useIsStreaming,
+ useCancelMessage,
+} from "@/hooks/useChats";
+import { useNavigate } from "@tanstack/react-router";
+import { useSelectedModel } from "@/hooks/useSelectedModel";
+import { useHasVisionCapability } from "@/hooks/useModelCapabilities";
+import { useUser } from "@/hooks/useUser";
+import { DisplayLogin } from "@/components/DisplayLogin";
+import { ErrorEvent, Message } from "@/gotypes";
+import { useSettings } from "@/hooks/useSettings";
+import { ThinkButton } from "./ThinkButton";
+import { ErrorMessage } from "./ErrorMessage";
+import { processFiles } from "@/utils/fileValidation";
+import type { ImageData } from "@/types/webview";
+import { PlusIcon } from "@heroicons/react/24/outline";
+
+export type ThinkingLevel = "low" | "medium" | "high";
+
+interface FileAttachment {
+ filename: string;
+ data: Uint8Array;
+ type?: string; // MIME type
+}
+
+interface MessageInput {
+ content: string;
+ attachments: Array<{
+ id: string;
+ filename: string;
+ data?: Uint8Array; // undefined for existing files from editing
+ }>;
+ fileErrors: Array<{ filename: string; error: string }>;
+}
+
+interface ChatFormProps {
+ hasMessages: boolean;
+ onSubmit?: (
+ message: string,
+ options: {
+ attachments?: FileAttachment[];
+ index?: number;
+ webSearch?: boolean;
+ fileTools?: boolean;
+ think?: boolean | string;
+ },
+ ) => void;
+ autoFocus?: boolean;
+ chatId?: string;
+ isDownloadingModel?: boolean;
+ isDisabled?: boolean;
+ // Editing props - when provided, ChatForm enters edit mode
+ editingMessage?: {
+ content: string;
+ index: number;
+ originalMessage: Message;
+ } | null;
+ onCancelEdit?: () => void;
+ onFilesReceived?: (
+ callback: (
+ files: Array<{ filename: string; data: Uint8Array; type?: string }>,
+ errors: Array<{ filename: string; error: string }>,
+ ) => void,
+ ) => void;
+}
+
+function ChatForm({
+ hasMessages,
+ onSubmit,
+ autoFocus = false,
+ chatId = "new",
+ isDownloadingModel = false,
+ isDisabled = false,
+ editingMessage,
+ onCancelEdit,
+ onFilesReceived,
+}: ChatFormProps) {
+ const [message, setMessage] = useState({
+ content: "",
+ attachments: [],
+ fileErrors: [],
+ });
+ const [isEditing, setIsEditing] = useState(false);
+ const compositionEndTimeoutRef = useRef(null);
+ const fileInputRef = useRef(null);
+ const textareaRef = useRef(null);
+ const thinkButtonRef = useRef(null);
+ const thinkingLevelButtonRef = useRef(null);
+ const webSearchButtonRef = useRef(null);
+ const modelPickerRef = useRef(null);
+ const submitButtonRef = useRef(null);
+
+ const { mutate: sendMessageMutation } = useSendMessage(chatId);
+ const navigate = useNavigate();
+ const isStreaming = useIsStreaming(chatId);
+ const cancelMessage = useCancelMessage();
+ const isDownloading = isDownloadingModel;
+ const { selectedModel } = useSelectedModel();
+ const hasVisionCapability = useHasVisionCapability(selectedModel?.model);
+ const { isAuthenticated, isLoading: isLoadingUser } = useUser();
+ const [loginPromptFeature, setLoginPromptFeature] = useState<
+ "webSearch" | "turbo" | null
+ >(null);
+ const [fileUploadError, setFileUploadError] = useState(
+ null,
+ );
+
+ const handleThinkingLevelDropdownToggle = (isOpen: boolean) => {
+ if (
+ isOpen &&
+ modelPickerRef.current &&
+ (modelPickerRef.current as any).closeDropdown
+ ) {
+ (modelPickerRef.current as any).closeDropdown();
+ }
+ };
+
+ const handleModelPickerDropdownToggle = (isOpen: boolean) => {
+ if (
+ isOpen &&
+ thinkingLevelButtonRef.current &&
+ (thinkingLevelButtonRef.current as any).closeDropdown
+ ) {
+ (thinkingLevelButtonRef.current as any).closeDropdown();
+ }
+ };
+
+ const {
+ settings: {
+ webSearchEnabled,
+ airplaneMode,
+ thinkEnabled,
+ thinkLevel: settingsThinkLevel,
+ },
+ setSettings,
+ } = useSettings();
+
+ // current supported models for web search
+ const modelLower = selectedModel?.model.toLowerCase() || "";
+ const supportsWebSearch =
+ modelLower.startsWith("gpt-oss") ||
+ modelLower.startsWith("qwen3") ||
+ modelLower.startsWith("deepseek-v3");
+ // Use per-chat thinking level instead of global
+ const thinkLevel: ThinkingLevel =
+ settingsThinkLevel === "none" || !settingsThinkLevel
+ ? "medium"
+ : (settingsThinkLevel as ThinkingLevel);
+ const setThinkingLevel = (newLevel: ThinkingLevel) => {
+ setSettings({ ThinkLevel: newLevel });
+ };
+
+ const modelSupportsThinkingLevels =
+ selectedModel?.model.toLowerCase().startsWith("gpt-oss") || false;
+ const supportsThinkToggling =
+ selectedModel?.model.toLowerCase().startsWith("deepseek-v3.1") || false;
+
+ useEffect(() => {
+ if (supportsThinkToggling && thinkEnabled && webSearchEnabled) {
+ setSettings({ WebSearchEnabled: false });
+ }
+ }, [
+ selectedModel?.model,
+ supportsThinkToggling,
+ thinkEnabled,
+ webSearchEnabled,
+ setSettings,
+ ]);
+
+ const removeFile = (index: number) => {
+ setMessage((prev) => ({
+ ...prev,
+ attachments: prev.attachments.filter((_, i) => i !== index),
+ }));
+ };
+
+ const removeFileError = (index: number) => {
+ setMessage((prev) => ({
+ ...prev,
+ fileErrors: prev.fileErrors.filter((_, i) => i !== index),
+ }));
+ };
+
+ // Create stable callback for file handling
+ const handleFilesReceived = useCallback(
+ (
+ files: Array<{ filename: string; data: Uint8Array; type?: string }>,
+ errors: Array<{ filename: string; error: string }> = [],
+ ) => {
+ if (files.length > 0) {
+ setFileUploadError(null);
+
+ const newAttachments = files.map((file) => ({
+ id: crypto.randomUUID(),
+ filename: file.filename,
+ data: file.data,
+ }));
+
+ setMessage((prev) => ({
+ ...prev,
+ attachments: [...prev.attachments, ...newAttachments],
+ }));
+ }
+
+ // Add validation errors to form state
+ if (errors.length > 0) {
+ setMessage((prev) => ({
+ ...prev,
+ fileErrors: [...prev.fileErrors, ...errors],
+ }));
+ }
+ },
+ [],
+ );
+
+ useEffect(() => {
+ if (onFilesReceived) {
+ onFilesReceived(handleFilesReceived);
+ }
+ }, [onFilesReceived, handleFilesReceived]);
+
+ // Determine if login banner should be shown
+ const shouldShowLoginBanner =
+ !isLoadingUser &&
+ !isAuthenticated &&
+ ((webSearchEnabled && supportsWebSearch) ||
+ (selectedModel?.isCloud() && !airplaneMode));
+
+ // Determine which feature to highlight in the banner
+ const getActiveFeatureForBanner = () => {
+ if (!isAuthenticated) {
+ if (loginPromptFeature) return loginPromptFeature;
+ if (webSearchEnabled && selectedModel?.isCloud() && !airplaneMode)
+ return "webSearch";
+ if (webSearchEnabled) return "webSearch";
+ if (selectedModel?.isCloud() && !airplaneMode) return "turbo";
+ }
+ return null;
+ };
+
+ const activeFeatureForBanner = getActiveFeatureForBanner();
+
+ const resetChatForm = () => {
+ setMessage({
+ content: "",
+ attachments: [],
+ fileErrors: [],
+ });
+
+ if (textareaRef.current) {
+ textareaRef.current.style.height = "auto";
+ }
+ };
+
+ // Clear loginPromptFeature when user becomes authenticated or no features are enabled
+ useEffect(() => {
+ if (
+ isAuthenticated ||
+ (!webSearchEnabled && !!selectedModel?.isCloud() && !airplaneMode)
+ ) {
+ setLoginPromptFeature(null);
+ }
+ }, [isAuthenticated, webSearchEnabled, selectedModel, airplaneMode]);
+
+ // When entering edit mode, populate the composition with existing data
+ useEffect(() => {
+ if (!editingMessage) {
+ // Clear composition and reset textarea height when not editing
+ resetChatForm();
+ return;
+ }
+
+ const existingAttachments =
+ editingMessage.originalMessage?.attachments || [];
+ setMessage({
+ content: editingMessage.content,
+ attachments: existingAttachments.map((att) => ({
+ id: crypto.randomUUID(),
+ filename: att.filename,
+ // No data for existing files - backend will handle them
+ })),
+ fileErrors: [],
+ });
+ }, [editingMessage]);
+
+ // Focus and setup textarea when editing
+ useLayoutEffect(() => {
+ if (editingMessage && textareaRef.current) {
+ textareaRef.current.focus();
+ textareaRef.current.style.transition =
+ "height 0.2s ease-out, opacity 0.3s ease-in";
+ textareaRef.current.style.height = "auto";
+ textareaRef.current.style.height =
+ Math.min(textareaRef.current.scrollHeight, 24 * 8) + "px";
+ }
+ }, [editingMessage]);
+
+ // Clear composition and reset textarea height when chatId changes
+ useEffect(() => {
+ resetChatForm();
+ }, [chatId]);
+
+ // Auto-focus textarea when autoFocus is true or when streaming completes (but not when editing)
+ useEffect(() => {
+ if ((autoFocus || !isStreaming) && textareaRef.current && !editingMessage) {
+ const timer = setTimeout(
+ () => {
+ textareaRef.current?.focus();
+ },
+ autoFocus ? 0 : 100,
+ );
+ return () => clearTimeout(timer);
+ }
+ }, [autoFocus, isStreaming, editingMessage]);
+
+ const focusChatFormInput = () => {
+ // Focus textarea after model selection or navigation
+ if (textareaRef.current) {
+ setTimeout(() => {
+ textareaRef.current?.focus();
+ }, 100);
+ }
+ };
+
+ // Navigation helper function
+ const navigateToNextElement = useCallback(
+ (current: HTMLElement, direction: "next" | "prev") => {
+ const elements = [
+ textareaRef,
+ modelSupportsThinkingLevels ? thinkingLevelButtonRef : thinkButtonRef,
+ webSearchButtonRef,
+ modelPickerRef,
+ submitButtonRef,
+ ]
+ .map((ref) => ref.current)
+ .filter(Boolean) as HTMLElement[];
+ const index = elements.indexOf(current);
+ if (index === -1) return;
+ const nextIndex =
+ direction === "next"
+ ? (index + 1) % elements.length
+ : (index - 1 + elements.length) % elements.length;
+ elements[nextIndex].focus();
+ },
+ [],
+ );
+
+ // Focus textarea when navigating to a chat (when chatId changes)
+ useEffect(() => {
+ if (chatId !== "new") {
+ focusChatFormInput();
+ }
+ }, [chatId]);
+
+ // Global keyboard and paste event handlers
+ useEffect(() => {
+ const focusTextareaIfAppropriate = (target: HTMLElement) => {
+ if (
+ !textareaRef.current ||
+ textareaRef.current === document.activeElement
+ ) {
+ return;
+ }
+
+ const isEditableTarget =
+ target.tagName === "INPUT" ||
+ target.tagName === "TEXTAREA" ||
+ target.contentEditable === "true" ||
+ target.closest("input") ||
+ target.closest("textarea") ||
+ target.closest("[contenteditable='true']");
+
+ if (!isEditableTarget) {
+ textareaRef.current.focus();
+ }
+ };
+
+ const handleKeyDown = (e: KeyboardEvent) => {
+ // Handle escape key for canceling
+ if (e.key === "Escape") {
+ e.preventDefault();
+ if (editingMessage && onCancelEdit) {
+ handleCancelEdit();
+ } else if (isStreaming) {
+ handleCancel();
+ }
+ return;
+ }
+
+ // Handle Tab navigation between controls
+ if (e.key === "Tab" && e.target !== textareaRef.current) {
+ const target = e.target as HTMLElement;
+ const focusableElements = [
+ modelSupportsThinkingLevels
+ ? thinkingLevelButtonRef.current
+ : thinkButtonRef.current,
+ webSearchButtonRef.current,
+ modelPickerRef.current,
+ submitButtonRef.current,
+ ].filter(Boolean) as HTMLElement[];
+
+ if (focusableElements.includes(target)) {
+ e.preventDefault();
+ if (e.shiftKey) {
+ navigateToNextElement(target, "prev");
+ } else {
+ navigateToNextElement(target, "next");
+ }
+ return;
+ }
+ }
+
+ // Handle paste shortcuts
+ const isPasteShortcut = (e.ctrlKey || e.metaKey) && e.key === "v";
+ if (isPasteShortcut) {
+ focusTextareaIfAppropriate(e.target as HTMLElement);
+ return;
+ }
+
+ // Handle auto-focus when typing printable characters
+ const target = e.target as HTMLElement;
+ const isInInputField =
+ target.tagName === "INPUT" ||
+ target.tagName === "TEXTAREA" ||
+ target.contentEditable === "true";
+
+ if (
+ !isInInputField &&
+ e.key.length === 1 &&
+ !e.ctrlKey &&
+ !e.metaKey &&
+ !e.altKey &&
+ textareaRef.current
+ ) {
+ textareaRef.current.focus();
+ }
+ };
+
+ const handlePaste = (e: ClipboardEvent) => {
+ focusTextareaIfAppropriate(e.target as HTMLElement);
+ };
+
+ window.addEventListener("keydown", handleKeyDown);
+ document.addEventListener("paste", handlePaste);
+
+ return () => {
+ window.removeEventListener("keydown", handleKeyDown);
+ document.removeEventListener("paste", handlePaste);
+ };
+ }, [isStreaming, editingMessage, onCancelEdit, navigateToNextElement]);
+
+ const handleSubmit = async () => {
+ if (!message.content.trim() || isStreaming || isDownloading) return;
+
+ // Check if cloud mode is enabled but user is not authenticated
+ if (shouldShowLoginBanner) {
+ return;
+ }
+
+ // Prepare attachments for submission
+ const attachmentsToSend: FileAttachment[] = message.attachments.map(
+ (att) => ({
+ filename: att.filename,
+ data: att.data || new Uint8Array(0), // Empty data for existing files
+ }),
+ );
+
+ const useWebSearch = supportsWebSearch && webSearchEnabled && !airplaneMode;
+ const useThink = modelSupportsThinkingLevels
+ ? thinkLevel
+ : supportsThinkToggling
+ ? thinkEnabled
+ : undefined;
+
+ if (onSubmit) {
+ onSubmit(message.content, {
+ attachments: attachmentsToSend,
+ index: undefined,
+ webSearch: useWebSearch,
+ think: useThink,
+ });
+ } else {
+ sendMessageMutation({
+ message: message.content,
+ attachments: attachmentsToSend,
+ webSearch: useWebSearch,
+ think: useThink,
+ onChatEvent: (event) => {
+ if (event.eventName === "chat_created" && event.chatId) {
+ navigate({
+ to: "/c/$chatId",
+ params: {
+ chatId: event.chatId,
+ },
+ });
+ }
+ },
+ });
+ }
+
+ // Clear composition after successful submission
+ setMessage({
+ content: "",
+ attachments: [],
+ fileErrors: [],
+ });
+
+ // Reset textarea height and refocus after submit
+ setTimeout(() => {
+ if (textareaRef.current) {
+ textareaRef.current.style.height = "auto";
+ textareaRef.current.focus();
+ }
+ }, 100);
+ };
+
+ const handleKeyDown = (e: React.KeyboardEvent) => {
+ // Handle Enter to submit
+ if (e.key === "Enter" && !e.shiftKey && !isEditing) {
+ e.preventDefault();
+ if (!isStreaming && !isDownloading) {
+ handleSubmit();
+ }
+ return;
+ }
+
+ // Handle Tab navigation
+ if (e.key === "Tab") {
+ e.preventDefault();
+ const focusableElements = [
+ modelSupportsThinkingLevels
+ ? thinkingLevelButtonRef.current
+ : thinkButtonRef.current,
+ webSearchButtonRef.current,
+ modelPickerRef.current,
+ submitButtonRef.current,
+ ].filter(Boolean);
+
+ if (e.shiftKey) {
+ // Shift+Tab: focus last focusable element
+ const lastElement = focusableElements[focusableElements.length - 1];
+ lastElement?.focus();
+ } else {
+ // Tab: focus first focusable element
+ const firstElement = focusableElements[0];
+ firstElement?.focus();
+ }
+ return;
+ }
+ };
+
+ const handleCompositionStart = () => {
+ if (compositionEndTimeoutRef.current) {
+ window.clearTimeout(compositionEndTimeoutRef.current);
+ }
+ setIsEditing(true);
+ };
+
+ const handleCompositionEnd = () => {
+ // Add a small delay to handle the timing issue where Enter keydown
+ // fires immediately after composition end
+ compositionEndTimeoutRef.current = window.setTimeout(() => {
+ setIsEditing(false);
+ }, 10);
+ };
+
+ const handleCancel = () => {
+ cancelMessage(chatId);
+ };
+
+ const handleCancelEdit = () => {
+ // Clear composition and call parent callback
+ setMessage({
+ content: "",
+ attachments: [],
+ fileErrors: [],
+ });
+
+ onCancelEdit?.();
+
+ // Focus the textarea after canceling edit mode
+ setTimeout(() => {
+ textareaRef.current?.focus();
+ }, 0);
+ };
+
+ const handleFileInputChange = (e: React.ChangeEvent) => {
+ const files = e.target.files;
+ if (!files) return;
+
+ Array.from(files).forEach((file) => {
+ const reader = new FileReader();
+ reader.readAsDataURL(file);
+ });
+
+ // Reset file input
+ if (e.target) {
+ e.target.value = "";
+ }
+ };
+
+ // Auto-resize textarea function
+ const handleTextareaChange = (e: React.ChangeEvent) => {
+ setMessage((prev) => ({ ...prev, content: e.target.value }));
+
+ // Reset height to auto to get the correct scrollHeight, then cap at 8 lines
+ e.target.style.height = "auto";
+ e.target.style.height = Math.min(e.target.scrollHeight, 24 * 8) + "px";
+ };
+
+ const handleFilesUpload = async () => {
+ try {
+ setFileUploadError(null);
+
+ const results = await window.webview?.selectMultipleFiles();
+ if (results && results.length > 0) {
+ // Convert native dialog results to File objects
+ const files = results
+ .map((result: ImageData) => {
+ if (result.dataURL) {
+ // Convert dataURL back to File object
+ const base64Data = result.dataURL.split(",")[1];
+ const mimeType = result.dataURL.split(";")[0].split(":")[1];
+ const binaryString = atob(base64Data);
+ const bytes = new Uint8Array(binaryString.length);
+ for (let i = 0; i < binaryString.length; i++) {
+ bytes[i] = binaryString.charCodeAt(i);
+ }
+
+ const blob = new Blob([bytes], { type: mimeType });
+ const file = new File([blob], result.filename, {
+ type: mimeType,
+ });
+ return file;
+ }
+ return null;
+ })
+ .filter(Boolean) as File[];
+
+ if (files.length > 0) {
+ const { validFiles, errors } = await processFiles(files, {
+ selectedModel,
+ hasVisionCapability,
+ });
+
+ // Send processed files and errors to the same handler as FileUpload
+ if (validFiles.length > 0 || errors.length > 0) {
+ handleFilesReceived(validFiles, errors);
+ }
+ }
+ }
+ } catch (error) {
+ console.error("Error selecting multiple files:", error);
+
+ const errorEvent = new ErrorEvent({
+ eventName: "error" as const,
+ error:
+ error instanceof Error ? error.message : "Failed to select files",
+ code: "file_selection_error",
+ details:
+ "An error occurred while trying to open the file selection dialog. Please try again.",
+ });
+
+ setFileUploadError(errorEvent);
+ }
+ };
+ return (
+
+ {chatId === "new" &&
}
+
+ {shouldShowLoginBanner && (
+
{
+ // Disable the active features when dismissing
+ if (webSearchEnabled) setSettings({ WebSearchEnabled: false });
+ setLoginPromptFeature(null);
+ }}
+ />
+ )}
+
+ {/* File upload error message */}
+ {fileUploadError && }
+
+ {isDisabled && (
+ // overlay to block interaction
+
+ )}
+ {editingMessage && (
+
+
+ Press ESC to cancel editing
+
+
+ )}
+ {(message.attachments.length > 0 || message.fileErrors.length > 0) && (
+
+ {message.attachments.map((attachment, index) => (
+
+ {isImageFile(attachment.filename) ? (
+
+ ) : (
+
+
+
+ )}
+
+ {attachment.filename}
+
+
removeFile(index)}
+ className="opacity-0 group-hover:opacity-100 transition-opacity text-neutral-400 hover:text-neutral-600 dark:text-neutral-500 dark:hover:text-neutral-300 -mr-1 cursor-pointer"
+ aria-label={`Remove ${attachment.filename}`}
+ >
+
+
+
+
+
+ ))}
+ {message.fileErrors.map((fileError, index) => (
+
+
+
+
+
+ {fileError.filename}
+
+
+ • {fileError.error}
+
+
removeFileError(index)}
+ className="opacity-0 group-hover:opacity-100 transition-opacity text-red-400 hover:text-red-600 dark:text-red-500 dark:hover:text-red-300 -mr-1 ml-auto"
+ aria-label={`Remove ${fileError.filename}`}
+ >
+
+
+
+
+
+ ))}
+
+ )}
+
+
+
+
+
+ {/* Controls */}
+
+ {/* Tool buttons - animate from underneath model picker */}
+ {!isDisabled && (
+
+
+ {/* File Upload Buttons */}
+
+
+
+ {/* Thinking Level Button */}
+ {modelSupportsThinkingLevels && (
+ <>
+
+ >
+ )}
+ {/* Think Button turn on and off */}
+ {supportsThinkToggling && !modelSupportsThinkingLevels && (
+ <>
+
{
+ // DeepSeek-v3 specific - thinking and web search are mutually exclusive
+ if (supportsThinkToggling) {
+ const enable = !thinkEnabled;
+ setSettings({
+ ThinkEnabled: enable,
+ ...(enable ? { WebSearchEnabled: false } : {}),
+ });
+ return;
+ }
+ setSettings({ ThinkEnabled: !thinkEnabled });
+ }}
+ />
+ >
+ )}
+ {
+ if (!webSearchEnabled && !isAuthenticated) {
+ setLoginPromptFeature("webSearch");
+ }
+ const enable = !webSearchEnabled;
+ if (supportsThinkToggling && enable) {
+ setSettings({
+ WebSearchEnabled: true,
+ ThinkEnabled: false,
+ });
+ return;
+ }
+ setSettings({ WebSearchEnabled: enable });
+ }}
+ />
+
+
+ )}
+
+ {/* Model picker and submit button */}
+
+
+
0)
+ }
+ className={`flex items-center justify-center h-9 w-9 rounded-full disabled:cursor-default cursor-pointer bg-black text-white dark:bg-white dark:text-black disabled:opacity-10 focus:outline-none focus:ring-2 focus:ring-blue-500`}
+ >
+ {isStreaming || isDownloading ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+
+
+
+
+ {/* Hidden file input for fallback */}
+
+
+ );
+}
+
+export default ChatForm;
diff --git a/app/ui/app/src/components/ChatSidebar.tsx b/app/ui/app/src/components/ChatSidebar.tsx
new file mode 100644
index 000000000..c3347bcf6
--- /dev/null
+++ b/app/ui/app/src/components/ChatSidebar.tsx
@@ -0,0 +1,380 @@
+import { useChats } from "@/hooks/useChats";
+import { useRenameChat } from "@/hooks/useRenameChat";
+import { useDeleteChat } from "@/hooks/useDeleteChat";
+import { useQueryClient } from "@tanstack/react-query";
+import { getChat } from "@/api";
+import { Link } from "@/components/ui/link";
+import { useState, useRef, useEffect, useCallback, useMemo } from "react";
+import { ChatsResponse } from "@/gotypes";
+import { CogIcon } from "@heroicons/react/24/outline";
+
+// there's a hidden debug feature to copy a chat's data to the clipboard by
+// holding shift and clicking this many times within this many seconds
+const DEBUG_SHIFT_CLICKS_REQUIRED = 5;
+const DEBUG_SHIFT_CLICK_WINDOW_MS = 7000; // 7 seconds
+
+interface ChatSidebarProps {
+ currentChatId?: string;
+}
+
+export function ChatSidebar({ currentChatId }: ChatSidebarProps) {
+ const { data, isLoading, error } = useChats();
+ const queryClient = useQueryClient();
+ const renameMutation = useRenameChat();
+ const deleteMutation = useDeleteChat();
+ const [editingChatId, setEditingChatId] = useState(null);
+ const [editValue, setEditValue] = useState("");
+ const inputRef = useRef(null);
+ const [shiftClicks, setShiftClicks] = useState>({});
+ const [copiedChatId, setCopiedChatId] = useState(null);
+
+ const handleMouseEnter = useCallback(
+ (chatId: string) => {
+ queryClient.prefetchQuery({
+ queryKey: ["chat", chatId],
+ queryFn: () => getChat(chatId),
+ staleTime: 1500,
+ });
+ },
+ [queryClient],
+ );
+
+ const startEditing = useCallback((chatId: string, currentTitle: string) => {
+ setEditingChatId(chatId);
+ setEditValue(currentTitle);
+ }, []);
+
+ const saveRename = useCallback(async () => {
+ if (!editingChatId || !editValue.trim()) {
+ setEditingChatId(null);
+ return;
+ }
+
+ const newTitle = editValue.trim();
+ const chatId = editingChatId;
+
+ // Exit edit mode immediately to prevent flash
+ setEditingChatId(null);
+ setEditValue("");
+
+ // Optimistically update the cache
+ queryClient.setQueryData(
+ ["chats"],
+ (oldData: ChatsResponse | undefined) => {
+ if (!oldData?.chatInfos) return oldData;
+ return {
+ ...oldData,
+ chatInfos: oldData.chatInfos.map((chat) =>
+ chat.id === chatId ? { ...chat, title: newTitle } : chat,
+ ),
+ };
+ },
+ );
+
+ try {
+ await renameMutation.mutateAsync({
+ chatId: chatId,
+ title: newTitle,
+ });
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ } catch (error: unknown) {
+ // Revert optimistic update on error
+ queryClient.invalidateQueries({ queryKey: ["chats"] });
+ }
+ }, [editingChatId, editValue, renameMutation, queryClient]);
+
+ useEffect(() => {
+ if (editingChatId && inputRef.current) {
+ inputRef.current.focus();
+ inputRef.current.select();
+ }
+ }, [editingChatId]);
+
+ useEffect(() => {
+ const handleClickOutside = (event: MouseEvent) => {
+ if (
+ inputRef.current &&
+ !inputRef.current.contains(event.target as Node)
+ ) {
+ saveRename();
+ }
+ };
+
+ if (editingChatId) {
+ document.addEventListener("mousedown", handleClickOutside);
+ return () => {
+ document.removeEventListener("mousedown", handleClickOutside);
+ };
+ }
+ }, [editingChatId, editValue, saveRename]);
+
+ const sortedChats = useMemo(() => {
+ if (!data?.chatInfos) return [];
+ return [...data.chatInfos].sort((a, b) => {
+ const comparison = b.updatedAt.getTime() - a.updatedAt.getTime();
+ if (comparison === 0) {
+ return b.id.localeCompare(a.id);
+ }
+ return comparison;
+ });
+ }, [data?.chatInfos]);
+
+ const isToday = (date: Date) => {
+ const today = new Date();
+ return (
+ date.getDate() === today.getDate() &&
+ date.getMonth() === today.getMonth() &&
+ date.getFullYear() === today.getFullYear()
+ );
+ };
+
+ const isThisWeek = (date: Date) => {
+ const now = new Date();
+ const weekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
+ return date > weekAgo && !isToday(date);
+ };
+
+ // Group chats by time period
+ const groupedChats = useMemo(() => {
+ const groups = {
+ today: [] as typeof sortedChats,
+ thisWeek: [] as typeof sortedChats,
+ older: [] as typeof sortedChats,
+ };
+
+ sortedChats.forEach((chat) => {
+ if (isToday(chat.updatedAt)) {
+ groups.today.push(chat);
+ } else if (isThisWeek(chat.updatedAt)) {
+ groups.thisWeek.push(chat);
+ } else {
+ groups.older.push(chat);
+ }
+ });
+
+ return groups;
+ }, [sortedChats]);
+
+ const chatGroups = useMemo(() => {
+ return [
+ { name: "Today", chats: groupedChats.today },
+ { name: "This week", chats: groupedChats.thisWeek },
+ { name: "Older", chats: groupedChats.older },
+ ].filter((group) => group.chats.length > 0);
+ }, [groupedChats]);
+
+ const handleDeleteChat = useCallback(
+ async (chatId: string) => {
+ const confirmed = window.confirm(
+ `Are you sure you want to remove this chat?`,
+ );
+
+ if (!confirmed) return;
+
+ try {
+ await deleteMutation.mutateAsync(chatId);
+ } catch (error) {
+ console.error("Failed to delete chat:", error);
+ }
+ },
+ [deleteMutation],
+ );
+
+ // implementation of the hidden debug feature to copy a chat's data to the clipboard
+ const handleShiftClick = useCallback(
+ async (e: React.MouseEvent, chatId: string) => {
+ if (!e.shiftKey) return false;
+
+ e.preventDefault();
+ const now = Date.now();
+
+ const clicks = shiftClicks[chatId] || [];
+ const recentClicks = clicks.filter(
+ (timestamp) => now - timestamp < DEBUG_SHIFT_CLICK_WINDOW_MS,
+ );
+ recentClicks.push(now);
+
+ setShiftClicks((prev) => ({
+ ...prev,
+ [chatId]: recentClicks,
+ }));
+
+ if (recentClicks.length >= DEBUG_SHIFT_CLICKS_REQUIRED) {
+ try {
+ const chatData = await getChat(chatId);
+ const jsonString = JSON.stringify(chatData, null, 2);
+ await navigator.clipboard.writeText(jsonString);
+
+ // visual feedback
+ setCopiedChatId(chatId);
+ setTimeout(() => setCopiedChatId(null), 2000);
+
+ setShiftClicks((prev) => ({
+ ...prev,
+ [chatId]: [],
+ }));
+ } catch (error) {
+ console.error("Failed to copy chat data:", error);
+ }
+ }
+
+ return true;
+ },
+ [shiftClicks],
+ );
+
+ const handleContextMenu = useCallback(
+ async (_: React.MouseEvent, chatId: string, chatTitle: string) => {
+ const selectedAction = await window.menu([
+ { label: "Rename", enabled: true },
+ { label: "Delete", enabled: true },
+ ]);
+
+ if (selectedAction === "Rename") {
+ startEditing(chatId, chatTitle);
+ } else if (selectedAction === "Delete") {
+ handleDeleteChat(chatId);
+ }
+ },
+ [startEditing, handleDeleteChat],
+ );
+
+ if (isLoading) {
+ return (
+
+
+
+ );
+ }
+
+ if (error) {
+ return (
+
+
+
+ );
+ }
+
+ const isWindows = navigator.platform.toLowerCase().includes("win");
+
+ return (
+
+
+
+
+
+
+
+ New Chat
+
+ {isWindows && (
+
+
+ Settings
+
+ )}
+
+
+
+ {chatGroups.map((group) => (
+
+
+ {group.name}
+
+ {group.chats.map((chat) => (
+
handleMouseEnter(chat.id)}
+ onContextMenu={(e) =>
+ handleContextMenu(
+ e,
+ chat.id,
+ chat.title ||
+ chat.userExcerpt ||
+ chat.createdAt.toLocaleString(),
+ )
+ }
+ >
+ {editingChatId === chat.id ? (
+
+
+ setEditValue(e.target.value)}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ e.preventDefault();
+ saveRename();
+ } else if (e.key === "Escape") {
+ setEditingChatId(null);
+ setEditValue("");
+ }
+ }}
+ className="bg-transparent border-0 focus:outline-none w-full dark:text-white"
+ style={{
+ font: "inherit",
+ lineHeight: "inherit",
+ padding: 0,
+ margin: 0,
+ }}
+ />
+
+
+ ) : (
+
{
+ handleShiftClick(e, chat.id);
+ }}
+ draggable={false}
+ >
+
+ {chat.title ||
+ chat.userExcerpt ||
+ chat.createdAt.toLocaleString()}
+
+ {copiedChatId === chat.id && (
+
+ Copied!
+
+ )}
+
+ )}
+
+ ))}
+
+ ))}
+
+
+
+ );
+}
diff --git a/app/ui/app/src/components/CopyButton.tsx b/app/ui/app/src/components/CopyButton.tsx
new file mode 100644
index 000000000..5fcce7c75
--- /dev/null
+++ b/app/ui/app/src/components/CopyButton.tsx
@@ -0,0 +1,95 @@
+import { CheckIcon } from "@heroicons/react/20/solid";
+import { Square2StackIcon } from "@heroicons/react/24/outline";
+import React, { useState } from "react";
+
+interface CopyButtonProps {
+ content: string;
+ copyRef?: React.RefObject;
+ removeClasses?: string[];
+ size?: "sm" | "md";
+ showLabels?: boolean;
+ className?: string;
+ title?: string;
+}
+
+const CopyButton: React.FC = ({
+ content,
+ copyRef,
+ removeClasses = [],
+ size = "sm",
+ showLabels = false,
+ className = "",
+ title = "",
+}) => {
+ const [isCopied, setIsCopied] = useState(false);
+
+ const handleCopy = async () => {
+ try {
+ if (copyRef?.current) {
+ // For copy response message
+ const cloned = copyRef.current.cloneNode(true) as HTMLElement;
+
+ removeClasses.forEach((className) => {
+ cloned
+ .querySelectorAll(`.${className}`)
+ .forEach((element) => element.remove());
+ });
+
+ await navigator.clipboard.write([
+ new ClipboardItem({
+ "text/html": new Blob([cloned.innerHTML], {
+ type: "text/html",
+ }),
+ "text/plain": new Blob([content], { type: "text/plain" }),
+ }),
+ ]);
+ } else {
+ await navigator.clipboard.writeText(content);
+ }
+
+ setIsCopied(true);
+ setTimeout(() => setIsCopied(false), 2000);
+ } catch (error) {
+ console.error("Clipboard API failed, falling back to plain text", error);
+ try {
+ await navigator.clipboard.writeText(content);
+ setIsCopied(true);
+ setTimeout(() => setIsCopied(false), 2000);
+ } catch (fallbackError) {
+ console.error("Fallback copy also failed:", fallbackError);
+ }
+ }
+ };
+
+ const iconSize = size === "sm" ? "h-3 w-3" : "h-7 w-7";
+ const baseClasses =
+ size === "sm"
+ ? `text-xs px-4 py-2 z-10 rounded-lg hover:cursor-pointer ${className}`
+ : `${iconSize} px-1 py-0.5 text-xs cursor-pointer rounded-lg hover:bg-neutral-100 dark:hover:bg-neutral-800 flex items-center justify-center ${className}`;
+
+ const icon = isCopied ? (
+
+ ) : (
+
+ );
+
+ return (
+
+ {showLabels ? (
+
+ {icon}
+ {isCopied ? "Copied" : "Copy"}
+
+ ) : (
+ icon
+ )}
+
+ );
+};
+
+export default CopyButton;
diff --git a/app/ui/app/src/components/DisplayLogin.tsx b/app/ui/app/src/components/DisplayLogin.tsx
new file mode 100644
index 000000000..3c10c697e
--- /dev/null
+++ b/app/ui/app/src/components/DisplayLogin.tsx
@@ -0,0 +1,74 @@
+import type { ErrorEvent } from "@/gotypes";
+import { Display, type DisplayAction } from "@/components/ui/display";
+import { useUser } from "@/hooks/useUser";
+import { useEffect, useState } from "react";
+
+interface DisplayLoginProps {
+ error: ErrorEvent | null;
+ className?: string;
+ onDismiss?: () => void;
+ message?: string;
+}
+
+export const DisplayLogin = ({
+ error,
+ className,
+ onDismiss,
+ message,
+}: DisplayLoginProps) => {
+ const { fetchConnectUrl, refetchUser, isAuthenticated } = useUser();
+ const [isAwaitingAuth, setIsAwaitingAuth] = useState(false);
+
+ useEffect(() => {
+ const handleFocus = () => {
+ if (isAwaitingAuth) {
+ setIsAwaitingAuth(false);
+ refetchUser();
+ }
+ };
+
+ window.addEventListener("focus", handleFocus);
+
+ return () => {
+ window.removeEventListener("focus", handleFocus);
+ };
+ }, [isAwaitingAuth, refetchUser]);
+
+ useEffect(() => {
+ if (isAuthenticated && isAwaitingAuth) {
+ setIsAwaitingAuth(false);
+ if (onDismiss) {
+ onDismiss();
+ }
+ }
+ }, [isAuthenticated, isAwaitingAuth, onDismiss]);
+
+ if (!error || error.code !== "cloud_unauthorized" || isAuthenticated)
+ return null;
+
+ const handleSignIn = async () => {
+ try {
+ const { data: connectUrl } = await fetchConnectUrl();
+ if (connectUrl) {
+ window.open(connectUrl, "_blank");
+ setIsAwaitingAuth(true);
+ }
+ } catch (error) {
+ console.error("Error getting connect URL:", error);
+ }
+ };
+
+ const action: DisplayAction = {
+ label: "Sign In",
+ onClick: handleSignIn,
+ };
+
+ return (
+
+ );
+};
diff --git a/app/ui/app/src/components/DisplayStale.tsx b/app/ui/app/src/components/DisplayStale.tsx
new file mode 100644
index 000000000..df109cf5b
--- /dev/null
+++ b/app/ui/app/src/components/DisplayStale.tsx
@@ -0,0 +1,56 @@
+import { Model } from "@/gotypes";
+import { useSendMessage, useIsStreaming } from "@/hooks/useChats";
+import { Display, type DisplayAction } from "@/components/ui/display";
+
+interface DisplayStaleProps {
+ model: Model;
+ onDismiss: () => void;
+ className?: string;
+ chatId: string;
+ onScrollToBottom?: () => void;
+}
+
+export const DisplayStale = ({
+ model,
+ onDismiss,
+ className,
+ chatId,
+ onScrollToBottom,
+}: DisplayStaleProps) => {
+ const sendMessage = useSendMessage(chatId);
+ const isStreaming = useIsStreaming(chatId);
+
+ const handleUpdateModel = async () => {
+ if (onScrollToBottom) {
+ onScrollToBottom();
+ }
+
+ try {
+ sendMessage.mutate({
+ message: "",
+ forceUpdate: true,
+ });
+ } catch (error) {
+ console.error("Failed to update model:", error);
+ }
+
+ onDismiss();
+ };
+
+ const action: DisplayAction = {
+ label: "Update",
+ onClick: handleUpdateModel,
+ disabled: isStreaming,
+ gradientColors: "from-zinc-500/20 via-slate-500/20 to-gray-500/20",
+ };
+
+ return (
+
+ );
+};
diff --git a/app/ui/app/src/components/DisplayUpgrade.tsx b/app/ui/app/src/components/DisplayUpgrade.tsx
new file mode 100644
index 000000000..4f500f355
--- /dev/null
+++ b/app/ui/app/src/components/DisplayUpgrade.tsx
@@ -0,0 +1,44 @@
+import type { ErrorEvent } from "@/gotypes";
+import { Display, type DisplayAction } from "@/components/ui/display";
+
+interface DisplayUpgradeProps {
+ error: ErrorEvent | null;
+ onDismiss: () => void;
+ className?: string;
+ message?: string;
+ label?: string;
+ href?: string;
+}
+
+export const DisplayUpgrade = ({
+ error,
+ onDismiss,
+ className,
+ message,
+ label = "Upgrade",
+ href = "https://ollama.com/upgrade",
+}: DisplayUpgradeProps) => {
+ if (!error || error.code !== "usage_limit_upgrade") return null;
+
+ const isUsageLimit = error.code === "usage_limit_upgrade";
+
+ const action: DisplayAction | undefined = isUsageLimit
+ ? {
+ label,
+ href,
+ gradientColors: "from-cyan-500/20 via-purple-500/20 to-green-500/20",
+ }
+ : undefined;
+
+ const variant = isUsageLimit ? "neutral" : "red";
+
+ return (
+
+ );
+};
diff --git a/app/ui/app/src/components/Downloading.tsx b/app/ui/app/src/components/Downloading.tsx
new file mode 100644
index 000000000..93975da99
--- /dev/null
+++ b/app/ui/app/src/components/Downloading.tsx
@@ -0,0 +1,56 @@
+const K = 1024;
+const SIZES = ["B", "KB", "MB", "GB", "TB"];
+
+function formatBytes(bytes: number, unit?: string): string {
+ let i: number;
+ if (unit) {
+ i = SIZES.indexOf(unit);
+ } else {
+ i = bytes === 0 ? 0 : Math.floor(Math.log(bytes) / Math.log(K));
+ }
+
+ const decimals = SIZES[i] === "GB" || SIZES[i] === "TB" ? 1 : 0;
+ return `${(bytes / Math.pow(K, i)).toFixed(decimals)} ${SIZES[i]}`;
+}
+
+export default function Downloading({
+ completed,
+ total,
+}: {
+ completed: number;
+ total: number;
+}) {
+ const percentage = total > 0 ? (completed / total) * 100 : 0;
+ const unitIndex = total > 0 ? Math.floor(Math.log(total) / Math.log(K)) : 0;
+ const unit = SIZES[unitIndex];
+
+ return (
+
+
+
+
+
+
+
+
+
Downloading model
+
+
+ {`${formatBytes(completed, unit)} / ${formatBytes(total, unit)} (${Math.floor(percentage)}%)`}
+
+
+
+
+ );
+}
diff --git a/app/ui/app/src/components/ErrorMessage.tsx b/app/ui/app/src/components/ErrorMessage.tsx
new file mode 100644
index 000000000..4ebbeec73
--- /dev/null
+++ b/app/ui/app/src/components/ErrorMessage.tsx
@@ -0,0 +1,73 @@
+import type { ErrorEvent } from "@/gotypes";
+
+interface ErrorMessageProps {
+ error: ErrorEvent;
+}
+
+const renderWithLinks = (text: string) => {
+ const urlRegex =
+ /(https?:\/\/(?!127\.|localhost|0\.0\.0\.0|10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)[^\s]+)/g;
+
+ const urls: string[] = [];
+ let match;
+ while ((match = urlRegex.exec(text)) !== null) {
+ urls.push(match[0]);
+ }
+
+ urlRegex.lastIndex = 0;
+
+ // Split text by URLs
+ // for example if the text is "connection failed. Try visiting https://ollama.com or check https://ollama.com/doc for help"
+ // then the parsed parts will be ["connection failed. Try visiting ", "https://ollama.com", " or check ", "https://ollama.com/doc", " for help"]
+ const parts = text.split(urlRegex);
+
+ return parts.map((part, index) => {
+ if (urls.includes(part)) {
+ return (
+ {
+ e.stopPropagation();
+ }}
+ >
+ {part}
+
+ );
+ }
+ return part;
+ });
+};
+
+export const ErrorMessage = ({ error }: ErrorMessageProps) => {
+ return (
+
+
+ {/* Circled X icon */}
+
+
Error
+
+
+
+
+ {renderWithLinks(error.error)}
+
+
+
+ );
+};
diff --git a/app/ui/app/src/components/FileUpload.tsx b/app/ui/app/src/components/FileUpload.tsx
new file mode 100644
index 000000000..8baea914e
--- /dev/null
+++ b/app/ui/app/src/components/FileUpload.tsx
@@ -0,0 +1,251 @@
+import {
+ useState,
+ useCallback,
+ useRef,
+ useEffect,
+ type ReactNode,
+} from "react";
+import { DocumentPlusIcon } from "@heroicons/react/24/outline";
+import type { Model } from "@/gotypes";
+import { processFiles as processFilesUtil } from "@/utils/fileValidation";
+
+interface FileUploadProps {
+ children: ReactNode;
+ onFilesAdded: (
+ files: Array<{ filename: string; data: Uint8Array; type?: string }>,
+ errors: Array<{ filename: string; error: string }>,
+ ) => void;
+ selectedModel?: Model | null;
+ hasVisionCapability?: boolean;
+ validateFile?: (file: File) => { valid: boolean; error?: string };
+ maxFileSize?: number;
+ allowedExtensions?: string[];
+}
+
+export function FileUpload({
+ children,
+ onFilesAdded,
+ selectedModel,
+ hasVisionCapability = false,
+ validateFile,
+ maxFileSize = 10,
+ allowedExtensions,
+}: FileUploadProps) {
+ const [isDragging, setIsDragging] = useState(false);
+ // Counter to track drag enter/leave events across all child elements
+ // Prevents flickering when dragging over child elements within the component
+ const dragCounter = useRef(0);
+
+ // Helper function to check if dragging files
+ const hasFiles = useCallback((dataTransfer: DataTransfer) => {
+ return dataTransfer.types.includes("Files");
+ }, []);
+
+ // Helper function to read directory contents
+ const readDirectory = useCallback(
+ async (entry: FileSystemDirectoryEntry): Promise => {
+ const files: File[] = [];
+
+ const readEntries = async (
+ dirEntry: FileSystemDirectoryEntry,
+ ): Promise => {
+ const dirReader = dirEntry.createReader();
+
+ return new Promise((resolve, reject) => {
+ dirReader.readEntries(async (entries) => {
+ try {
+ for (const entry of entries) {
+ if (entry.isFile) {
+ const fileEntry = entry as FileSystemFileEntry;
+ const file = await new Promise(
+ (resolveFile, rejectFile) => {
+ fileEntry.file(resolveFile, rejectFile);
+ },
+ );
+ files.push(file);
+ } else if (entry.isDirectory) {
+ // Skip subdirectories for simplicity
+ }
+ }
+ resolve();
+ } catch (error) {
+ reject(error);
+ }
+ }, reject);
+ });
+ };
+
+ await readEntries(entry);
+ return files;
+ },
+ [],
+ );
+
+ // Main file processing function
+ const processFiles = useCallback(
+ async (dataTransfer: DataTransfer) => {
+ const allFiles: File[] = [];
+
+ // Extract files from DataTransfer
+ if (dataTransfer.items) {
+ for (const item of dataTransfer.items) {
+ if (item.kind === "file") {
+ const entry = item.webkitGetAsEntry?.();
+ if (entry?.isFile) {
+ const file = item.getAsFile();
+ if (file) allFiles.push(file);
+ } else if (entry?.isDirectory) {
+ const dirEntry = entry as FileSystemDirectoryEntry;
+ const dirFiles = await readDirectory(dirEntry);
+ allFiles.push(...dirFiles);
+ }
+ }
+ }
+ } else if (dataTransfer.files) {
+ allFiles.push(...Array.from(dataTransfer.files));
+ }
+
+ // Use shared validation utility
+ const { validFiles, errors } = await processFilesUtil(allFiles, {
+ maxFileSize,
+ allowedExtensions,
+ hasVisionCapability,
+ selectedModel,
+ customValidator: validateFile,
+ });
+
+ // Send processed files and errors back to parent
+ if (validFiles.length > 0 || errors.length > 0) {
+ onFilesAdded(validFiles, errors);
+ }
+ },
+ [
+ readDirectory,
+ selectedModel,
+ hasVisionCapability,
+ allowedExtensions,
+ maxFileSize,
+ validateFile,
+ onFilesAdded,
+ ],
+ );
+
+ // Drag event handlers
+ const handleDragEnter = useCallback(
+ (e: React.DragEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ dragCounter.current++;
+
+ if (hasFiles(e.dataTransfer)) {
+ setIsDragging(true);
+ }
+ },
+ [hasFiles],
+ );
+
+ // Paste event handler
+ const handlePaste = useCallback(
+ async (e: ClipboardEvent) => {
+ // Check if clipboard contains files
+ if (e.clipboardData && e.clipboardData.files.length > 0) {
+ // Check if there's text data in the clipboard
+ // Only process files if there's no text data
+ const hasTextData =
+ e.clipboardData.types.includes("text/plain") &&
+ e.clipboardData.getData("text/plain").trim().length > 0;
+
+ if (hasTextData) {
+ return;
+ }
+
+ e.preventDefault();
+
+ // Create a synthetic DataTransfer object for our processFiles function
+ const items = Array.from(e.clipboardData.items);
+ const syntheticDataTransfer = {
+ files: e.clipboardData.files,
+ items: {
+ ...items,
+ length: items.length,
+ add: () => null,
+ clear: () => {},
+ remove: () => null,
+ [Symbol.iterator]: () => items[Symbol.iterator](),
+ } as DataTransferItemList,
+ types: e.clipboardData.types,
+ getData: (format: string) => e.clipboardData!.getData(format),
+ } as DataTransfer;
+
+ await processFiles(syntheticDataTransfer);
+ }
+ },
+ [processFiles],
+ );
+
+ const handleDragOver = useCallback((e: React.DragEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ }, []);
+
+ const handleDragLeave = useCallback((e: React.DragEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ dragCounter.current--;
+
+ // Only hide overlay when leaving all elements in the component tree
+ if (dragCounter.current === 0) {
+ setIsDragging(false);
+ }
+ }, []);
+
+ const handleDrop = useCallback(
+ async (e: React.DragEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ dragCounter.current = 0;
+ setIsDragging(false);
+
+ if (hasFiles(e.dataTransfer) && e.dataTransfer) {
+ await processFiles(e.dataTransfer);
+ }
+ },
+ [hasFiles, processFiles],
+ );
+
+ // Set up paste event listener
+ useEffect(() => {
+ document.addEventListener("paste", handlePaste);
+ return () => {
+ document.removeEventListener("paste", handlePaste);
+ };
+ }, [handlePaste]);
+
+ return (
+
+ {children}
+
+ {/* Drop zone overlay */}
+ {isDragging && (
+
+
+
+
+
+
+ Drop files here or paste from clipboard to add them to your
+ message
+
+
+
+
+ )}
+
+ );
+}
diff --git a/app/ui/app/src/components/ImageThumbnail.tsx b/app/ui/app/src/components/ImageThumbnail.tsx
new file mode 100644
index 000000000..04ee83708
--- /dev/null
+++ b/app/ui/app/src/components/ImageThumbnail.tsx
@@ -0,0 +1,131 @@
+import { useMemo, useEffect, useState } from "react";
+import { isImageFile } from "@/utils/imageUtils";
+
+export interface ImageData {
+ filename: string;
+ data: Uint8Array | number[] | string;
+ type?: string;
+}
+
+interface ImageThumbnailProps {
+ image: ImageData;
+ className?: string;
+ alt?: string;
+ onError?: () => void;
+}
+
+export function ImageThumbnail({
+ image,
+ className = "w-16 h-16 object-cover rounded-md select-none",
+ alt,
+ onError,
+}: ImageThumbnailProps) {
+ const [imageLoadError, setImageLoadError] = useState(false);
+
+ const imageUrl = useMemo(() => {
+ if (!isImageFile(image.filename)) return "";
+
+ try {
+ // Determine MIME type from file extension
+ const extension = image.filename.toLowerCase().split(".").pop();
+ let mimeType = "application/octet-stream";
+
+ switch (extension) {
+ case "png":
+ mimeType = "image/png";
+ break;
+ case "jpg":
+ case "jpeg":
+ mimeType = "image/jpeg";
+ break;
+ case "gif":
+ mimeType = "image/gif";
+ break;
+ case "webp":
+ mimeType = "image/webp";
+ break;
+ }
+
+ // Convert to Uint8Array if needed
+ let bytes: Uint8Array;
+ if (image.data instanceof Uint8Array) {
+ bytes = image.data;
+ } else if (Array.isArray(image.data)) {
+ bytes = new Uint8Array(image.data);
+ } else if (typeof image.data === "string") {
+ // Convert base64 string to Uint8Array
+ const binaryString = atob(image.data);
+ bytes = new Uint8Array(binaryString.length);
+ for (let i = 0; i < binaryString.length; i++) {
+ bytes[i] = binaryString.charCodeAt(i);
+ }
+ } else {
+ console.error(
+ "Invalid data format for:",
+ image.filename,
+ typeof image.data,
+ );
+ return "";
+ }
+
+ const blob = new Blob([bytes], { type: mimeType });
+ return URL.createObjectURL(blob);
+ } catch (error) {
+ console.error(
+ "Error converting file data to URL for",
+ image.filename,
+ ":",
+ error,
+ );
+ return "";
+ }
+ }, [image]);
+
+ // Cleanup blob URL on unmount and reset error state when image changes
+ useEffect(() => {
+ setImageLoadError(false);
+ return () => {
+ if (imageUrl) {
+ URL.revokeObjectURL(imageUrl);
+ }
+ };
+ }, [imageUrl]);
+
+ if (!isImageFile(image.filename) || !imageUrl) {
+ return null;
+ }
+
+ if (imageLoadError) {
+ return (
+
+ );
+ }
+
+ return (
+ {
+ setImageLoadError(true);
+ onError?.();
+ }}
+ />
+ );
+}
diff --git a/app/ui/app/src/components/Logo.tsx b/app/ui/app/src/components/Logo.tsx
new file mode 100644
index 000000000..15624353b
--- /dev/null
+++ b/app/ui/app/src/components/Logo.tsx
@@ -0,0 +1,63 @@
+export default function Logo() {
+ return (
+
+ );
+}
diff --git a/app/ui/app/src/components/Message.stories.tsx b/app/ui/app/src/components/Message.stories.tsx
new file mode 100644
index 000000000..cb7f1118b
--- /dev/null
+++ b/app/ui/app/src/components/Message.stories.tsx
@@ -0,0 +1,419 @@
+import type { Meta, StoryObj } from "@storybook/react-vite";
+import Message from "./Message";
+import { Message as MessageType, ToolCall, ToolFunction } from "@/gotypes";
+
+const meta = {
+ title: "Components/Message",
+ component: Message,
+ parameters: {
+ layout: "padded",
+ },
+ tags: ["autodocs"],
+ argTypes: {
+ message: {
+ description: "The message object to display",
+ },
+ },
+} satisfies Meta;
+
+export default meta;
+type Story = StoryObj;
+
+// Helper function to create a message
+const createMessage = (overrides: Partial): MessageType => {
+ const now = new Date();
+ return new MessageType({
+ role: "user",
+ content: "Hello, world!",
+ thinking: "",
+ stream: false,
+ created_at: now.toISOString(),
+ updated_at: now.toISOString(),
+ ...overrides,
+ });
+};
+
+// User Messages
+export const UserMessage: Story = {
+ args: {
+ message: createMessage({
+ role: "user",
+ content: "Can you help me understand how React hooks work?",
+ }),
+ isStreaming: false,
+ },
+};
+
+export const UserMessageWithMarkdown: Story = {
+ args: {
+ message: createMessage({
+ role: "user",
+ content:
+ "Here's my code:\n```javascript\nconst [count, setCount] = useState(0);\n```\nWhy isn't it working?",
+ }),
+ isStreaming: false,
+ },
+};
+
+// Assistant Messages
+export const AssistantMessage: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content:
+ "I'd be happy to help you understand React hooks! React hooks are functions that let you use state and other React features in functional components.",
+ }),
+ isStreaming: false,
+ },
+};
+
+export const AssistantMessageWithCodeBlock: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content: `Here's an example of using the useState hook:
+
+\`\`\`javascript
+import React, { useState } from 'react';
+
+function Counter() {
+ const [count, setCount] = useState(0);
+
+ return (
+
+
Count: {count}
+
setCount(count + 1)}>
+ Increment
+
+
+ );
+}
+\`\`\`
+
+This creates a simple counter component that tracks its state.`,
+ }),
+ isStreaming: false,
+ },
+};
+
+export const AssistantMessageWithThinking: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content:
+ "Based on my analysis, the issue with your code is that you need to import useState from React.",
+ thinking:
+ "The user is trying to use useState but hasn't imported it. This is a common mistake for beginners. I should provide a clear explanation and show the correct import statement.",
+ thinkingTimeStart: new Date(Date.now() - 3000),
+ thinkingTimeEnd: new Date(Date.now() - 1000),
+ }),
+ isStreaming: false,
+ },
+};
+
+export const AssistantMessageThinkingOnly: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content: "",
+ thinking:
+ "Processing the user's request and analyzing the code structure. This might take a moment while I consider the best approach...",
+ thinkingTimeStart: new Date(Date.now() - 2000),
+ }),
+ isStreaming: false,
+ },
+};
+
+// Tool Messages
+export const ToolMessage: Story = {
+ args: {
+ message: createMessage({
+ role: "tool",
+ content: `{
+ "status": "success",
+ "data": {
+ "temperature": 72,
+ "humidity": 45,
+ "location": "San Francisco"
+ }
+}`,
+ }),
+ isStreaming: false,
+ },
+};
+
+// Messages with Tool Calls
+export const AssistantWithToolCall: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content: "I'll check the current weather for you.",
+ tool_calls: [
+ new ToolCall({
+ type: "function",
+ function: new ToolFunction({
+ name: "get_weather",
+ arguments: JSON.stringify({
+ location: "San Francisco",
+ units: "fahrenheit",
+ }),
+ result: {
+ temperature: 72,
+ humidity: 45,
+ conditions: "sunny",
+ },
+ }),
+ }),
+ ],
+ }),
+ isStreaming: false,
+ },
+};
+
+export const AssistantWithMultipleToolCalls: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content: "Let me gather some information for you.",
+ tool_calls: [
+ new ToolCall({
+ type: "function",
+ function: new ToolFunction({
+ name: "search_web",
+ arguments: JSON.stringify({
+ query: "React hooks best practices",
+ limit: 5,
+ }),
+ }),
+ }),
+ new ToolCall({
+ type: "function",
+ function: new ToolFunction({
+ name: "read_documentation",
+ arguments: JSON.stringify({
+ url: "https://react.dev/reference/react/hooks",
+ section: "useState",
+ }),
+ result:
+ "useState is a React Hook that lets you add a state variable to your component.",
+ }),
+ }),
+ ],
+ }),
+ isStreaming: false,
+ },
+};
+
+// Complex Message with Everything
+export const ComplexAssistantMessage: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content: `## React Hooks Best Practices
+
+Based on my research, here are the key best practices:
+
+1. **Only call hooks at the top level** - Don't call hooks inside loops, conditions, or nested functions
+2. **Only call hooks from React functions** - Either from React function components or custom hooks
+3. **Use the ESLint plugin** - Install \`eslint-plugin-react-hooks\` to enforce these rules
+
+### Example of correct usage:
+
+\`\`\`javascript
+function MyComponent() {
+ // ✅ Good - hooks at the top level
+ const [count, setCount] = useState(0);
+ const theme = useContext(ThemeContext);
+
+ if (count > 5) {
+ // ❌ Bad - hook inside condition
+ // const [error, setError] = useState(null);
+ }
+
+ return {count}
;
+}
+\`\`\``,
+ thinking:
+ "The user needs a comprehensive guide on React hooks best practices. I should cover the rules of hooks, provide examples, and maybe include some tool calls to fetch the latest documentation.",
+ tool_calls: [
+ new ToolCall({
+ type: "function",
+ function: new ToolFunction({
+ name: "fetch_documentation",
+ arguments: JSON.stringify({
+ topic: "react-hooks-rules",
+ }),
+ result: "Successfully fetched React hooks documentation",
+ }),
+ }),
+ ],
+ thinkingTimeStart: new Date(Date.now() - 5000),
+ thinkingTimeEnd: new Date(Date.now() - 3000),
+ }),
+ isStreaming: false,
+ },
+};
+
+// Assistant Message with Raw HTML
+export const AssistantMessageWithHTML: Story = {
+ args: {
+ isStreaming: false,
+ message: createMessage({
+ role: "assistant",
+ content: `Here are some HTML examples and how they render:
+
+## Basic HTML Elements
+
+
+
This is a paragraph inside a styled div .
+
+
+
+ This is a blockquote with inline code and a link .
+
+
+## Lists and Tables
+
+
+ First item with bold text
+ Second item with italic text
+ Third item with highlighted text
+
+
+
+
+
+ Header 1
+ Header 2
+
+
+
+
+ Cell 1
+ Cell 2
+
+
+ Cell 3
+ Cell 4
+
+
+
+
+## Forms and Inputs
+
+
+ Click to expand
+ Hidden content here with colored text .
+
+
+<button>This is HTML code</button>
+
+## Potentially Dangerous HTML
+
+
+
+
+Dangerous link
+
+## Special Characters
+
+<div> & "quotes" 'apostrophes' © ® ™
+
+## Inline Styles
+
+Large blue text
+Highlighted span
+
+ Box with green border
+
`,
+ }),
+ },
+};
+
+// Long Content Message
+export const LongContentMessage: Story = {
+ args: {
+ message: createMessage({
+ role: "assistant",
+ content: `# Comprehensive Guide to React Hooks
+
+React Hooks revolutionized how we write React components by allowing us to use state and other React features without writing a class. Let's dive deep into understanding hooks.
+
+## What are React Hooks?
+
+Hooks are functions that let you "hook into" React state and lifecycle features from function components. They don't work inside classes — they let you use React without classes.
+
+## Core Hooks
+
+### useState
+
+The State Hook lets you add React state to function components.
+
+\`\`\`javascript
+const [state, setState] = useState(initialState);
+\`\`\`
+
+### useEffect
+
+The Effect Hook lets you perform side effects in function components:
+
+\`\`\`javascript
+useEffect(() => {
+ // Side effect logic here
+ return () => {
+ // Cleanup logic here
+ };
+}, [dependencies]);
+\`\`\`
+
+### useContext
+
+Accepts a context object and returns the current context value:
+
+\`\`\`javascript
+const value = useContext(MyContext);
+\`\`\`
+
+## Additional Hooks
+
+- **useReducer**: An alternative to useState for complex state logic
+- **useCallback**: Returns a memoized callback
+- **useMemo**: Returns a memoized value
+- **useRef**: Returns a mutable ref object
+- **useImperativeHandle**: Customizes the instance value exposed to parent components
+- **useLayoutEffect**: Similar to useEffect, but fires synchronously
+- **useDebugValue**: Displays a label for custom hooks in React DevTools
+
+## Custom Hooks
+
+You can create your own hooks to reuse stateful logic between components:
+
+\`\`\`javascript
+function useCounter(initialValue = 0) {
+ const [count, setCount] = useState(initialValue);
+
+ const increment = useCallback(() => {
+ setCount(c => c + 1);
+ }, []);
+
+ const decrement = useCallback(() => {
+ setCount(c => c - 1);
+ }, []);
+
+ return { count, increment, decrement };
+}
+\`\`\`
+
+## Best Practices and Rules
+
+1. **Only Call Hooks at the Top Level**
+2. **Only Call Hooks from React Functions**
+3. **Use the ESLint Plugin**
+4. **Keep Effects Clean**
+5. **Optimize with useMemo and useCallback**
+
+This is just the beginning of what you can do with React Hooks!`,
+ }),
+ isStreaming: false,
+ },
+};
diff --git a/app/ui/app/src/components/Message.tsx b/app/ui/app/src/components/Message.tsx
new file mode 100644
index 000000000..1996a0d4e
--- /dev/null
+++ b/app/ui/app/src/components/Message.tsx
@@ -0,0 +1,990 @@
+import { Message as MessageType, ToolCall, File } from "@/gotypes";
+import Thinking from "./Thinking";
+import StreamingMarkdownContent from "./StreamingMarkdownContent";
+import { ImageThumbnail } from "./ImageThumbnail";
+import { isImageFile } from "@/utils/imageUtils";
+import CopyButton from "./CopyButton";
+import React, { useState, useMemo, useRef } from "react";
+
+const Message = React.memo(
+ ({
+ message,
+ onEditMessage,
+ messageIndex,
+ isStreaming,
+ isFaded,
+ browserToolResult,
+ lastToolQuery,
+ }: {
+ message: MessageType;
+ onEditMessage?: (content: string, index: number) => void;
+ messageIndex?: number;
+ isStreaming: boolean;
+ isFaded?: boolean;
+ // TODO(drifkin): this type isn't right
+ browserToolResult?: BrowserToolResult;
+ lastToolQuery?: string;
+ }) => {
+ if (message.role === "user") {
+ return (
+
+ );
+ } else {
+ return (
+
+ );
+ }
+ },
+ (prevProps, nextProps) => {
+ return (
+ prevProps.message === nextProps.message &&
+ prevProps.onEditMessage === nextProps.onEditMessage &&
+ prevProps.messageIndex === nextProps.messageIndex &&
+ prevProps.isStreaming === nextProps.isStreaming &&
+ prevProps.isFaded === nextProps.isFaded &&
+ prevProps.browserToolResult === nextProps.browserToolResult
+ );
+ },
+);
+
+export default Message;
+
+// TODO(drifkin): fill in more (or generate from go types)
+type BrowserToolResult = {
+ page_stack: string[];
+};
+
+type BrowserToolContent = {
+ cursor: number;
+ title: string;
+ url: string;
+ startingLine: number;
+ totalLines: number;
+ lines: string[];
+};
+
+// Example:
+/*
+[0] Devon Rifkin(search_results_Devon Rifkin)
+**viewing lines [0 - 134] of 167**
+
+L0:
+L1:
+L2: URL:
+L3: # Search Results
+*/
+
+function processBrowserToolContent(content: string): BrowserToolContent {
+ const lines = content.split("\n");
+
+ const firstLine = lines[0];
+ // For a first line like the following:
+ // [0] Page Title(search_results_Query)
+ // we want to extract:
+ // - cursor: 0
+ // - title: Page Title
+ // - url: search_results_Query
+
+ // use a regex to extract the cursor, title and URL, all in one shot. It's okay if the page title has parens in it, the very last parens should be the URL
+ const firstLineMatch = firstLine.match(/^\[(\d+)\]\s+(.+)\(([^)]+)\)$/);
+
+ const cursor = firstLineMatch ? parseInt(firstLineMatch[1], 10) : 0;
+ const title = firstLineMatch ? firstLineMatch[2].trim() : "";
+ const url = firstLineMatch ? firstLineMatch[3] : "";
+
+ // Parse the viewing lines info from the second line
+ // Example: **viewing lines [0 - 134] of 167**
+ const viewingLineMatch = lines[1]?.match(
+ /\*\*viewing lines \[(\d+) - (\d+)\] of (\d+)\*\*/,
+ );
+ const startingLine = viewingLineMatch ? parseInt(viewingLineMatch[1], 10) : 0;
+ let totalLines = viewingLineMatch ? parseInt(viewingLineMatch[3], 10) : 0;
+
+ // TEMP(drifkin): waiting for a fix from parth, for now making it so we make
+ // sure the total lines is at least as much as the ending line number + 1
+ const endingLine = viewingLineMatch ? parseInt(viewingLineMatch[2], 10) : 0;
+ totalLines = Math.max(totalLines, endingLine + 1);
+
+ // Extract the actual content lines (skip first 2 lines and empty line 3)
+ const contentLines = lines.slice(3).filter((line) => line.startsWith("L"));
+ // remove the L: prefix with a regex
+ const contentLinesWithoutPrefix = contentLines.map((line) =>
+ line.replace(/^L(\d+):\s*/, ""),
+ );
+
+ return {
+ cursor,
+ title,
+ url,
+ startingLine,
+ totalLines,
+ lines: contentLinesWithoutPrefix,
+ };
+}
+
+function BrowserToolResult({
+ content,
+}: {
+ toolResult: BrowserToolResult;
+ content: string;
+}) {
+ const [isCollapsed, setIsCollapsed] = React.useState(true);
+ const processedContent = useMemo(
+ () => processBrowserToolContent(content),
+ [content],
+ );
+
+ let urlToUse: string | null = null;
+ if (processedContent.url.startsWith("http")) {
+ urlToUse = processedContent.url;
+ }
+
+ const isSearchResults =
+ /^search_results_/i.test(processedContent.url) ||
+ /_search$/i.test(processedContent.url);
+
+ return (
+
+
setIsCollapsed(!isCollapsed)}
+ >
+ {/* Browser icon */}
+
+
+
+
+
+
+ {/* Arrow */}
+
+
+
+
+
+ {isSearchResults ? (
+
+ {(() => {
+ const term = /^search_results_/i.test(processedContent.url)
+ ? processedContent.url.replace(/^search_results_/i, "")
+ : processedContent.url.replace(/_search$/i, "");
+ return (
+ <>
+ Search results for
+ >
+ );
+ })()}
+
+ ) : (
+
+ )}
+ {urlToUse != null && (
+
+ ({urlToUse})
+
+ )}
+
+ (lines {processedContent.startingLine}-
+ {processedContent.startingLine + processedContent.lines.length - 1}{" "}
+ of {processedContent.totalLines})
+
+
+
+
+
+
+ {processedContent.lines.map((line, index) => {
+ const lineNumber = processedContent.startingLine + index;
+ return (
+
+
+ {lineNumber}
+
+
{line}
+
+ );
+ })}
+
+
+
+
+ );
+}
+
+function ToolRoleContent({
+ message,
+ browserToolResult,
+ lastToolQuery,
+}: {
+ message: MessageType;
+ browserToolResult?: BrowserToolResult;
+ lastToolQuery?: string;
+}) {
+ const content = message.content;
+ const rawToolResult = (message as any).tool_result;
+ const toolName = (message as any).tool_name || (message as any).toolName;
+ const [isCollapsed, setIsCollapsed] = useState(true);
+
+ if (browserToolResult && typeof browserToolResult === "object") {
+ return (
+
+ );
+ }
+ return (
+ // collapsable tool result with raw json
+
+ {content && !rawToolResult && (
+
+ {content}
+
+ )}
+
+ {rawToolResult && (
+
+
setIsCollapsed(!isCollapsed)}
+ >
+ {/* Globe icon */}
+
+
+
+
+
+ {/* Arrow */}
+
+
+
+
+
+
+ {toolName === "web_search"
+ ? (() => {
+ const q =
+ (lastToolQuery && lastToolQuery.trim()) ||
+ (rawToolResult &&
+ typeof rawToolResult === "object" &&
+ typeof (rawToolResult as any).query === "string"
+ ? (rawToolResult as any).query.trim()
+ : "");
+ return q ? (
+ <>
+ Search results for
+ >
+ ) : (
+ "Web search results"
+ );
+ })()
+ : toolName === "web_fetch"
+ ? (() => {
+ const u =
+ (lastToolQuery && lastToolQuery.trim()) ||
+ (rawToolResult &&
+ typeof rawToolResult === "object" &&
+ typeof (rawToolResult as any).url === "string"
+ ? (rawToolResult as any).url
+ : "");
+ return u ? (
+ <>
+ Fetch results for{" "}
+ {u}
+ >
+ ) : (
+ "Web fetch results"
+ );
+ })()
+ : "Raw tool result"}
+
+
+
+
+
+
+
+ {typeof rawToolResult === "string"
+ ? rawToolResult
+ : JSON.stringify(rawToolResult, null, 2)}
+
+
+
+
+ )}
+
+ );
+}
+
+function InlineSearchTerm({ term }: { term: string }) {
+ return (
+ //
+ {term}
+ );
+}
+
+function cursorToPageText(
+ cursor: number,
+ browserToolResult: BrowserToolResult | undefined,
+): string {
+ if (browserToolResult) {
+ let page = browserToolResult.page_stack[cursor];
+ if (page) {
+ if (page.startsWith("search_results_")) {
+ const searchTerm = page.replace(/^search_results_/, "");
+ page = `Search results for "${searchTerm}"`;
+ }
+ return page;
+ }
+ return page || "Unknown page";
+ }
+
+ if (cursor === undefined) {
+ console.warn("cursor is undefined");
+ return "Page";
+ }
+
+ return `Page #${cursor}`;
+}
+
+function cursorToPage(
+ cursor: number,
+ browserToolResult: BrowserToolResult | undefined,
+) {
+ const pageText = cursorToPageText(cursor, browserToolResult);
+
+ return (
+
+ {pageText}
+
+ );
+}
+
+// TODO(drifkin): pull out into another file
+function BrowserToolCallDisplay({
+ toolCall,
+ browserToolResult,
+}: {
+ toolCall: ToolCall;
+ browserToolResult?: BrowserToolResult;
+}) {
+ const args = JSON.parse(toolCall.function.arguments);
+ if (toolCall.function.name === "browser.search") {
+ const query = args.query;
+ return (
+
+
+
+
+
+ Searching for
+ …
+
+
+ );
+ } else if (toolCall.function.name === "browser.open") {
+ const cursor = args.cursor;
+ const id = args.id;
+ const idAllNumeric = !isNaN(Number(id));
+
+ if (idAllNumeric) {
+ return (
+
+
+
+
+
+ Opening link #{id} from {cursorToPage(cursor, browserToolResult)}
+
+
+ );
+ } else {
+ const loc = args.loc;
+ return (
+
+
+
+
+
+ {loc
+ ? `Scrolling to line ${loc} on ${cursorToPageText(
+ cursor,
+ browserToolResult,
+ )}`
+ : `Scrolling`}
+
+
+ );
+ }
+ } else if (toolCall.function.name === "browser.find") {
+ const cursor = args.cursor;
+ const pattern = args.pattern;
+
+ return (
+
+
+
+
+
+ Searching for on{" "}
+ {cursorToPage(cursor, browserToolResult)}
+
+
+ );
+ }
+
+ return (
+
+
name: {toolCall.function.name}
+
+ args: {toolCall.function.arguments}
+
+
+ );
+}
+
+function ToolCallDisplay({
+ toolCall,
+ browserToolResult,
+}: {
+ toolCall: ToolCall;
+ browserToolResult?: BrowserToolResult;
+}) {
+ const [isCollapsed, setIsCollapsed] = React.useState(true);
+
+ // frontend tool call display for web_search
+ if (toolCall.function.name === "web_search") {
+ let args: Record | null = null;
+ try {
+ args = JSON.parse(toolCall.function.arguments) as Record;
+ } catch (e) {
+ args = null;
+ }
+ const query = args && typeof args.query === "string" ? args.query : "";
+ return (
+
+ {/* Magnifying Glass Icon */}
+
+
+
+
+ Searching for
+ …
+
+
+ );
+ }
+
+ if (toolCall.function.name === "web_fetch") {
+ let args: Record | null = null;
+ try {
+ args = JSON.parse(toolCall.function.arguments) as Record;
+ } catch (e) {
+ args = null;
+ }
+ const url = args && typeof args.url === "string" ? args.url : "";
+ return (
+
+ {/* Magnifying Glass Icon */}
+
+
+
+
+ Fetching for
+ …
+
+
+ );
+ }
+
+ if (!toolCall.function.name.startsWith("browser.")) {
+ let preview = "";
+ // preview from the tool's JSON arguments.
+ try {
+ const argsObj = JSON.parse(toolCall.function.arguments) as Record<
+ string,
+ unknown
+ >;
+ const preferredKey = [
+ "query",
+ "url",
+ "pattern",
+ "id",
+ "file",
+ "path",
+ ].find((k) => Object.prototype.hasOwnProperty.call(argsObj, k));
+ if (preferredKey && typeof (argsObj as any)[preferredKey] === "string") {
+ preview = String((argsObj as any)[preferredKey]);
+ }
+ } catch (err) {
+ console.error(
+ "Failed to parse toolCall.function.arguments in Message.tsx:",
+ err,
+ );
+ }
+
+ return (
+
+
+
+
+
+ Calling {toolCall.function.name}
+ {preview ? (
+ <>
+ :
+ >
+ ) : null}
+ …
+
+
+ );
+ }
+
+ if (toolCall.function.name.startsWith("browser.")) {
+ return (
+
+ );
+ }
+
+ let parsedArgs = null;
+ try {
+ parsedArgs = JSON.parse(toolCall.function.arguments);
+ } catch {
+ parsedArgs = toolCall.function.arguments;
+ }
+
+ // Create a compact preview of arguments as a string
+ const getArgsPreview = () => {
+ if (!parsedArgs || typeof parsedArgs !== "object") {
+ return parsedArgs ? String(parsedArgs) : "";
+ }
+
+ const argPairs = Object.entries(parsedArgs)
+ .map(([key, value]) => {
+ let displayValue;
+ if (typeof value === "string") {
+ displayValue = `"${value}"`;
+ } else if (typeof value === "object") {
+ displayValue = JSON.stringify(value);
+ } else {
+ displayValue = String(value);
+ }
+ return `${key}=${displayValue}`;
+ })
+ .join(", ");
+
+ return argPairs;
+ };
+
+ return (
+
+
setIsCollapsed(!isCollapsed)}
+ >
+ {/* Tool icon */}
+
+
+
+ {/* Arrow */}
+
+
+
+
+
+ {toolCall.function.name}
+ {isCollapsed && parsedArgs && (
+
+ ({getArgsPreview()})
+
+ )}
+
+ {toolCall.type}
+
+
+
+
+
+ {parsedArgs && (
+
+
+ Arguments:
+
+
+
+ {typeof parsedArgs === "object"
+ ? JSON.stringify(parsedArgs, null, 2)
+ : parsedArgs}
+
+
+
+ )}
+
+ {toolCall.function.result && (
+
+
+ Result:
+
+
+
+ {typeof toolCall.function.result === "object"
+ ? JSON.stringify(toolCall.function.result, null, 2)
+ : toolCall.function.result}
+
+
+
+ )}
+
+
+
+ );
+}
+
+function UserMessage({
+ message,
+ onEditMessage,
+ messageIndex,
+ isFaded,
+}: {
+ message: MessageType;
+ onEditMessage?: (content: string, index: number) => void;
+ messageIndex?: number;
+ isFaded?: boolean;
+}) {
+ const handleEdit = () => {
+ if (onEditMessage && messageIndex !== undefined) {
+ onEditMessage(message.content, messageIndex);
+ }
+ };
+
+ return (
+
+ {/* Show image attachments above the message background */}
+ {message.attachments && message.attachments.length > 0 && (
+
+ {message.attachments
+ .filter((attachment: File) => isImageFile(attachment.filename))
+ .map((attachment: File, index: number) => (
+
+
+
+ ))}
+
+ )}
+
+
+
+ {/* Show non-image attachments inside the message */}
+ {message.attachments &&
+ message.attachments.some(
+ (attachment: File) => !isImageFile(attachment.filename),
+ ) && (
+
+ {message.attachments
+ .filter(
+ (attachment: File) => !isImageFile(attachment.filename),
+ )
+ .map((attachment: File, index: number) => (
+
+
+
+
+
+ {attachment.filename}
+
+
+ ))}
+
+ )}
+
+
+ {message.content}
+
+
+ {/* Edit button */}
+
+ edit
+
+
+
+
+ );
+}
+
+function OtherRoleMessage({
+ message,
+ isStreaming,
+ isFaded,
+ browserToolResult,
+ lastToolQuery,
+}: {
+ message: MessageType;
+ previousMessage?: MessageType;
+ isStreaming: boolean;
+ isFaded?: boolean;
+ // TODO(drifkin): this type isn't right
+ browserToolResult?: BrowserToolResult;
+ lastToolQuery?: string;
+}) {
+ const messageRef = useRef(null);
+
+ return (
+
+
+ {/* Thinking area */}
+ {message.thinking && (
+
+ )}
+
+ {/* Only render content div if there's actual content to show */}
+ {(() => {
+ // Skip rendering content div for tool messages with structured tool_calls
+ if (
+ message.role === "tool" &&
+ message.tool_calls &&
+ message.tool_calls.length > 0
+ ) {
+ return null;
+ }
+
+ if (
+ message.role !== "tool" &&
+ (!message.content || !message.content.trim())
+ ) {
+ return null;
+ }
+
+ // Render appropriate content
+ return (
+
+ {message.role === "tool" ? (
+
+ ) : (
+
+ )}
+
+ );
+ })()}
+
+
+ {message.tool_calls && message.tool_calls.length > 0 && (
+
+ {message.tool_calls.map((toolCall: ToolCall, index: number) => (
+
+ ))}
+
+ )}
+
+ {message.tool_call && (
+
+ )}
+
+ {!isStreaming &&
+ message.role === "assistant" &&
+ message.content &&
+ message.content.trim() &&
+ (!message.tool_calls || message.tool_calls.length === 0) &&
+ !message.tool_call && (
+
+ }
+ removeClasses={["copy-button"]}
+ size="md"
+ showLabels={false}
+ className="copy-button z-10 text-neutral-500 dark:text-neutral-400"
+ title="Copy"
+ />
+
+ )}
+
+ );
+}
diff --git a/app/ui/app/src/components/MessageList.tsx b/app/ui/app/src/components/MessageList.tsx
new file mode 100644
index 000000000..869ab40ca
--- /dev/null
+++ b/app/ui/app/src/components/MessageList.tsx
@@ -0,0 +1,168 @@
+import { Message as MessageType, DownloadEvent, ErrorEvent } from "@/gotypes";
+import React from "react";
+import Message from "./Message";
+import Downloading from "./Downloading";
+import { ErrorMessage } from "./ErrorMessage";
+
+export default function MessageList({
+ messages,
+ spacerHeight,
+ isWaitingForLoad,
+ isStreaming,
+ downloadProgress,
+ onEditMessage,
+ editingMessageIndex,
+ error,
+ browserToolResult,
+}: {
+ messages: MessageType[];
+ spacerHeight: number;
+ isWaitingForLoad?: boolean;
+ isStreaming: boolean;
+ downloadProgress?: DownloadEvent;
+ onEditMessage?: (content: string, index: number) => void | Promise;
+ editingMessageIndex?: number;
+ error?: ErrorEvent | null;
+ browserToolResult?: any;
+}) {
+ const [showDots, setShowDots] = React.useState(false);
+ const isDownloadingModel = downloadProgress && !downloadProgress.done;
+ const shouldShowDownload = messages.length > 0;
+
+ React.useEffect(() => {
+ let timer: number;
+ if (
+ (isStreaming || isWaitingForLoad) &&
+ !isDownloadingModel &&
+ messages.length > 0 &&
+ messages[messages.length - 1]?.role === "user"
+ ) {
+ timer = window.setTimeout(() => {
+ setShowDots(true);
+ }, 750); // Wait 750ms before showing dots
+ } else {
+ setShowDots(false);
+ }
+
+ return () => window.clearTimeout(timer);
+ }, [isStreaming, isWaitingForLoad, isDownloadingModel, messages]);
+
+ const lastIdx = messages.length - 1;
+
+ // Memoize the last tool query (web_search query or web_fetch url) at each message index
+ const lastToolQueries = React.useMemo(() => {
+ const queries: (string | undefined)[] = [];
+ let lastQuery: string | undefined = undefined;
+ for (let i = 0; i < messages.length; i++) {
+ const m: any = messages[i] as any;
+ const toolCalls: any[] | undefined = Array.isArray(m?.tool_calls)
+ ? (m.tool_calls as any[])
+ : m?.tool_call
+ ? [m.tool_call]
+ : undefined;
+ if (toolCalls && toolCalls.length > 0) {
+ for (const tc of toolCalls) {
+ const name = tc?.function?.name;
+ if (name === "web_search" || name === "web_fetch") {
+ try {
+ const args = JSON.parse(tc.function.arguments || "{}");
+ const candidate =
+ typeof args.query === "string" && args.query.trim()
+ ? String(args.query).trim()
+ : typeof args.url === "string" && args.url.trim()
+ ? String(args.url).trim()
+ : "";
+ if (candidate) lastQuery = candidate;
+ } catch {}
+ }
+ }
+ }
+ queries.push(lastQuery);
+ }
+ return queries;
+ }, [messages]);
+
+ return (
+
+ {messages.map((message, idx) => {
+ const lastToolQuery = lastToolQueries[idx];
+ return (
+
+ = editingMessageIndex
+ }
+ browserToolResult={browserToolResult}
+ lastToolQuery={lastToolQuery}
+ />
+
+ );
+ })}
+
+ {/* Inline error message */}
+ {error &&
+ error.code !== "usage_limit_upgrade" &&
+ error.code !== "cloud_unauthorized" &&
}
+
+ {/* Indeterminate loading indicator */}
+ {showDots && (
+
+ )}
+
+ {/* Downloading model */}
+ {/* Only show for models larger than 1KiB */}
+ {downloadProgress?.total && downloadProgress.total > 1024 && (
+
+ )}
+
+ {/* Dynamic spacer to allow scrolling the last message to the top of the container */}
+
+
+ );
+}
diff --git a/app/ui/app/src/components/ModelPicker.tsx b/app/ui/app/src/components/ModelPicker.tsx
new file mode 100644
index 000000000..768e46b4f
--- /dev/null
+++ b/app/ui/app/src/components/ModelPicker.tsx
@@ -0,0 +1,364 @@
+import {
+ useState,
+ useRef,
+ useEffect,
+ forwardRef,
+ type JSX,
+ useImperativeHandle,
+} from "react";
+import { Model } from "@/gotypes";
+import { useSelectedModel } from "@/hooks/useSelectedModel";
+import { useSettings } from "@/hooks/useSettings";
+import { useQueryClient } from "@tanstack/react-query";
+import { getModelUpstreamInfo } from "@/api";
+import { ArrowDownTrayIcon } from "@heroicons/react/24/outline";
+
+const stalenessCheckCache = new Map();
+
+export const ModelPicker = forwardRef<
+ HTMLButtonElement,
+ {
+ chatId?: string;
+ onModelSelect?: () => void;
+ onEscape?: () => void;
+ onDropdownToggle?: (isOpen: boolean) => void;
+ isDisabled?: boolean;
+ }
+>(function ModelPicker(
+ { chatId, onModelSelect, onEscape, onDropdownToggle, isDisabled },
+ ref,
+): JSX.Element {
+ const [isOpen, setIsOpen] = useState(false);
+ const [searchQuery, setSearchQuery] = useState("");
+ const { selectedModel, setSettings, models, loading } = useSelectedModel(
+ chatId,
+ searchQuery,
+ );
+ const { settings } = useSettings();
+ const dropdownRef = useRef(null);
+ const searchInputRef = useRef(null);
+ const queryClient = useQueryClient();
+ const modelListRef = useRef<{
+ scrollToSelectedModel: () => void;
+ scrollToTop: () => void;
+ }>(null);
+
+ const checkModelStaleness = async (model: Model) => {
+ if (
+ !model ||
+ !model.model ||
+ model.digest === undefined ||
+ model.digest === ""
+ )
+ return;
+
+ // Check cache - only check staleness every 5 minutes per model
+ const now = Date.now();
+ const lastChecked = stalenessCheckCache.get(model.model);
+ if (lastChecked && now - lastChecked < 5 * 60 * 1000) return;
+ stalenessCheckCache.set(model.model, now);
+
+ try {
+ const upstreamInfo = await getModelUpstreamInfo(model);
+
+ // Compare local digest with upstream digest
+ let isStale =
+ model.digest &&
+ upstreamInfo.digest &&
+ model.digest !== upstreamInfo.digest;
+
+ // If the model has a modified time and upstream has a push time,
+ // check if the model was modified after the push time - if so, it's not stale
+ if (isStale && model.modified_at && upstreamInfo.pushTime > 0) {
+ const modifiedAtTime =
+ new Date(model.modified_at as string | number | Date).getTime() /
+ 1000;
+ if (modifiedAtTime > upstreamInfo.pushTime) {
+ isStale = false;
+ }
+ }
+
+ if (isStale) {
+ const currentStaleModels =
+ queryClient.getQueryData>(["staleModels"]) ||
+ new Map();
+ const newMap = new Map(currentStaleModels);
+ newMap.set(model.model, true);
+ queryClient.setQueryData(["staleModels"], newMap);
+ }
+ } catch (error) {
+ console.error("Failed to check model staleness:", error);
+ }
+ };
+
+ useEffect(() => {
+ const handleClickOutside = (event: MouseEvent) => {
+ if (
+ dropdownRef.current &&
+ !dropdownRef.current.contains(event.target as Node)
+ ) {
+ setIsOpen(false);
+ }
+ };
+ document.addEventListener("mousedown", handleClickOutside);
+ return () => document.removeEventListener("mousedown", handleClickOutside);
+ }, []);
+
+ useEffect(() => {
+ if (ref && typeof ref === "object" && ref.current) {
+ (ref.current as any).closeDropdown = () => setIsOpen(false);
+ }
+ }, [ref, setIsOpen]);
+
+ // Focus search when opened and refresh models
+ // Clear search when closed
+ useEffect(() => {
+ if (isOpen) {
+ searchInputRef.current?.focus();
+ modelListRef.current?.scrollToSelectedModel();
+ } else {
+ setSearchQuery("");
+ }
+ }, [isOpen]);
+
+ // When searching, scroll to top of list
+ useEffect(() => {
+ if (searchQuery && modelListRef.current) {
+ modelListRef.current.scrollToTop();
+ }
+ }, [searchQuery]);
+
+ useEffect(() => {
+ if (selectedModel && !loading) {
+ checkModelStaleness(selectedModel);
+ }
+ }, [selectedModel?.model, loading]); // eslint-disable-line react-hooks/exhaustive-deps
+
+ useEffect(() => {
+ const handleKeyDown = (event: KeyboardEvent) => {
+ if (!isOpen) return;
+
+ if (event.key === "Escape") {
+ event.preventDefault();
+ setIsOpen(false);
+ onEscape?.();
+ return;
+ }
+ };
+
+ document.addEventListener("keydown", handleKeyDown);
+ return () => document.removeEventListener("keydown", handleKeyDown);
+ }, [isOpen, onEscape]);
+
+ const handleModelSelect = (model: Model) => {
+ setSettings({ SelectedModel: model.model });
+ setIsOpen(false);
+ onModelSelect?.();
+ };
+
+ return (
+
+
{
+ const newState = !isOpen;
+ setIsOpen(newState);
+ onDropdownToggle?.(newState);
+ }}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ e.preventDefault();
+ const newState = !isOpen;
+ setIsOpen(newState);
+ onDropdownToggle?.(newState);
+ }
+ }}
+ onMouseDown={(e) => e.stopPropagation()}
+ onDoubleClick={(e) => e.stopPropagation()}
+ className="flex items-center select-none gap-1.5 rounded-full px-3.5 py-1.5 bg-white dark:bg-neutral-700 text-neutral-800 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:text-neutral-100 cursor-pointer"
+ >
+
+
+ {isDisabled
+ ? "Loading..."
+ : selectedModel?.model || "Select a model"}
+
+
+
+
+
+
+ {isOpen && (
+
+
+ setSearchQuery(e.target.value)}
+ placeholder="Find model..."
+ autoCorrect="off"
+ className="w-full px-2 py-0.5 bg-transparent border-none border-neutral-200 rounded-md outline-none focus:border-neutral-400 dark:border-neutral-600 dark:focus:border-neutral-400"
+ />
+
+
+
+
+ )}
+
+ );
+});
+
+export const ModelList = forwardRef(function ModelList(
+ {
+ models,
+ selectedModel,
+ onModelSelect,
+ airplaneMode,
+ isOpen,
+ }: {
+ models: Model[];
+ selectedModel: Model | null;
+ onModelSelect: (model: Model) => void;
+ airplaneMode: boolean;
+ isOpen: boolean;
+ },
+ ref,
+): JSX.Element {
+ const scrollContainerRef = useRef(null);
+ const [highlightedIndex, setHighlightedIndex] = useState(-1);
+
+ useImperativeHandle(ref, () => ({
+ scrollToSelectedModel: () => {
+ if (!selectedModel || !scrollContainerRef.current) return;
+ const selectedIndex = models.findIndex(
+ (m) => m.model === selectedModel.model,
+ );
+ if (selectedIndex !== -1) scrollToItem(selectedIndex);
+ },
+ scrollToTop: () => {
+ if (scrollContainerRef.current) scrollContainerRef.current.scrollTop = 0;
+ },
+ }));
+
+ // Handle keyboard navigation
+ useEffect(() => {
+ const handleKeyDown = (event: KeyboardEvent) => {
+ if (!isOpen || models.length === 0) return;
+
+ switch (event.key) {
+ case "ArrowDown":
+ event.preventDefault();
+ setHighlightedIndex((prev) => {
+ const next = prev < models.length - 1 ? prev + 1 : 0;
+ scrollToItem(next);
+ return next;
+ });
+ break;
+ case "ArrowUp":
+ event.preventDefault();
+ setHighlightedIndex((prev) => {
+ const next = prev > 0 ? prev - 1 : models.length - 1;
+ scrollToItem(next);
+ return next;
+ });
+ break;
+ case "Enter":
+ event.preventDefault();
+ if (highlightedIndex >= 0 && highlightedIndex < models.length) {
+ onModelSelect(models[highlightedIndex]);
+ }
+ break;
+ }
+ };
+
+ document.addEventListener("keydown", handleKeyDown);
+ return () => document.removeEventListener("keydown", handleKeyDown);
+ }, [isOpen, models, highlightedIndex, onModelSelect]);
+
+ // Scroll active item into view
+ const scrollToItem = (index: number) => {
+ if (scrollContainerRef.current && index >= 0) {
+ const container = scrollContainerRef.current;
+ const item = container.children[index] as HTMLElement;
+ if (item) {
+ // Calculate the exact scroll position to center the item
+ const containerHeight = container.clientHeight;
+ const itemTop = item.offsetTop;
+ const itemHeight = item.clientHeight;
+ // Position the item in the center of the container
+ container.scrollTop = itemTop - containerHeight / 2 + itemHeight / 2;
+ }
+ }
+ };
+
+ return (
+
+ {models.length === 0 ? (
+
+ No models found
+
+ ) : (
+ models.map((model, index) => {
+ return (
+
+
onModelSelect(model)}
+ onMouseEnter={() => setHighlightedIndex(index)}
+ className={`flex w-full items-center gap-2 px-3 py-2 hover:bg-neutral-100 dark:hover:bg-neutral-700/60 focus:outline-none cursor-pointer ${
+ highlightedIndex === index ||
+ selectedModel?.model === model.model
+ ? "bg-neutral-100 dark:bg-neutral-700/60"
+ : ""
+ }`}
+ >
+
+ {model.model}
+
+ {model.isCloud() && (
+
+
+
+ )}
+ {model.digest === undefined &&
+ (airplaneMode || !model.isCloud()) && (
+
+ )}
+
+
+ );
+ })
+ )}
+
+ );
+});
diff --git a/app/ui/app/src/components/Settings.tsx b/app/ui/app/src/components/Settings.tsx
new file mode 100644
index 000000000..057f7477d
--- /dev/null
+++ b/app/ui/app/src/components/Settings.tsx
@@ -0,0 +1,546 @@
+import { useEffect, useState, useCallback } from "react";
+import { Switch } from "@/components/ui/switch";
+import { Text } from "@/components/ui/text";
+import { Input } from "@/components/ui/input";
+import { Field, Label, Description } from "@/components/ui/fieldset";
+import { Badge } from "@/components/ui/badge";
+import { Button } from "@/components/ui/button";
+import { Slider } from "@/components/ui/slider";
+import {
+ WifiIcon,
+ FolderIcon,
+ BoltIcon,
+ WrenchIcon,
+ XMarkIcon,
+ CogIcon,
+ ArrowLeftIcon,
+} from "@heroicons/react/20/solid";
+import { Settings as SettingsType } from "@/gotypes";
+import { useNavigate } from "@tanstack/react-router";
+import { useUser } from "@/hooks/useUser";
+import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
+import { getSettings, updateSettings } from "@/api";
+
+function AnimatedDots() {
+ return (
+
+ .
+
+ .
+
+
+ .
+
+
+ );
+}
+
+export default function Settings() {
+ const queryClient = useQueryClient();
+ const [showSaved, setShowSaved] = useState(false);
+ const [restartMessage, setRestartMessage] = useState(false);
+ const {
+ user,
+ isAuthenticated,
+ refreshUser,
+ isRefreshing,
+ refetchUser,
+ fetchConnectUrl,
+ isLoading,
+ disconnectUser,
+ } = useUser();
+ const [isAwaitingConnection, setIsAwaitingConnection] = useState(false);
+ const [connectionError, setConnectionError] = useState(null);
+ const [pollingInterval, setPollingInterval] = useState(null);
+ const navigate = useNavigate();
+
+ const {
+ data: settingsData,
+ isLoading: loading,
+ error,
+ } = useQuery({
+ queryKey: ["settings"],
+ queryFn: getSettings,
+ });
+
+ const settings = settingsData?.settings || null;
+
+ const updateSettingsMutation = useMutation({
+ mutationFn: updateSettings,
+ onSuccess: () => {
+ queryClient.invalidateQueries({ queryKey: ["settings"] });
+ setShowSaved(true);
+ setTimeout(() => setShowSaved(false), 1500);
+ },
+ });
+
+ useEffect(() => {
+ refetchUser();
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
+
+ useEffect(() => {
+ const handleFocus = () => {
+ if (isAwaitingConnection && pollingInterval) {
+ // Stop polling when window gets focus
+ clearInterval(pollingInterval);
+ setPollingInterval(null);
+ // Reset awaiting connection state
+ setIsAwaitingConnection(false);
+ // Make one last refresh request
+ refreshUser();
+ }
+ };
+
+ window.addEventListener("focus", handleFocus);
+
+ return () => {
+ window.removeEventListener("focus", handleFocus);
+ };
+ }, [isAwaitingConnection, refreshUser, pollingInterval]);
+
+ // Check if user is authenticated after refresh
+ useEffect(() => {
+ if (isAwaitingConnection && isAuthenticated) {
+ setIsAwaitingConnection(false);
+ setConnectionError(null);
+ if (pollingInterval) {
+ clearInterval(pollingInterval);
+ setPollingInterval(null);
+ }
+ }
+ }, [isAuthenticated, isAwaitingConnection, pollingInterval]);
+
+ // Cleanup interval on unmount
+ useEffect(() => {
+ return () => {
+ if (pollingInterval) {
+ clearInterval(pollingInterval);
+ }
+ };
+ }, [pollingInterval]);
+
+ const handleChange = useCallback(
+ (field: keyof SettingsType, value: boolean | string | number) => {
+ if (settings) {
+ const updatedSettings = new SettingsType({
+ ...settings,
+ [field]: value,
+ });
+
+ // If context length is being changed, show restart message
+ if (field === "ContextLength" && value !== settings.ContextLength) {
+ setRestartMessage(true);
+ // Hide restart message after 3 seconds
+ setTimeout(() => setRestartMessage(false), 3000);
+ }
+
+ updateSettingsMutation.mutate(updatedSettings);
+ }
+ },
+ [settings, updateSettingsMutation],
+ );
+
+ const handleResetToDefaults = () => {
+ if (settings) {
+ const defaultSettings = new SettingsType({
+ Expose: false,
+ Browser: false,
+ Models: "",
+ Agent: false,
+ Tools: false,
+ ContextLength: 4096,
+ AirplaneMode: false,
+ });
+ updateSettingsMutation.mutate(defaultSettings);
+ }
+ };
+
+ const handleConnectOllamaAccount = async () => {
+ setConnectionError(null);
+
+ // If user is already authenticated, no need to connect
+ if (isAuthenticated) {
+ return;
+ }
+
+ try {
+ // If we don't have a user or user has no name, get connect URL
+ if (!user || !user?.name) {
+ const { data: connectUrl } = await fetchConnectUrl();
+ if (connectUrl) {
+ window.open(connectUrl, "_blank");
+ setIsAwaitingConnection(true);
+ // Start polling every 5 seconds
+ const interval = setInterval(() => {
+ refreshUser();
+ }, 5000);
+ setPollingInterval(interval);
+ } else {
+ setConnectionError("Failed to get connect URL");
+ }
+ }
+ } catch (error) {
+ console.error("Error connecting to Ollama account:", error);
+ setConnectionError(
+ error instanceof Error
+ ? error.message
+ : "Failed to connect to Ollama account",
+ );
+ setIsAwaitingConnection(false);
+ }
+ };
+
+ if (loading) {
+ return null;
+ }
+
+ if (error || !settings) {
+ return (
+
+
Failed to load settings
+
+ );
+ }
+
+ const isWindows = navigator.platform.toLowerCase().includes("win");
+
+ return (
+
+ window.drag && window.drag()}
+ onDoubleClick={() => window.doubleClick && window.doubleClick()}
+ >
+
+ {isWindows && (
+ navigate({ to: "/" })}
+ className="hover:bg-neutral-100 mr-3 dark:hover:bg-neutral-800 rounded-full p-1.5"
+ >
+
+
+ )}
+ Settings
+
+ {!isWindows && (
+ navigate({ to: "/" })}
+ className="p-1 hover:bg-neutral-100 mr-3 dark:hover:bg-neutral-800 rounded-full"
+ >
+
+
+ )}
+
+
+
+ {/* Connect Ollama Account */}
+
+
+
+ {isLoading ? (
+ // Loading skeleton, this will only happen if the app started recently
+
+ ) : user && user.name ? (
+
+
+
+
+ {user?.name}
+
+
+
+ {user?.email}
+
+
+ {user?.plan === "free" && (
+
+ window.open(
+ "https://ollama.com/upgrade",
+ "_blank",
+ )
+ }
+ >
+
+
+
+ Upgrade
+
+
+ )}
+
+ window.open("https://ollama.com/settings", "_blank")
+ }
+ >
+ Manage
+
+
disconnectUser()}
+ >
+ Sign out
+
+
+
+ {user?.avatarurl && (
+
{
+ const target = e.target as HTMLImageElement;
+ target.className = "hidden";
+ }}
+ />
+ )}
+
+ ) : (
+
+
+ Ollama account
+ Not connected
+
+
+ {isRefreshing || isAwaitingConnection ? (
+
+ ) : (
+ "Sign In"
+ )}
+
+
+ )}
+
+ {connectionError && (
+
+
+ {connectionError}
+
+
+ )}
+
+
+ {/* Local Configuration */}
+
+
+ {/* Expose Ollama */}
+
+
+
+
+
+ Expose Ollama to the network
+
+ Allow other devices or services to access Ollama.
+
+
+
+
+ handleChange("Expose", checked)}
+ />
+
+
+
+
+ {/* Model Directory */}
+
+
+
+
+
Model location
+
Location where models are stored.
+
+ handleChange("Models", e.target.value)}
+ readOnly
+ />
+ {
+ if (window.webview?.selectModelsDirectory) {
+ try {
+ const directory =
+ await window.webview.selectModelsDirectory();
+ if (directory) {
+ handleChange("Models", directory);
+ }
+ } catch (error) {
+ console.error(
+ "Error selecting models directory:",
+ error,
+ );
+ }
+ }
+ }}
+ >
+
+ Browse
+
+
+
+
+
+
+ {/* Context Length */}
+
+
+
+
+
Context length
+
+ Context length determines how much of your conversation
+ local LLMs can remember and use to generate responses.
+
+
+ {
+ // Otherwise use the settings value
+ return settings.ContextLength || 4096;
+ })()}
+ onChange={(value) => {
+ handleChange("ContextLength", value);
+ }}
+ options={[
+ { value: 4096, label: "4k" },
+ { value: 8192, label: "8k" },
+ { value: 16384, label: "16k" },
+ { value: 32768, label: "32k" },
+ { value: 65536, label: "64k" },
+ { value: 131072, label: "128k" },
+ { value: 262144, label: "256k" },
+ ]}
+ />
+
+
+
+
+ {/* Airplane Mode */}
+
+
+
+
+
+
+
+ Airplane mode
+
+ Airplane mode keeps data local, disabling cloud models
+ and web search.
+
+
+
+
+
+ handleChange("AirplaneMode", checked)
+ }
+ />
+
+
+
+
+
+
+ {/* Agent Mode */}
+ {window.OLLAMA_TOOLS && (
+
+
+
+
+
+
+
+ Enable Agent Mode
+
+ Use multi-turn tools to fulfill user requests
+
+
+
+
handleChange("Agent", checked)}
+ />
+
+
+
+ {/* Tools Mode */}
+
+
+
+
+
+ Enable Tools Mode
+
+ Use single-turn tools to fulfill user requests
+
+
+
+
handleChange("Tools", checked)}
+ />
+
+
+
+
+ )}
+
+ {/* Reset button */}
+
+
+ Reset to defaults
+
+
+
+
+ {/* Saved indicator */}
+ {(showSaved || restartMessage) && (
+
+
+ Saved
+
+
+ )}
+
+
+ );
+}
diff --git a/app/ui/app/src/components/StreamingMarkdownContent.tsx b/app/ui/app/src/components/StreamingMarkdownContent.tsx
new file mode 100644
index 000000000..249a203a8
--- /dev/null
+++ b/app/ui/app/src/components/StreamingMarkdownContent.tsx
@@ -0,0 +1,344 @@
+import React from "react";
+import { Streamdown, defaultRemarkPlugins } from "streamdown";
+import remarkCitationParser from "@/utils/remarkCitationParser";
+import CopyButton from "./CopyButton";
+import type { BundledLanguage } from "shiki";
+import { highlighter } from "@/lib/highlighter";
+
+interface StreamingMarkdownContentProps {
+ content: string;
+ isStreaming?: boolean;
+ size?: "sm" | "md" | "lg";
+ browserToolResult?: any; // TODO: proper type
+}
+
+// Helper to extract text from React nodes
+const extractText = (node: React.ReactNode): string => {
+ if (typeof node === "string") return node;
+ if (typeof node === "number") return String(node);
+ if (!node) return "";
+ if (React.isValidElement(node)) {
+ const props = node.props as any;
+ if (props?.children) {
+ return extractText(props.children as React.ReactNode);
+ }
+ }
+ if (Array.isArray(node)) {
+ return node.map(extractText).join("");
+ }
+ return "";
+};
+
+const CodeBlock = React.memo(
+ ({ children }: React.HTMLAttributes) => {
+ // Extract code and language from children
+ const codeElement = children as React.ReactElement<{
+ className?: string;
+ children: React.ReactNode;
+ }>;
+ const language =
+ codeElement.props.className?.replace(/language-/, "") || "";
+ const codeText = extractText(codeElement.props.children);
+
+ // Synchronously highlight code using the pre-loaded highlighter
+ const tokens = React.useMemo(() => {
+ if (!highlighter) return null;
+
+ try {
+ return {
+ light: highlighter.codeToTokensBase(codeText, {
+ lang: language as BundledLanguage,
+ theme: "one-light" as any,
+ }),
+ dark: highlighter.codeToTokensBase(codeText, {
+ lang: language as BundledLanguage,
+ theme: "one-dark" as any,
+ }),
+ };
+ } catch (error) {
+ console.error("Failed to highlight code:", error);
+ return null;
+ }
+ }, [codeText, language]);
+
+ return (
+
+
+ {language && (
+
+ {language}
+
+ )}
+
+
+ {/* Light mode */}
+
+
+ {tokens?.light
+ ? tokens.light.map((line: any, i: number) => (
+
+ {line.map((token: any, j: number) => (
+
+ {token.content}
+
+ ))}
+ {i < tokens.light.length - 1 && "\n"}
+
+ ))
+ : codeText}
+
+
+ {/* Dark mode */}
+
+
+ {tokens?.dark
+ ? tokens.dark.map((line: any, i: number) => (
+
+ {line.map((token: any, j: number) => (
+
+ {token.content}
+
+ ))}
+ {i < tokens.dark.length - 1 && "\n"}
+
+ ))
+ : codeText}
+
+
+
+ );
+ },
+);
+
+const StreamingMarkdownContent: React.FC =
+ React.memo(({ content, isStreaming = false, size, browserToolResult }) => {
+ // Build the remark plugins array - keep default GFM and Math, add citations
+ const remarkPlugins = React.useMemo(() => {
+ return [
+ defaultRemarkPlugins.gfm,
+ defaultRemarkPlugins.math,
+ remarkCitationParser,
+ ];
+ }, []);
+
+ return (
+
+
+ ) => (
+
+ ),
+ // @ts-expect-error: custom citation type
+ "ol-citation": ({
+ cursor,
+ }: {
+ cursor: number;
+ start: number;
+ end: number;
+ }) => {
+ const pageStack = browserToolResult?.page_stack;
+ const hasValidPage = pageStack && cursor < pageStack.length;
+ const pageUrl = hasValidPage ? pageStack[cursor] : null;
+
+ const getPageTitle = (url: string) => {
+ if (url.startsWith("search_results_")) {
+ const searchTerm = url.substring("search_results_".length);
+ return `Search: ${searchTerm}`;
+ }
+ try {
+ const urlObj = new URL(url);
+ return urlObj.hostname;
+ } catch {
+ return url;
+ }
+ };
+
+ const citationElement = (
+
+ [{cursor}]
+
+ );
+
+ if (pageUrl && pageUrl.startsWith("http")) {
+ return (
+
+ {citationElement}
+
+ );
+ }
+
+ return citationElement;
+ },
+ }}
+ >
+ {content}
+
+
+
+ );
+ });
+
+interface StreamingMarkdownErrorBoundaryProps {
+ content: string;
+ children: React.ReactNode;
+ isStreaming: boolean;
+}
+
+// Sometimes remark will throw errors, particularly when rendering math. We add
+// this fallback to show the plain text content if there's an error, and then we
+// retry rendering the content if the content changes OR if we change our
+// streaming state (because we render things differently when in streaming mode
+// v. not, so for some cases we'll automatically recover once streaming is over)
+//
+// This should not be relied on for anything known to be broken (any known
+// errors should be fixed!), but it's necessary to not break the full UI because
+// of some bad markdown
+class StreamingMarkdownErrorBoundary extends React.Component<
+ StreamingMarkdownErrorBoundaryProps,
+ { hasError: boolean }
+> {
+ constructor(props: StreamingMarkdownErrorBoundaryProps) {
+ super(props);
+ this.state = { hasError: false };
+ }
+
+ componentDidUpdate(prevProps: StreamingMarkdownErrorBoundaryProps) {
+ if (
+ prevProps.isStreaming !== this.props.isStreaming ||
+ prevProps.content !== this.props.content
+ ) {
+ this.setState({ hasError: false });
+ }
+ }
+
+ static getDerivedStateFromError(/*_error: Error*/) {
+ return { hasError: true };
+ }
+
+ componentDidCatch(error: Error, info: { componentStack: string }) {
+ console.error(
+ "StreamingMarkdownContent: caught rendering error",
+ error,
+ info,
+ );
+ }
+
+ render() {
+ if (this.state.hasError) {
+ // TODO(drifkin): render this more nicely so it's not so jarring. For
+ // example, probably want to render newlines, etc. But let's not get too
+ // fancy because then we'll end up needing an ErrorBoundaryErrorBoundary
+ // :upside_down_face:
+ return {this.props.content}
;
+ }
+
+ return this.props.children;
+ }
+}
+
+export default StreamingMarkdownContent;
diff --git a/app/ui/app/src/components/ThinkButton.tsx b/app/ui/app/src/components/ThinkButton.tsx
new file mode 100644
index 000000000..ff940267d
--- /dev/null
+++ b/app/ui/app/src/components/ThinkButton.tsx
@@ -0,0 +1,161 @@
+import { forwardRef, useState, useRef, useEffect } from "react";
+import type { ThinkingLevel } from "./ChatForm";
+
+const THINKING_LEVELS = {
+ LOW: "low",
+ MEDIUM: "medium",
+ HIGH: "high",
+} as const;
+
+const THINKING_LEVEL_LABELS = {
+ low: "Low",
+ medium: "Medium",
+ high: "High",
+} as const;
+
+interface ThinkButtonProps {
+ mode: "think" | "thinkingLevel";
+ isVisible?: boolean;
+ isActive?: boolean;
+ currentLevel?: ThinkingLevel;
+ onToggle?: () => void;
+ onLevelChange?: (level: ThinkingLevel) => void;
+ onDropdownToggle?: (isOpen: boolean) => void;
+}
+
+export const ThinkButton = forwardRef(
+ function ThinkButton(
+ {
+ mode,
+ isVisible,
+ isActive,
+ currentLevel,
+ onToggle,
+ onLevelChange,
+ onDropdownToggle,
+ },
+ ref,
+ ) {
+ const [isDropdownOpen, setIsDropdownOpen] = useState(false);
+ const dropdownRef = useRef(null);
+
+ useEffect(() => {
+ if (
+ ref &&
+ typeof ref === "object" &&
+ ref.current &&
+ mode === "thinkingLevel"
+ ) {
+ (ref.current as any).closeDropdown = () => setIsDropdownOpen(false);
+ }
+ }, [ref, mode]);
+
+ useEffect(() => {
+ if (mode !== "thinkingLevel" || !isDropdownOpen) return;
+
+ function handleClickOutside(event: MouseEvent) {
+ if (
+ dropdownRef.current &&
+ !dropdownRef.current.contains(event.target as Node)
+ ) {
+ setIsDropdownOpen(false);
+ }
+ }
+
+ document.addEventListener("mousedown", handleClickOutside);
+ return () =>
+ document.removeEventListener("mousedown", handleClickOutside);
+ }, [isDropdownOpen, mode]);
+
+ if (!isVisible) return null;
+
+ if (mode === "think") {
+ return (
+
+
+
+
+
+ );
+ }
+
+ // thinkingLevel mode
+ const displayLabel = currentLevel
+ ? THINKING_LEVEL_LABELS[currentLevel]
+ : "";
+ return (
+
+
{
+ const newState = !isDropdownOpen;
+ setIsDropdownOpen(newState);
+ onDropdownToggle?.(newState);
+ }}
+ className={`select-none flex items-center justify-center gap-1 rounded-full h-9 px-3 bg-white dark:bg-neutral-700 focus:outline-none focus:ring-2 focus:ring-blue-500 cursor-pointer transition-all whitespace-nowrap border border-transparent text-[rgba(0,115,255,1)] dark:text-[rgba(70,155,255,1)]`}
+ >
+
+
+
+
+
+
+ {isDropdownOpen && (
+
+ {Object.entries(THINKING_LEVELS).map(([, level]) => (
+ {
+ onLevelChange?.(level);
+ setIsDropdownOpen(false);
+ }}
+ >
+ {THINKING_LEVEL_LABELS[level]}
+
+ ))}
+
+ )}
+
+ );
+ },
+);
diff --git a/app/ui/app/src/components/Thinking.tsx b/app/ui/app/src/components/Thinking.tsx
new file mode 100644
index 000000000..e82364240
--- /dev/null
+++ b/app/ui/app/src/components/Thinking.tsx
@@ -0,0 +1,173 @@
+import { useEffect, useState, useRef } from "react";
+import StreamingMarkdownContent from "./StreamingMarkdownContent";
+
+export default function Thinking({
+ thinking,
+ startTime,
+ endTime,
+}: {
+ thinking: string;
+ startTime?: Date;
+ endTime?: Date;
+}) {
+ const [isCollapsed, setIsCollapsed] = useState(true);
+ const [hasUserInteracted, setHasUserInteracted] = useState(false);
+ const [contentHeight, setContentHeight] = useState(0);
+ const [hasOverflow, setHasOverflow] = useState(false);
+ const contentRef = useRef(null);
+ const wrapperRef = useRef(null);
+
+ const activelyThinking = startTime && !endTime;
+ const finishedThinking = startTime && endTime;
+
+ // Auto-collapse when thinking is done (only if user hasn't manually interacted)
+ useEffect(() => {
+ if (endTime && !hasUserInteracted) {
+ setIsCollapsed(true);
+ }
+ }, [endTime, hasUserInteracted]);
+
+ // Reset user interaction flag when a new thinking session starts
+ useEffect(() => {
+ if (activelyThinking) {
+ setHasUserInteracted(false);
+ }
+ }, [activelyThinking]);
+
+ // Measure content height for animations
+ useEffect(() => {
+ if (contentRef.current) {
+ const resizeObserver = new ResizeObserver(() => {
+ if (contentRef.current) {
+ setContentHeight(contentRef.current.scrollHeight);
+ }
+ });
+ resizeObserver.observe(contentRef.current);
+ return () => resizeObserver.disconnect();
+ }
+ }, [thinking]);
+
+ // Position content to show bottom when collapsed
+ useEffect(() => {
+ if (isCollapsed && contentRef.current && wrapperRef.current) {
+ requestAnimationFrame(() => {
+ if (!contentRef.current || !wrapperRef.current) return;
+
+ const contentHeight = contentRef.current.scrollHeight;
+ const wrapperHeight = wrapperRef.current.clientHeight;
+ if (contentHeight > wrapperHeight) {
+ const translateY = -(contentHeight - wrapperHeight);
+ contentRef.current.style.transform = `translateY(${translateY}px)`;
+ setHasOverflow(true);
+ } else {
+ contentRef.current.style.transform = "translateY(0)";
+ setHasOverflow(false);
+ }
+ });
+ } else if (contentRef.current) {
+ contentRef.current.style.transform = "translateY(0)";
+ setHasOverflow(false);
+ }
+ }, [thinking, isCollapsed]);
+
+ useEffect(() => {
+ if (activelyThinking && wrapperRef.current && !isCollapsed) {
+ // When expanded and actively thinking, scroll to bottom
+ wrapperRef.current.scrollTop = wrapperRef.current.scrollHeight;
+ }
+ }, [thinking, activelyThinking, isCollapsed]);
+
+ const handleToggle = () => {
+ setIsCollapsed(!isCollapsed);
+ setHasUserInteracted(true);
+ };
+
+ // Calculate max height for smooth animations
+ const getMaxHeight = () => {
+ if (isCollapsed) {
+ return finishedThinking ? "0px" : "12rem";
+ }
+ // When expanded, use the content height or grow naturally
+ return contentHeight ? `${contentHeight}px` : "none";
+ };
+
+ return (
+
+
+ {/* Light bulb */}
+
+
+
+ {/* Arrow */}
+
+
+
+
+
+ {activelyThinking
+ ? "Thinking..."
+ : finishedThinking
+ ? (() => {
+ const thinkingTime =
+ (endTime.getTime() - startTime.getTime()) / 1000;
+ return thinkingTime < 2
+ ? "Thought for a moment"
+ : `Thought for ${thinkingTime.toFixed(1)} seconds`;
+ })()
+ : "Thinking..."}
+
+
+
+
+
+
+
+ {/* Gradient overlay for fade effect when collapsed and scrolled */}
+ {isCollapsed && hasOverflow && (
+
+ )}
+
+
+ );
+}
diff --git a/app/ui/app/src/components/WebSearchButton.tsx b/app/ui/app/src/components/WebSearchButton.tsx
new file mode 100644
index 000000000..e41f1207c
--- /dev/null
+++ b/app/ui/app/src/components/WebSearchButton.tsx
@@ -0,0 +1,40 @@
+import { forwardRef } from "react";
+
+interface ButtonProps {
+ isVisible?: boolean;
+ isActive: boolean;
+ onToggle: () => void;
+}
+
+export const WebSearchButton = forwardRef(
+ function WebSearchButton({ isVisible, isActive, onToggle }, ref) {
+ if (!isVisible) return null;
+
+ return (
+
+
+
+
+
+ );
+ },
+);
diff --git a/app/ui/app/src/components/layout/layout.tsx b/app/ui/app/src/components/layout/layout.tsx
new file mode 100644
index 000000000..bffb05716
--- /dev/null
+++ b/app/ui/app/src/components/layout/layout.tsx
@@ -0,0 +1,81 @@
+import { Link } from "@tanstack/react-router";
+import { useSettings } from "@/hooks/useSettings";
+
+export function SidebarLayout({
+ sidebar,
+ children,
+}: React.PropsWithChildren<{
+ sidebar: React.ReactNode;
+ collapsible?: boolean;
+ chatId?: string;
+}>) {
+ const { settings, setSettings } = useSettings();
+ const isWindows = navigator.platform.toLowerCase().includes("win");
+
+ return (
+
+
+
setSettings({ SidebarOpen: !settings.sidebarOpen })}
+ onMouseDown={(e) => {
+ e.stopPropagation();
+ }}
+ className="h-9 w-9 flex items-center justify-center rounded-full hover:bg-neutral-100 dark:hover:bg-neutral-700/75 cursor-pointer"
+ aria-label={settings.sidebarOpen ? "Hide sidebar" : "Show sidebar"}
+ title={settings.sidebarOpen ? "Hide sidebar" : "Show sidebar"}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
window.doubleClick && window.doubleClick()}
+ onMouseDown={() => window.drag && window.drag()}
+ className="flex-none h-13 w-full"
+ >
+ {settings.sidebarOpen && sidebar}
+
+
+ window.doubleClick && window.doubleClick()}
+ onMouseDown={() => window.drag && window.drag()}
+ >
+ {children}
+
+
+ );
+}
diff --git a/app/ui/app/src/components/ui/badge.tsx b/app/ui/app/src/components/ui/badge.tsx
new file mode 100644
index 000000000..808e26892
--- /dev/null
+++ b/app/ui/app/src/components/ui/badge.tsx
@@ -0,0 +1,97 @@
+import * as Headless from "@headlessui/react";
+import clsx from "clsx";
+import React, { forwardRef } from "react";
+import { TouchTarget } from "./button";
+import { Link } from "./link";
+
+const colors = {
+ red: "bg-red-500/15 text-red-700 group-data-hover:bg-red-500/25 dark:bg-red-500/10 dark:text-red-400 dark:group-data-hover:bg-red-500/20",
+ orange:
+ "bg-orange-500/15 text-orange-700 group-data-hover:bg-orange-500/25 dark:bg-orange-500/10 dark:text-orange-400 dark:group-data-hover:bg-orange-500/20",
+ amber:
+ "bg-amber-400/20 text-amber-700 group-data-hover:bg-amber-400/30 dark:bg-amber-400/10 dark:text-amber-400 dark:group-data-hover:bg-amber-400/15",
+ yellow:
+ "bg-yellow-400/20 text-yellow-700 group-data-hover:bg-yellow-400/30 dark:bg-yellow-400/10 dark:text-yellow-300 dark:group-data-hover:bg-yellow-400/15",
+ lime: "bg-lime-400/20 text-lime-700 group-data-hover:bg-lime-400/30 dark:bg-lime-400/10 dark:text-lime-300 dark:group-data-hover:bg-lime-400/15",
+ green:
+ "bg-green-500/15 text-green-700 group-data-hover:bg-green-500/25 dark:bg-green-500/10 dark:text-green-400 dark:group-data-hover:bg-green-500/20",
+ emerald:
+ "bg-emerald-500/15 text-emerald-700 group-data-hover:bg-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-400 dark:group-data-hover:bg-emerald-500/20",
+ teal: "bg-teal-500/15 text-teal-700 group-data-hover:bg-teal-500/25 dark:bg-teal-500/10 dark:text-teal-300 dark:group-data-hover:bg-teal-500/20",
+ cyan: "bg-cyan-400/20 text-cyan-700 group-data-hover:bg-cyan-400/30 dark:bg-cyan-400/10 dark:text-cyan-300 dark:group-data-hover:bg-cyan-400/15",
+ sky: "bg-sky-500/15 text-sky-700 group-data-hover:bg-sky-500/25 dark:bg-sky-500/10 dark:text-sky-300 dark:group-data-hover:bg-sky-500/20",
+ blue: "bg-blue-500/15 text-blue-700 group-data-hover:bg-blue-500/25 dark:text-blue-400 dark:group-data-hover:bg-blue-500/25",
+ indigo:
+ "bg-indigo-500/15 text-indigo-700 group-data-hover:bg-indigo-500/25 dark:text-indigo-400 dark:group-data-hover:bg-indigo-500/20",
+ violet:
+ "bg-violet-500/15 text-violet-700 group-data-hover:bg-violet-500/25 dark:text-violet-400 dark:group-data-hover:bg-violet-500/20",
+ purple:
+ "bg-purple-500/15 text-purple-700 group-data-hover:bg-purple-500/25 dark:text-purple-400 dark:group-data-hover:bg-purple-500/20",
+ fuchsia:
+ "bg-fuchsia-400/15 text-fuchsia-700 group-data-hover:bg-fuchsia-400/25 dark:bg-fuchsia-400/10 dark:text-fuchsia-400 dark:group-data-hover:bg-fuchsia-400/20",
+ pink: "bg-pink-400/15 text-pink-700 group-data-hover:bg-pink-400/25 dark:bg-pink-400/10 dark:text-pink-400 dark:group-data-hover:bg-pink-400/20",
+ rose: "bg-rose-400/15 text-rose-700 group-data-hover:bg-rose-400/25 dark:bg-rose-400/10 dark:text-rose-400 dark:group-data-hover:bg-rose-400/20",
+ zinc: "bg-zinc-600/10 text-zinc-700 group-data-hover:bg-zinc-600/20 dark:bg-white/5 dark:text-zinc-400 dark:group-data-hover:bg-white/10",
+};
+
+type BadgeProps = { color?: keyof typeof colors };
+
+export function Badge({
+ color = "zinc",
+ className,
+ ...props
+}: BadgeProps & React.ComponentPropsWithoutRef<"span">) {
+ return (
+
+ );
+}
+
+export const BadgeButton = forwardRef(function BadgeButton(
+ {
+ color = "zinc",
+ className,
+ children,
+ ...props
+ }: BadgeProps & { className?: string; children: React.ReactNode } & (
+ | Omit
+ | Omit, "className">
+ ),
+ ref: React.ForwardedRef,
+) {
+ let classes = clsx(
+ className,
+ "group relative inline-flex rounded-md focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-blue-500",
+ );
+
+ return "href" in props ? (
+ ,
+ "className"
+ >)}
+ className={classes}
+ ref={ref as React.ForwardedRef}
+ >
+
+ {children}
+
+
+ ) : (
+ )}
+ className={classes}
+ ref={ref as React.ForwardedRef}
+ >
+
+ {children}
+
+
+ );
+});
diff --git a/app/ui/app/src/components/ui/button.tsx b/app/ui/app/src/components/ui/button.tsx
new file mode 100644
index 000000000..129c85bd0
--- /dev/null
+++ b/app/ui/app/src/components/ui/button.tsx
@@ -0,0 +1,219 @@
+import * as Headless from "@headlessui/react";
+import clsx from "clsx";
+import React, { forwardRef } from "react";
+import { Link } from "./link";
+
+const styles = {
+ base: [
+ // Base
+ "relative isolate inline-flex items-baseline justify-center gap-x-2 rounded-lg border text-base/6 font-medium",
+ // Sizing
+ "px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2.5)-1px)] sm:px-[calc(--spacing(3)-1px)] sm:py-[calc(--spacing(1.5)-1px)] sm:text-sm/6",
+ // Focus
+ "focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-blue-500",
+ // Disabled
+ "data-disabled:opacity-50",
+ // Icon
+ "*:data-[slot=icon]:-mx-0.5 *:data-[slot=icon]:my-0.5 *:data-[slot=icon]:size-5 *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:self-center *:data-[slot=icon]:text-(--btn-icon) sm:*:data-[slot=icon]:my-1 sm:*:data-[slot=icon]:size-4 forced-colors:[--btn-icon:ButtonText] forced-colors:data-hover:[--btn-icon:ButtonText]",
+ ],
+ solid: [
+ // Optical border, implemented as the button background to avoid corner artifacts
+ "border-transparent bg-(--btn-border)",
+ // Dark mode: border is rendered on `after` so background is set to button background
+ "dark:bg-(--btn-bg)",
+ // Button background, implemented as foreground layer to stack on top of pseudo-border layer
+ "before:absolute before:inset-0 before:-z-10 before:rounded-[calc(var(--radius-lg)-1px)] before:bg-(--btn-bg)",
+ // Drop shadow, applied to the inset `before` layer so it blends with the border
+ "before:shadow-sm",
+ // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
+ "dark:before:hidden",
+ // Dark mode: Subtle white outline is applied using a border
+ "dark:border-white/5",
+ // Shim/overlay, inset to match button foreground and used for hover state + highlight shadow
+ "after:absolute after:inset-0 after:-z-10 after:rounded-[calc(var(--radius-lg)-1px)]",
+ // Inner highlight shadow
+ "after:shadow-[inset_0_1px_--theme(--color-white/15%)]",
+ // White overlay on hover
+ "data-active:after:bg-(--btn-hover-overlay) data-hover:after:bg-(--btn-hover-overlay)",
+ // Dark mode: `after` layer expands to cover entire button
+ "dark:after:-inset-px dark:after:rounded-lg",
+ // Disabled
+ "data-disabled:before:shadow-none data-disabled:after:shadow-none",
+ ],
+ outline: [
+ // Base
+ "border-zinc-950/10 text-zinc-950 data-active:bg-zinc-950/2.5 data-hover:bg-zinc-950/2.5",
+ // Dark mode
+ "dark:border-white/15 dark:text-white dark:[--btn-bg:transparent] dark:data-active:bg-white/5 dark:data-hover:bg-white/5",
+ // Icon
+ "[--btn-icon:var(--color-zinc-500)] data-active:[--btn-icon:var(--color-zinc-700)] data-hover:[--btn-icon:var(--color-zinc-700)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]",
+ ],
+ plain: [
+ // Base
+ "border-transparent text-zinc-950 data-active:bg-zinc-950/5 data-hover:bg-zinc-950/5",
+ // Dark mode
+ "dark:text-white dark:data-active:bg-white/10 dark:data-hover:bg-white/10",
+ // Icon
+ "[--btn-icon:var(--color-zinc-500)] data-active:[--btn-icon:var(--color-zinc-700)] data-hover:[--btn-icon:var(--color-zinc-700)] dark:[--btn-icon:var(--color-zinc-500)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]",
+ ],
+ colors: {
+ "dark/zinc": [
+ "text-white [--btn-bg:var(--color-zinc-900)] [--btn-border:var(--color-zinc-950)]/90 [--btn-hover-overlay:var(--color-white)]/10",
+ "dark:text-white dark:[--btn-bg:var(--color-zinc-600)] dark:[--btn-hover-overlay:var(--color-white)]/5",
+ "[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)]",
+ ],
+ light: [
+ "text-zinc-950 [--btn-bg:white] [--btn-border:var(--color-zinc-950)]/10 [--btn-hover-overlay:var(--color-zinc-950)]/2.5 data-active:[--btn-border:var(--color-zinc-950)]/15 data-hover:[--btn-border:var(--color-zinc-950)]/15",
+ "dark:text-white dark:[--btn-hover-overlay:var(--color-white)]/5 dark:[--btn-bg:var(--color-zinc-800)]",
+ "[--btn-icon:var(--color-zinc-500)] data-active:[--btn-icon:var(--color-zinc-700)] data-hover:[--btn-icon:var(--color-zinc-700)] dark:[--btn-icon:var(--color-zinc-500)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]",
+ ],
+ "dark/white": [
+ "text-white [--btn-bg:var(--color-zinc-900)] [--btn-border:var(--color-zinc-950)]/90 [--btn-hover-overlay:var(--color-white)]/10",
+ "dark:text-zinc-950 dark:[--btn-bg:white] dark:[--btn-hover-overlay:var(--color-zinc-950)]/5",
+ "[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)] dark:[--btn-icon:var(--color-zinc-500)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]",
+ ],
+ dark: [
+ "text-white [--btn-bg:var(--color-zinc-900)] [--btn-border:var(--color-zinc-950)]/90 [--btn-hover-overlay:var(--color-white)]/10",
+ "dark:[--btn-hover-overlay:var(--color-white)]/5 dark:[--btn-bg:var(--color-zinc-800)]",
+ "[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)]",
+ ],
+ white: [
+ "text-zinc-950 [--btn-bg:white] [--btn-border:var(--color-zinc-950)]/10 [--btn-hover-overlay:var(--color-zinc-950)]/2.5 data-active:[--btn-border:var(--color-zinc-950)]/15 data-hover:[--btn-border:var(--color-zinc-950)]/15",
+ "dark:[--btn-hover-overlay:var(--color-zinc-950)]/5",
+ "[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-500)] data-hover:[--btn-icon:var(--color-zinc-500)]",
+ ],
+ zinc: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-zinc-600)] [--btn-border:var(--color-zinc-700)]/90",
+ "dark:[--btn-hover-overlay:var(--color-white)]/5",
+ "[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)]",
+ ],
+ indigo: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-indigo-500)] [--btn-border:var(--color-indigo-600)]/90",
+ "[--btn-icon:var(--color-indigo-300)] data-active:[--btn-icon:var(--color-indigo-200)] data-hover:[--btn-icon:var(--color-indigo-200)]",
+ ],
+ cyan: [
+ "text-cyan-950 [--btn-bg:var(--color-cyan-300)] [--btn-border:var(--color-cyan-400)]/80 [--btn-hover-overlay:var(--color-white)]/25",
+ "[--btn-icon:var(--color-cyan-500)]",
+ ],
+ red: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-red-600)] [--btn-border:var(--color-red-700)]/90",
+ "[--btn-icon:var(--color-red-300)] data-active:[--btn-icon:var(--color-red-200)] data-hover:[--btn-icon:var(--color-red-200)]",
+ ],
+ orange: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-orange-500)] [--btn-border:var(--color-orange-600)]/90",
+ "[--btn-icon:var(--color-orange-300)] data-active:[--btn-icon:var(--color-orange-200)] data-hover:[--btn-icon:var(--color-orange-200)]",
+ ],
+ amber: [
+ "text-amber-950 [--btn-hover-overlay:var(--color-white)]/25 [--btn-bg:var(--color-amber-400)] [--btn-border:var(--color-amber-500)]/80",
+ "[--btn-icon:var(--color-amber-600)]",
+ ],
+ yellow: [
+ "text-yellow-950 [--btn-hover-overlay:var(--color-white)]/25 [--btn-bg:var(--color-yellow-300)] [--btn-border:var(--color-yellow-400)]/80",
+ "[--btn-icon:var(--color-yellow-600)] data-active:[--btn-icon:var(--color-yellow-700)] data-hover:[--btn-icon:var(--color-yellow-700)]",
+ ],
+ lime: [
+ "text-lime-950 [--btn-hover-overlay:var(--color-white)]/25 [--btn-bg:var(--color-lime-300)] [--btn-border:var(--color-lime-400)]/80",
+ "[--btn-icon:var(--color-lime-600)] data-active:[--btn-icon:var(--color-lime-700)] data-hover:[--btn-icon:var(--color-lime-700)]",
+ ],
+ green: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-green-600)] [--btn-border:var(--color-green-700)]/90",
+ "[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80",
+ ],
+ emerald: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-emerald-600)] [--btn-border:var(--color-emerald-700)]/90",
+ "[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80",
+ ],
+ teal: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-teal-600)] [--btn-border:var(--color-teal-700)]/90",
+ "[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80",
+ ],
+ sky: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-sky-500)] [--btn-border:var(--color-sky-600)]/80",
+ "[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80",
+ ],
+ blue: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-blue-600)] [--btn-border:var(--color-blue-700)]/90",
+ "[--btn-icon:var(--color-blue-400)] data-active:[--btn-icon:var(--color-blue-300)] data-hover:[--btn-icon:var(--color-blue-300)]",
+ ],
+ violet: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-violet-500)] [--btn-border:var(--color-violet-600)]/90",
+ "[--btn-icon:var(--color-violet-300)] data-active:[--btn-icon:var(--color-violet-200)] data-hover:[--btn-icon:var(--color-violet-200)]",
+ ],
+ purple: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-purple-500)] [--btn-border:var(--color-purple-600)]/90",
+ "[--btn-icon:var(--color-purple-300)] data-active:[--btn-icon:var(--color-purple-200)] data-hover:[--btn-icon:var(--color-purple-200)]",
+ ],
+ fuchsia: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-fuchsia-500)] [--btn-border:var(--color-fuchsia-600)]/90",
+ "[--btn-icon:var(--color-fuchsia-300)] data-active:[--btn-icon:var(--color-fuchsia-200)] data-hover:[--btn-icon:var(--color-fuchsia-200)]",
+ ],
+ pink: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-pink-500)] [--btn-border:var(--color-pink-600)]/90",
+ "[--btn-icon:var(--color-pink-300)] data-active:[--btn-icon:var(--color-pink-200)] data-hover:[--btn-icon:var(--color-pink-200)]",
+ ],
+ rose: [
+ "text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-rose-500)] [--btn-border:var(--color-rose-600)]/90",
+ "[--btn-icon:var(--color-rose-300)] data-active:[--btn-icon:var(--color-rose-200)] data-hover:[--btn-icon:var(--color-rose-200)]",
+ ],
+ },
+};
+
+type ButtonProps = (
+ | { color?: keyof typeof styles.colors; outline?: never; plain?: never }
+ | { color?: never; outline: true; plain?: never }
+ | { color?: never; outline?: never; plain: true }
+) & { className?: string; children: React.ReactNode } & (
+ | Omit
+ | Omit, "className">
+ );
+
+export const Button = forwardRef(function Button(
+ { color, outline, plain, className, children, ...props }: ButtonProps,
+ ref: React.ForwardedRef,
+) {
+ let classes = clsx(
+ className,
+ styles.base,
+ outline
+ ? styles.outline
+ : plain
+ ? styles.plain
+ : clsx(styles.solid, styles.colors[color ?? "dark/zinc"]),
+ );
+
+ return "href" in props ? (
+ ,
+ "className"
+ >)}
+ className={classes}
+ ref={ref as React.ForwardedRef}
+ >
+ {children}
+
+ ) : (
+ )}
+ className={clsx(classes, "cursor-pointer")}
+ ref={ref as React.ForwardedRef}
+ >
+ {children}
+
+ );
+});
+
+/**
+ * Expand the hit area to at least 44×44px on touch devices
+ */
+export function TouchTarget({ children }: { children: React.ReactNode }) {
+ return (
+ <>
+
+ {children}
+ >
+ );
+}
diff --git a/app/ui/app/src/components/ui/display.tsx b/app/ui/app/src/components/ui/display.tsx
new file mode 100644
index 000000000..1041ee663
--- /dev/null
+++ b/app/ui/app/src/components/ui/display.tsx
@@ -0,0 +1,120 @@
+import { clsx } from "clsx";
+import { XMarkIcon } from "@heroicons/react/20/solid";
+
+const colors = {
+ red: "bg-red-50/80 dark:bg-red-950/50",
+ neutral: "bg-neutral-50/80 dark:bg-neutral-800/50",
+ amber: "bg-amber-50/80 dark:bg-amber-950/50",
+ blue: "bg-blue-50/80 dark:bg-blue-950/50",
+ green: "bg-green-50/80 dark:bg-green-950/50",
+ zinc: "bg-zinc-50/80 dark:bg-zinc-800/50",
+};
+
+const textColors = {
+ red: "text-red-600 dark:text-red-400",
+ neutral: "text-neutral-600 dark:text-neutral-400",
+ amber: "text-amber-600 dark:text-amber-400",
+ blue: "text-blue-600 dark:text-blue-400",
+ green: "text-green-600 dark:text-green-400",
+ zinc: "text-zinc-600 dark:text-zinc-400",
+};
+
+const dismissButtonColors = {
+ red: "text-red-400 hover:bg-red-100/50 hover:text-red-600 dark:text-red-500 dark:hover:bg-red-900/30 dark:hover:text-red-300",
+ neutral:
+ "text-neutral-400 hover:bg-neutral-200/50 hover:text-neutral-600 dark:text-neutral-500 dark:hover:bg-neutral-700/50 dark:hover:text-neutral-300",
+ amber:
+ "text-amber-400 hover:bg-amber-100/50 hover:text-amber-600 dark:text-amber-500 dark:hover:bg-amber-900/30 dark:hover:text-amber-300",
+ blue: "text-blue-400 hover:bg-blue-100/50 hover:text-blue-600 dark:text-blue-500 dark:hover:bg-blue-900/30 dark:hover:text-blue-300",
+ green:
+ "text-green-400 hover:bg-green-100/50 hover:text-green-600 dark:text-green-500 dark:hover:bg-green-900/30 dark:hover:text-green-300",
+ zinc: "text-zinc-400 hover:bg-zinc-200/50 hover:text-zinc-600 dark:text-zinc-500 dark:hover:bg-zinc-700/50 dark:hover:text-zinc-300",
+};
+
+export interface DisplayAction {
+ label: string;
+ onClick?: () => void;
+ href?: string;
+ disabled?: boolean;
+ loading?: boolean;
+ gradientColors?: string;
+}
+
+interface DisplayProps {
+ message: string;
+ variant?: keyof typeof colors;
+ onDismiss?: () => void;
+ action?: DisplayAction;
+ className?: string;
+}
+
+export const Display = ({
+ message,
+ variant = "neutral",
+ onDismiss,
+ action,
+ className,
+}: DisplayProps) => {
+ const ActionButton = ({ action }: { action: DisplayAction }) => {
+ const buttonClass =
+ "px-3 py-1.5 text-xs font-medium text-white bg-zinc-900 border border-zinc-950/90 rounded-full shadow-sm disabled:opacity-50 disabled:cursor-not-allowed dark:text-zinc-950 dark:bg-white dark:border-zinc-950/10 cursor-pointer hover:bg-zinc-800 dark:hover:bg-neutral-100";
+
+ const content = (
+ {action.loading ? `${action.label}...` : action.label}
+ );
+
+ if (action.href) {
+ return (
+
+ {content}
+
+ );
+ }
+
+ return (
+
+ {content}
+
+ );
+ };
+
+ return (
+
+
+
+ {message}
+
+
+
+
+ {action &&
}
+ {onDismiss && (
+
+
+
+ )}
+
+
+ );
+};
diff --git a/app/ui/app/src/components/ui/fieldset.tsx b/app/ui/app/src/components/ui/fieldset.tsx
new file mode 100644
index 000000000..fc0393ac7
--- /dev/null
+++ b/app/ui/app/src/components/ui/fieldset.tsx
@@ -0,0 +1,121 @@
+import * as Headless from "@headlessui/react";
+import clsx from "clsx";
+import type React from "react";
+
+export function Fieldset({
+ className,
+ ...props
+}: { className?: string } & Omit) {
+ return (
+ *+[data-slot=control]]:mt-6",
+ )}
+ />
+ );
+}
+
+export function Legend({
+ className,
+ ...props
+}: { className?: string } & Omit) {
+ return (
+
+ );
+}
+
+export function FieldGroup({
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef<"div">) {
+ return (
+
+ );
+}
+
+export function Field({
+ className,
+ ...props
+}: { className?: string } & Omit) {
+ return (
+ [data-slot=label]+[data-slot=control]]:mt-3",
+ "[&>[data-slot=label]+[data-slot=description]]:mt-1",
+ "[&>[data-slot=description]+[data-slot=control]]:mt-3",
+ "[&>[data-slot=control]+[data-slot=description]]:mt-3",
+ "[&>[data-slot=control]+[data-slot=error]]:mt-3",
+ "*:data-[slot=label]:font-medium",
+ )}
+ />
+ );
+}
+
+export function Label({
+ className,
+ ...props
+}: { className?: string } & Omit) {
+ return (
+
+ );
+}
+
+export function Description({
+ className,
+ ...props
+}: { className?: string } & Omit<
+ Headless.DescriptionProps,
+ "as" | "className"
+>) {
+ return (
+
+ );
+}
+
+export function ErrorMessage({
+ className,
+ ...props
+}: { className?: string } & Omit<
+ Headless.DescriptionProps,
+ "as" | "className"
+>) {
+ return (
+
+ );
+}
diff --git a/app/ui/app/src/components/ui/input.tsx b/app/ui/app/src/components/ui/input.tsx
new file mode 100644
index 000000000..2fe27cbb2
--- /dev/null
+++ b/app/ui/app/src/components/ui/input.tsx
@@ -0,0 +1,104 @@
+import * as Headless from "@headlessui/react";
+import clsx from "clsx";
+import React, { forwardRef } from "react";
+
+export function InputGroup({
+ children,
+}: React.ComponentPropsWithoutRef<"span">) {
+ return (
+ [data-slot=icon]:first-child]:left-3 sm:[&>[data-slot=icon]:first-child]:left-2.5 [&>[data-slot=icon]:last-child]:right-3 sm:[&>[data-slot=icon]:last-child]:right-2.5",
+ "*:data-[slot=icon]:text-zinc-500 dark:*:data-[slot=icon]:text-zinc-400",
+ )}
+ >
+ {children}
+
+ );
+}
+
+const dateTypes = ["date", "datetime-local", "month", "time", "week"];
+type DateType = (typeof dateTypes)[number];
+
+export const Input = forwardRef(function Input(
+ {
+ className,
+ ...props
+ }: {
+ className?: string;
+ type?:
+ | "email"
+ | "number"
+ | "password"
+ | "search"
+ | "tel"
+ | "text"
+ | "url"
+ | DateType;
+ } & Omit,
+ ref: React.ForwardedRef,
+) {
+ return (
+
+
+
+ );
+});
diff --git a/app/ui/app/src/components/ui/link.tsx b/app/ui/app/src/components/ui/link.tsx
new file mode 100644
index 000000000..5a82689ea
--- /dev/null
+++ b/app/ui/app/src/components/ui/link.tsx
@@ -0,0 +1,17 @@
+import * as Headless from "@headlessui/react";
+import {
+ Link as RouterLink,
+ type LinkProps as RouterLinkProps,
+} from "@tanstack/react-router";
+import React, { forwardRef } from "react";
+
+export const Link = forwardRef(function Link(
+ props: RouterLinkProps & React.ComponentPropsWithoutRef<"a">,
+ ref: React.ForwardedRef,
+) {
+ return (
+
+
+
+ );
+});
diff --git a/app/ui/app/src/components/ui/slider.tsx b/app/ui/app/src/components/ui/slider.tsx
new file mode 100644
index 000000000..75ce1767b
--- /dev/null
+++ b/app/ui/app/src/components/ui/slider.tsx
@@ -0,0 +1,113 @@
+import * as React from "react";
+
+export interface SliderProps {
+ label?: string;
+ options?: { value: number; label: string }[];
+ value?: number;
+ onChange?: (value: number) => void;
+ className?: string;
+}
+
+const Slider = React.forwardRef(
+ ({ label, options, value = 0, onChange }, ref) => {
+ const [selectedValue, setSelectedValue] = React.useState(value);
+ const [isDragging, setIsDragging] = React.useState(false);
+ const containerRef = React.useRef(null);
+
+ // Update internal state when value prop changes
+ React.useEffect(() => {
+ setSelectedValue(value);
+ }, [value]);
+
+ const handleClick = (optionValue: number) => {
+ setSelectedValue(optionValue);
+ onChange?.(optionValue);
+ };
+
+ const getClosestOption = (clientX: number) => {
+ if (!containerRef.current || !options) return null;
+
+ const rect = containerRef.current.getBoundingClientRect();
+ const relativeX = clientX - rect.left;
+ const width = rect.width;
+ const segmentWidth = width / (options.length - 1);
+
+ let closestIndex = Math.round(relativeX / segmentWidth);
+ closestIndex = Math.max(0, Math.min(closestIndex, options.length - 1));
+
+ return options[closestIndex].value;
+ };
+
+ const handleMouseDown = (e: React.MouseEvent) => {
+ setIsDragging(true);
+ e.preventDefault();
+ };
+
+ const handleMouseMove = (e: MouseEvent) => {
+ if (!isDragging) return;
+
+ const closestValue = getClosestOption(e.clientX);
+ if (closestValue !== null && closestValue !== selectedValue) {
+ setSelectedValue(closestValue);
+ // Don't call onChange during drag, just update visual state
+ }
+ };
+
+ const handleMouseUp = () => {
+ if (isDragging) {
+ // Call onChange with the final value when drag ends
+ onChange?.(selectedValue);
+ }
+ setIsDragging(false);
+ };
+
+ React.useEffect(() => {
+ if (isDragging) {
+ document.addEventListener("mousemove", handleMouseMove);
+ document.addEventListener("mouseup", handleMouseUp);
+ return () => {
+ document.removeEventListener("mousemove", handleMouseMove);
+ document.removeEventListener("mouseup", handleMouseUp);
+ };
+ }
+ }, [isDragging, selectedValue]);
+
+ if (!options) {
+ return null;
+ }
+
+ return (
+
+ {label &&
{label} }
+
+
+
+
+ {options.map((option) => (
+
+
handleClick(option.value)}
+ onMouseDown={handleMouseDown}
+ className="relative px-3 py-6 -mx-3 -my-6 z-10 cursor-pointer"
+ >
+
+ {selectedValue === option.value && (
+
+ )}
+
+
+
+ {option.label}
+
+
+ ))}
+
+
+
+ );
+ },
+);
+
+Slider.displayName = "Slider";
+
+export { Slider };
diff --git a/app/ui/app/src/components/ui/switch.tsx b/app/ui/app/src/components/ui/switch.tsx
new file mode 100644
index 000000000..161e9420b
--- /dev/null
+++ b/app/ui/app/src/components/ui/switch.tsx
@@ -0,0 +1,198 @@
+import * as Headless from "@headlessui/react";
+import clsx from "clsx";
+import type React from "react";
+
+export function SwitchGroup({
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef<"div">) {
+ return (
+
+ );
+}
+
+export function SwitchField({
+ className,
+ ...props
+}: { className?: string } & Omit) {
+ return (
+
+ );
+}
+
+const colors = {
+ "dark/zinc": [
+ "[--switch-bg-ring:var(--color-zinc-950)]/90 [--switch-bg:var(--color-zinc-900)] dark:[--switch-bg-ring:transparent] dark:[--switch-bg:var(--color-white)]/25",
+ "[--switch-ring:var(--color-zinc-950)]/90 [--switch-shadow:var(--color-black)]/10 [--switch:white] dark:[--switch-ring:var(--color-zinc-700)]/90",
+ ],
+ "dark/white": [
+ "[--switch-bg-ring:var(--color-zinc-950)]/90 [--switch-bg:var(--color-zinc-900)] dark:[--switch-bg-ring:transparent] dark:[--switch-bg:var(--color-white)]",
+ "[--switch-ring:var(--color-zinc-950)]/90 [--switch-shadow:var(--color-black)]/10 [--switch:white] dark:[--switch-ring:transparent] dark:[--switch:var(--color-zinc-900)]",
+ ],
+ dark: [
+ "[--switch-bg-ring:var(--color-zinc-950)]/90 [--switch-bg:var(--color-zinc-900)] dark:[--switch-bg-ring:var(--color-white)]/15",
+ "[--switch-ring:var(--color-zinc-950)]/90 [--switch-shadow:var(--color-black)]/10 [--switch:white]",
+ ],
+ zinc: [
+ "[--switch-bg-ring:var(--color-zinc-700)]/90 [--switch-bg:var(--color-zinc-600)] dark:[--switch-bg-ring:transparent]",
+ "[--switch-shadow:var(--color-black)]/10 [--switch:white] [--switch-ring:var(--color-zinc-700)]/90",
+ ],
+ white: [
+ "[--switch-bg-ring:var(--color-black)]/15 [--switch-bg:white] dark:[--switch-bg-ring:transparent]",
+ "[--switch-shadow:var(--color-black)]/10 [--switch-ring:transparent] [--switch:var(--color-zinc-950)]",
+ ],
+ red: [
+ "[--switch-bg-ring:var(--color-red-700)]/90 [--switch-bg:var(--color-red-600)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-red-700)]/90 [--switch-shadow:var(--color-red-900)]/20",
+ ],
+ orange: [
+ "[--switch-bg-ring:var(--color-orange-600)]/90 [--switch-bg:var(--color-orange-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-orange-600)]/90 [--switch-shadow:var(--color-orange-900)]/20",
+ ],
+ amber: [
+ "[--switch-bg-ring:var(--color-amber-500)]/80 [--switch-bg:var(--color-amber-400)] dark:[--switch-bg-ring:transparent]",
+ "[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-amber-950)]",
+ ],
+ yellow: [
+ "[--switch-bg-ring:var(--color-yellow-400)]/80 [--switch-bg:var(--color-yellow-300)] dark:[--switch-bg-ring:transparent]",
+ "[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-yellow-950)]",
+ ],
+ lime: [
+ "[--switch-bg-ring:var(--color-lime-400)]/80 [--switch-bg:var(--color-lime-300)] dark:[--switch-bg-ring:transparent]",
+ "[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-lime-950)]",
+ ],
+ green: [
+ "[--switch-bg-ring:var(--color-green-700)]/90 [--switch-bg:var(--color-green-600)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-green-700)]/90 [--switch-shadow:var(--color-green-900)]/20",
+ ],
+ emerald: [
+ "[--switch-bg-ring:var(--color-emerald-600)]/90 [--switch-bg:var(--color-emerald-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-emerald-600)]/90 [--switch-shadow:var(--color-emerald-900)]/20",
+ ],
+ teal: [
+ "[--switch-bg-ring:var(--color-teal-700)]/90 [--switch-bg:var(--color-teal-600)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-teal-700)]/90 [--switch-shadow:var(--color-teal-900)]/20",
+ ],
+ cyan: [
+ "[--switch-bg-ring:var(--color-cyan-400)]/80 [--switch-bg:var(--color-cyan-300)] dark:[--switch-bg-ring:transparent]",
+ "[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-cyan-950)]",
+ ],
+ sky: [
+ "[--switch-bg-ring:var(--color-sky-600)]/80 [--switch-bg:var(--color-sky-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-sky-600)]/80 [--switch-shadow:var(--color-sky-900)]/20",
+ ],
+ blue: [
+ "[--switch-bg-ring:var(--color-blue-700)]/90 [--switch-bg:var(--color-blue-600)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-blue-700)]/90 [--switch-shadow:var(--color-blue-900)]/20",
+ ],
+ indigo: [
+ "[--switch-bg-ring:var(--color-indigo-600)]/90 [--switch-bg:var(--color-indigo-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-indigo-600)]/90 [--switch-shadow:var(--color-indigo-900)]/20",
+ ],
+ violet: [
+ "[--switch-bg-ring:var(--color-violet-600)]/90 [--switch-bg:var(--color-violet-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-violet-600)]/90 [--switch-shadow:var(--color-violet-900)]/20",
+ ],
+ purple: [
+ "[--switch-bg-ring:var(--color-purple-600)]/90 [--switch-bg:var(--color-purple-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-purple-600)]/90 [--switch-shadow:var(--color-purple-900)]/20",
+ ],
+ fuchsia: [
+ "[--switch-bg-ring:var(--color-fuchsia-600)]/90 [--switch-bg:var(--color-fuchsia-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-fuchsia-600)]/90 [--switch-shadow:var(--color-fuchsia-900)]/20",
+ ],
+ pink: [
+ "[--switch-bg-ring:var(--color-pink-600)]/90 [--switch-bg:var(--color-pink-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-pink-600)]/90 [--switch-shadow:var(--color-pink-900)]/20",
+ ],
+ rose: [
+ "[--switch-bg-ring:var(--color-rose-600)]/90 [--switch-bg:var(--color-rose-500)] dark:[--switch-bg-ring:transparent]",
+ "[--switch:white] [--switch-ring:var(--color-rose-600)]/90 [--switch-shadow:var(--color-rose-900)]/20",
+ ],
+};
+
+type Color = keyof typeof colors;
+
+export function Switch({
+ color = "dark/zinc",
+ className,
+ ...props
+}: {
+ color?: Color;
+ className?: string;
+} & Omit) {
+ return (
+
+
+
+ );
+}
diff --git a/app/ui/app/src/components/ui/text.tsx b/app/ui/app/src/components/ui/text.tsx
new file mode 100644
index 000000000..bca3778b6
--- /dev/null
+++ b/app/ui/app/src/components/ui/text.tsx
@@ -0,0 +1,60 @@
+import clsx from "clsx";
+import { Link } from "./link";
+
+export function Text({
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef<"p">) {
+ return (
+
+ );
+}
+
+export function TextLink({
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef) {
+ return (
+
+ );
+}
+
+export function Strong({
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef<"strong">) {
+ return (
+
+ );
+}
+
+export function Code({
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef<"code">) {
+ return (
+
+ );
+}
diff --git a/app/ui/app/src/contexts/StreamingContext.tsx b/app/ui/app/src/contexts/StreamingContext.tsx
new file mode 100644
index 000000000..499b81501
--- /dev/null
+++ b/app/ui/app/src/contexts/StreamingContext.tsx
@@ -0,0 +1,68 @@
+import {
+ createContext,
+ useContext,
+ useState,
+ useMemo,
+ type ReactNode,
+ type Dispatch,
+ type SetStateAction,
+} from "react";
+import { DownloadEvent } from "@/gotypes";
+
+interface StreamingContextType {
+ streamingChatIds: Set;
+ setStreamingChatIds: Dispatch>>;
+ loadingChats: Set;
+ setLoadingChats: Dispatch>>;
+ abortControllers: Map;
+ setAbortControllers: Dispatch>>;
+ downloadProgress: Map;
+ setDownloadProgress: Dispatch>>;
+}
+
+const StreamingContext = createContext(
+ undefined,
+);
+
+export function StreamingProvider({ children }: { children: ReactNode }) {
+ const [streamingChatIds, setStreamingChatIds] = useState>(
+ new Set(),
+ );
+ const [loadingChats, setLoadingChats] = useState>(new Set());
+ const [abortControllers, setAbortControllers] = useState<
+ Map
+ >(new Map());
+ const [downloadProgress, setDownloadProgress] = useState<
+ Map
+ >(new Map());
+
+ const contextValue = useMemo(
+ () => ({
+ streamingChatIds,
+ setStreamingChatIds,
+ loadingChats,
+ setLoadingChats,
+ abortControllers,
+ setAbortControllers,
+ downloadProgress,
+ setDownloadProgress,
+ }),
+ [streamingChatIds, loadingChats, abortControllers, downloadProgress],
+ );
+
+ return (
+
+ {children}
+
+ );
+}
+
+export function useStreamingContext() {
+ const context = useContext(StreamingContext);
+ if (context === undefined) {
+ throw new Error(
+ "useStreamingContext must be used within a StreamingProvider",
+ );
+ }
+ return context;
+}
diff --git a/app/ui/app/src/hooks/useChats.ts b/app/ui/app/src/hooks/useChats.ts
new file mode 100644
index 000000000..410a80e7e
--- /dev/null
+++ b/app/ui/app/src/hooks/useChats.ts
@@ -0,0 +1,762 @@
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import { getChats, getChat, sendMessage, type ChatEventUnion } from "../api";
+import { Chat, ErrorEvent, Model } from "@/gotypes";
+import { Message } from "@/gotypes";
+import { useSelectedModel } from "./useSelectedModel";
+import { createQueryBatcher } from "./useQueryBatcher";
+import { useRefetchModels } from "./useModels";
+import { useStreamingContext } from "@/contexts/StreamingContext";
+import { useSettings } from "./useSettings";
+import { getModelCapabilities } from "@/api";
+
+export const useChats = () => {
+ return useQuery({
+ queryKey: ["chats"],
+ queryFn: getChats,
+ });
+};
+
+export const useChat = (chatId: string) => {
+ const queryClient = useQueryClient();
+ const { streamingChatIds } = useStreamingContext();
+
+ return useQuery({
+ queryKey: ["chat", chatId],
+ queryFn: async () => {
+ // Check if we have optimistic data and this chat is currently streaming
+ const existingData = queryClient.getQueryData<{ chat: Chat }>([
+ "chat",
+ chatId,
+ ]);
+ const isStreaming = streamingChatIds.has(chatId);
+
+ const response = await getChat(chatId);
+
+ // If we have existing optimistic data with more messages than the server
+ // and this chat is currently streaming, preserve the optimistic data
+ if (existingData && isStreaming) {
+ const existingCount = existingData.chat.messages?.length || 0;
+ const serverCount = response.chat?.messages?.length || 0;
+
+ if (existingCount > serverCount) {
+ return existingData;
+ }
+ }
+ // Process messages to ensure tool calls are properly structured
+ if (response.chat && response.chat.messages) {
+ response.chat.messages = response.chat.messages.map((msg) => {
+ // If this is a tool message without tool_calls but has content about a tool call
+ if (
+ msg.role === "tool" &&
+ (!msg.tool_calls || msg.tool_calls.length === 0)
+ ) {
+ // Check if content indicates this is a tool call (not a tool result)
+ const toolCallMatch = msg.content.match(/Tool (\w+) called/);
+ if (toolCallMatch) {
+ // This is likely a tool call message that lost its structure
+ // For now, we'll leave it as-is but could enhance this later
+ // to parse the content and reconstruct the tool_calls array
+ }
+ }
+ return msg;
+ });
+ }
+ return response;
+ },
+ enabled: !!chatId && chatId !== "new",
+ staleTime: 1500,
+ });
+};
+
+export const useStaleModels = () => {
+ return useQuery({
+ queryKey: ["staleModels"],
+ queryFn: () => new Map(),
+ initialData: new Map(),
+ staleTime: Infinity,
+ gcTime: Infinity,
+ });
+};
+
+export const useDismissedStaleModels = () => {
+ return useQuery({
+ queryKey: ["dismissedStaleModels"],
+ queryFn: () => new Set(),
+ initialData: new Set(),
+ staleTime: Infinity,
+ gcTime: Infinity,
+ });
+};
+
+export const useChatError = (chatId: string) => {
+ return useQuery({
+ queryKey: ["chatError", chatId],
+ queryFn: () => null as ErrorEvent | null,
+ initialData: null,
+ staleTime: Infinity,
+ gcTime: 1000 * 60 * 5, // Keep in cache for 5 minutes
+ });
+};
+
+export const useIsStreaming = (chatId: string) => {
+ const { streamingChatIds } = useStreamingContext();
+ return streamingChatIds.has(chatId);
+};
+
+export const useDownloadProgress = (chatId: string) => {
+ const { downloadProgress } = useStreamingContext();
+ return downloadProgress.get(chatId);
+};
+
+export const useIsModelStale = (modelName: string) => {
+ const { data: staleModels } = useStaleModels();
+ return staleModels?.get(modelName) || false;
+};
+
+export const useShouldShowStaleDisplay = (model: Model | null) => {
+ const isStale = useIsModelStale(model?.model || "");
+ const { data: dismissedModels } = useDismissedStaleModels();
+ const {
+ settings: { airplaneMode },
+ } = useSettings();
+
+ if (model?.isCloud() && !airplaneMode) {
+ return false;
+ }
+
+ return isStale && !dismissedModels?.has(model?.model || "");
+};
+
+export const useDismissStaleModel = () => {
+ const queryClient = useQueryClient();
+ const refetchModels = useRefetchModels();
+
+ return (modelName: string) => {
+ const currentDismissedModels =
+ queryClient.getQueryData>(["dismissedStaleModels"]) ||
+ new Set();
+ const newSet = new Set(currentDismissedModels);
+ newSet.add(modelName);
+ queryClient.setQueryData(["dismissedStaleModels"], newSet);
+
+ refetchModels();
+ };
+};
+
+// Helper hook to check if we should show loading bar (streaming but no first token yet)
+export const useIsWaitingForLoad = (chatId: string) => {
+ const { streamingChatIds, loadingChats } = useStreamingContext();
+ const { selectedModel } = useSelectedModel();
+ const { data: chatsData } = useChats();
+ const queryClient = useQueryClient();
+
+ // Basic check: is this chat streaming but hasn't loaded yet?
+ const isWaitingForLoad =
+ streamingChatIds.has(chatId) && !loadingChats.has(chatId);
+
+ if (!isWaitingForLoad || !selectedModel || !chatsData?.chatInfos) {
+ return isWaitingForLoad;
+ }
+
+ // Find the most recent chat that isn't the current one
+ const sortedChats = [...chatsData.chatInfos].sort(
+ (a, b) => b.updatedAt.getTime() - a.updatedAt.getTime(),
+ );
+ const mostRecentOtherChat = sortedChats.find((chat) => chat.id !== chatId);
+ if (!mostRecentOtherChat) {
+ return isWaitingForLoad;
+ }
+
+ // Check if the most recent chat used the same model within 5 minutes
+ const fiveMinutesAgo = Date.now() - 5 * 60 * 1000;
+ const wasRecentlyActive =
+ mostRecentOtherChat.updatedAt.getTime() > fiveMinutesAgo;
+ if (!wasRecentlyActive) {
+ return isWaitingForLoad;
+ }
+ const recentChatData = queryClient.getQueryData<{ chat: Chat }>([
+ "chat",
+ mostRecentOtherChat.id,
+ ]);
+ if (
+ !recentChatData?.chat?.messages ||
+ recentChatData.chat.messages.length === 0
+ ) {
+ return isWaitingForLoad;
+ }
+ const lastAssistantMessage = [...recentChatData.chat.messages]
+ .reverse()
+ .find((msg) => msg.role === "assistant" && msg.model);
+ if (!lastAssistantMessage?.model) {
+ return isWaitingForLoad;
+ }
+
+ // If the same model was used recently, skip the loading bar
+ const isSameModel = lastAssistantMessage.model === selectedModel.model;
+ return isWaitingForLoad && !isSameModel;
+};
+
+export const useSendMessage = (chatId: string) => {
+ let updatableChatId = chatId;
+ const queryClient = useQueryClient();
+ const { selectedModel } = useSelectedModel();
+ const {
+ setStreamingChatIds,
+ loadingChats,
+ setLoadingChats,
+ setAbortControllers,
+ setDownloadProgress,
+ } = useStreamingContext();
+
+ const cleanupStreaming = (id: string) => {
+ setStreamingChatIds((prev: Set) => {
+ const newSet = new Set(prev);
+ newSet.delete(id);
+ return newSet;
+ });
+ setAbortControllers((prev) => {
+ const newMap = new Map(prev);
+ newMap.delete(id);
+ return newMap;
+ });
+ setDownloadProgress((prev) => {
+ const newMap = new Map(prev);
+ newMap.delete(id);
+ return newMap;
+ });
+ };
+
+ return useMutation({
+ mutationKey: ["sendMessage", chatId],
+ onSuccess: () => {
+ cleanupStreaming(updatableChatId);
+ },
+ onError: (error) => {
+ console.error("error mutating sendMessage", error);
+ cleanupStreaming(updatableChatId);
+ },
+ mutationFn: async ({
+ message,
+ attachments,
+ index,
+ webSearch,
+ fileTools,
+ forceUpdate,
+ think,
+ onChatEvent,
+ }: {
+ message: string;
+ attachments?: Array<{ filename: string; data: Uint8Array }>;
+ index?: number;
+ webSearch?: boolean;
+ fileTools?: boolean;
+ forceUpdate?: boolean;
+ think?: boolean | string;
+ onChatEvent?: (event: ChatEventUnion) => void;
+ }) => {
+ // For existing chats, set streaming state and add optimistic user message
+ if (chatId !== "new") {
+ setStreamingChatIds((prev: Set) => {
+ const newSet = new Set(prev);
+ newSet.add(chatId);
+ return newSet;
+ });
+ queryClient.cancelQueries({ queryKey: ["chat", chatId] });
+
+ // Only add optimistic message for non-empty messages
+ if (message.trim() !== "") {
+ // Optimistically add the user message
+ queryClient.setQueryData(
+ ["chat", chatId],
+ (old: { chat: Chat } | undefined) => {
+ if (!old) return old;
+
+ const newMessage = new Message({
+ role: "user",
+ content: message,
+ attachments: attachments,
+ });
+
+ let messages = old.chat.messages || [];
+
+ // If editing a message (index provided), truncate messages array
+ if (
+ index !== undefined &&
+ index >= 0 &&
+ index < messages.length
+ ) {
+ messages = messages.slice(0, index);
+ }
+
+ return {
+ ...old,
+ chat: new Chat({
+ ...old.chat,
+ messages: [...messages, newMessage],
+ }),
+ };
+ },
+ );
+ }
+ }
+
+ if (!selectedModel) {
+ throw new Error("No model selected");
+ }
+
+ const effectiveModel = new Model({
+ model: selectedModel.model,
+ digest: selectedModel.digest,
+ modified_at: selectedModel.modified_at,
+ });
+
+ const abortController = new AbortController();
+ setAbortControllers((prev) => {
+ const newMap = new Map(prev);
+ newMap.set(updatableChatId, abortController);
+ return newMap;
+ });
+
+ const events = sendMessage(
+ chatId,
+ message,
+ effectiveModel,
+ attachments,
+ abortController.signal,
+ index,
+ webSearch,
+ fileTools,
+ forceUpdate,
+ think,
+ );
+ let currentChatId = chatId;
+ let isCancelled = false;
+
+ // Listen for abort signal to set cancelled flag
+ abortController.signal.addEventListener("abort", () => {
+ isCancelled = true;
+ });
+
+ // Create batcher for streaming updates with smoother intervals, prevents state update depth being exceeded
+ // and allows for smoother updates at high frame rates
+ let batcher = createQueryBatcher<{ chat: Chat }>(
+ queryClient,
+ ["chat", currentChatId],
+ { batchInterval: 4, immediateFirst: true }, // ~250fps for smoother updates
+ );
+
+ for await (const event of events) {
+ // If cancelled, continue draining the stream but don't update UI
+ if (isCancelled) {
+ continue;
+ }
+
+ // download events don't count as loaded
+ // TODO(jmorganca): loading should potentially be an event instead of
+ // reducing it this way
+ if (
+ event.eventName !== "download" &&
+ !loadingChats.has(currentChatId)
+ ) {
+ // If this is the first time loading this chat, mark it as loaded
+ setLoadingChats((prev: Set) => {
+ const newSet = new Set(prev);
+ newSet.add(currentChatId);
+ return newSet;
+ });
+ }
+
+ switch (event.eventName) {
+ case "chat": {
+ // Update the current chat data with streaming content
+ batcher.scheduleBatch((old: { chat: Chat } | undefined) => {
+ if (!old) return old;
+
+ const existingMessages = old.chat.messages || [];
+ const newMessages = [...existingMessages];
+
+ // Find or create the assistant message
+ let lastMessage = newMessages[newMessages.length - 1];
+ if (!lastMessage || lastMessage.role !== "assistant") {
+ newMessages.push(
+ new Message({
+ role: "assistant",
+ content: "",
+ thinking: "",
+ model: effectiveModel,
+ }),
+ );
+ lastMessage = newMessages[newMessages.length - 1];
+ }
+
+ // Update the last message with new content
+ if (lastMessage) {
+ const updatedContent =
+ (lastMessage.content || "") + (event.content || "");
+ const updatedThinking =
+ (lastMessage.thinking || "") + (event.thinking || "");
+ const updatedMessage = new Message({
+ ...lastMessage,
+ content: updatedContent,
+ thinking: updatedThinking,
+ });
+ if (event.thinkingTimeStart) {
+ updatedMessage.thinkingTimeStart = event.thinkingTimeStart;
+ }
+ if (event.thinkingTimeEnd) {
+ updatedMessage.thinkingTimeEnd = event.thinkingTimeEnd;
+ }
+ newMessages[newMessages.length - 1] = updatedMessage;
+ }
+
+ return {
+ ...old,
+ chat: new Chat({
+ ...old.chat,
+ messages: newMessages,
+ }),
+ };
+ });
+ break;
+ }
+ case "thinking": {
+ // Handle thinking content
+ batcher.scheduleBatch((old: { chat: Chat } | undefined) => {
+ if (!old) return old;
+
+ const existingMessages = old.chat.messages || [];
+ const newMessages = [...existingMessages];
+
+ // Find or create the assistant message
+ let lastMessage = newMessages[newMessages.length - 1];
+ if (!lastMessage || lastMessage.role !== "assistant") {
+ newMessages.push(
+ new Message({
+ role: "assistant",
+ content: "",
+ thinking: "",
+ model: effectiveModel,
+ }),
+ );
+ lastMessage = newMessages[newMessages.length - 1];
+ }
+
+ // Update the last message with new thinking content
+ if (lastMessage) {
+ const updatedThinking =
+ (lastMessage.thinking || "") + (event.thinking || "");
+ const updatedMessage = new Message({
+ ...lastMessage,
+ thinking: updatedThinking,
+ });
+ if (event.thinkingTimeStart) {
+ updatedMessage.thinkingTimeStart = event.thinkingTimeStart;
+ }
+ newMessages[newMessages.length - 1] = updatedMessage;
+ }
+
+ return {
+ ...old,
+ chat: new Chat({
+ ...old.chat,
+ messages: newMessages,
+ }),
+ };
+ });
+ break;
+ }
+ case "tool_call": {
+ // Handle tool call events - these are now mostly handled by assistant_with_tools
+ // but kept for backward compatibility, potentially still good for normal tool calling models
+ queryClient.setQueryData(
+ ["chat", currentChatId],
+ (old: { chat: Chat } | undefined) => {
+ if (!old) return old;
+
+ const existingMessages = old.chat.messages || [];
+ const newMessages = [...existingMessages];
+
+ // Add tool call message
+ if (event.toolCall) {
+ newMessages.push(
+ new Message({
+ role: "tool",
+ content: `Tool ${event.toolCall.function.name} called`,
+ tool_calls: [event.toolCall],
+ thinkingTimeStart: event.thinkingTimeStart,
+ thinkingTimeEnd: event.thinkingTimeEnd,
+ }),
+ );
+ }
+
+ return {
+ ...old,
+ chat: new Chat({
+ ...old.chat,
+ messages: newMessages,
+ }),
+ };
+ },
+ );
+ break;
+ }
+ case "assistant_with_tools": {
+ // Handle assistant messages that include tool calls
+ queryClient.setQueryData(
+ ["chat", currentChatId],
+ (old: { chat: Chat } | undefined) => {
+ if (!old) return old;
+
+ const existingMessages = old.chat.messages || [];
+ const newMessages = [...existingMessages];
+
+ // Find the last assistant message and update it with tool calls
+ const lastMessage = newMessages[newMessages.length - 1];
+ if (lastMessage && lastMessage.role === "assistant") {
+ // Update existing assistant message with tool calls
+ const updatedMessage = new Message({
+ ...lastMessage,
+ content: lastMessage.content + (event.content || ""),
+ thinking: lastMessage.thinking + (event.thinking || ""),
+ tool_calls: event.toolCalls,
+ thinkingTimeStart:
+ lastMessage.thinkingTimeStart || event.thinkingTimeStart,
+ thinkingTimeEnd: event.thinkingTimeEnd,
+ model: selectedModel,
+ });
+ newMessages[newMessages.length - 1] = updatedMessage;
+ } else {
+ // No existing assistant message, create new one
+ newMessages.push(
+ new Message({
+ role: "assistant",
+ content: event.content,
+ thinking: event.thinking,
+ tool_calls: event.toolCalls,
+ thinkingTimeStart: event.thinkingTimeStart,
+ thinkingTimeEnd: event.thinkingTimeEnd,
+ model: selectedModel,
+ }),
+ );
+ }
+
+ return {
+ ...old,
+ chat: new Chat({
+ ...old.chat,
+ messages: newMessages,
+ }),
+ };
+ },
+ );
+ break;
+ }
+ case "tool_result": {
+ // Handle tool result events
+ queryClient.setQueryData(
+ ["chat", currentChatId],
+ (old: { chat: Chat } | undefined) => {
+ if (!old) return old;
+
+ const existingMessages = old.chat.messages || [];
+ const newMessages = [...existingMessages];
+
+ newMessages.push(
+ Object.assign(
+ new Message({
+ role: "tool",
+ content: event.content,
+ thinkingTimeStart: event.thinkingTimeStart,
+ thinkingTimeEnd: event.thinkingTimeEnd,
+ }),
+ {
+ tool_result: (event as any).toolResultData,
+ ...((event as any).toolName
+ ? { tool_name: (event as any).toolName }
+ : {}),
+ },
+ ),
+ );
+
+ return {
+ ...old,
+ chat: new Chat({
+ ...old.chat,
+ messages: newMessages,
+ browser_state: event.toolState ?? old.chat.browser_state,
+ }),
+ };
+ },
+ );
+ break;
+ }
+ case "download": {
+ setDownloadProgress((prev) => {
+ const newMap = new Map(prev);
+ newMap.set(currentChatId, event);
+ return newMap;
+ });
+
+ if (event.done && selectedModel) {
+ const currentStaleModels =
+ queryClient.getQueryData>([
+ "staleModels",
+ ]) || new Map();
+ const newStaleMap = new Map(currentStaleModels);
+ newStaleMap.delete(selectedModel.model);
+ queryClient.setQueryData(["staleModels"], newStaleMap);
+
+ queryClient.invalidateQueries({ queryKey: ["models"] });
+
+ // Fetch fresh capabilities for the downloaded model
+ getModelCapabilities(selectedModel.model)
+ .then((capabilities) => {
+ queryClient.setQueryData(
+ ["modelCapabilities", selectedModel.model],
+ capabilities,
+ );
+ })
+ .catch((error) => {
+ console.error(
+ "Failed to fetch capabilities after download:",
+ error,
+ );
+ queryClient.invalidateQueries({
+ queryKey: ["modelCapabilities", selectedModel.model],
+ });
+ });
+ }
+ break;
+ }
+ case "error": {
+ // Clean up streaming state
+ setStreamingChatIds((prev: Set) => {
+ const newSet = new Set(prev);
+ newSet.delete(currentChatId);
+ return newSet;
+ });
+ setDownloadProgress((prev) => {
+ const newMap = new Map(prev);
+ newMap.delete(currentChatId);
+ return newMap;
+ });
+
+ // Set error using separate React Query cache
+ queryClient.setQueryData(
+ ["chatError", currentChatId],
+ event as ErrorEvent,
+ );
+ break;
+ }
+ case "done":
+ // TODO(drifkin): update the chat with the thinking time for cases
+ // where there is thinking content, but no other content (which
+ // should be very rare)
+ setStreamingChatIds((prev: Set) => {
+ const newSet = new Set(prev);
+ newSet.delete(currentChatId);
+ return newSet;
+ });
+ // Clear download progress when streaming is done
+ setDownloadProgress((prev) => {
+ const newMap = new Map(prev);
+ newMap.delete(currentChatId);
+ return newMap;
+ });
+ // Ensure chat is fresh for next fetch
+ queryClient.invalidateQueries({
+ queryKey: ["chat", currentChatId],
+ });
+ break;
+ case "chat_created": {
+ if (!event.chatId) break;
+ const newId = event.chatId;
+ updatableChatId = newId;
+ setStreamingChatIds((prev: Set) => {
+ const newSet = new Set(prev);
+ newSet.add(newId);
+ return newSet;
+ });
+ setAbortControllers((prev) => {
+ const newMap = new Map(prev);
+ const controller = newMap.get(chatId);
+ if (controller) {
+ newMap.delete(chatId);
+ newMap.set(newId, controller);
+ }
+ return newMap;
+ });
+
+ // Flush current batcher and create new one for the new chat ID
+ batcher.flushBatch();
+ batcher.cleanup();
+ currentChatId = newId;
+ batcher = createQueryBatcher<{ chat: Chat }>(
+ queryClient,
+ ["chat", currentChatId],
+ { batchInterval: 4, immediateFirst: true },
+ );
+
+ // Create initial chat data for the new chat
+ queryClient.setQueryData(["chat", newId], {
+ chat: new Chat({
+ id: newId,
+ model: effectiveModel,
+ messages: [
+ new Message({
+ role: "user",
+ content: message,
+ attachments: attachments,
+ }),
+ ],
+ }),
+ });
+
+ // Cancel the old "new" chat query if it exists
+ if (chatId === "new") {
+ queryClient.cancelQueries({ queryKey: ["chat", "new"] });
+ }
+
+ // Invalidate chats list to include the new chat
+ queryClient.invalidateQueries({ queryKey: ["chats"] });
+ break;
+ }
+ }
+ onChatEvent?.(event);
+ }
+
+ // Flush any remaining batched updates and cleanup
+ batcher.flushBatch();
+ batcher.cleanup();
+ },
+ });
+};
+
+export const useCancelMessage = () => {
+ const {
+ abortControllers,
+ setStreamingChatIds,
+ setAbortControllers,
+ setDownloadProgress,
+ } = useStreamingContext();
+
+ return (chatId: string) => {
+ const controller = abortControllers.get(chatId);
+ if (controller) {
+ controller.abort();
+ setStreamingChatIds(
+ (prev) => new Set([...prev].filter((id) => id !== chatId)),
+ );
+ setAbortControllers((prev) => {
+ const newMap = new Map(prev);
+ newMap.delete(chatId);
+ return newMap;
+ });
+ setDownloadProgress((prev) => {
+ const newMap = new Map(prev);
+ newMap.delete(chatId);
+ return newMap;
+ });
+ }
+ };
+};
diff --git a/app/ui/app/src/hooks/useDeleteChat.ts b/app/ui/app/src/hooks/useDeleteChat.ts
new file mode 100644
index 000000000..3034c0d1b
--- /dev/null
+++ b/app/ui/app/src/hooks/useDeleteChat.ts
@@ -0,0 +1,24 @@
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { deleteChat } from "@/api";
+import { useNavigate } from "@tanstack/react-router";
+
+export function useDeleteChat() {
+ const queryClient = useQueryClient();
+ const navigate = useNavigate();
+
+ return useMutation({
+ mutationFn: (chatId: string) => deleteChat(chatId),
+ onSuccess: (_, chatId) => {
+ // If we're currently viewing the deleted chat, navigate away
+ const currentPath = window.location.pathname;
+ if (currentPath === `/c/${chatId}`) {
+ navigate({ to: "/c/$chatId", params: { chatId: "new" } });
+ }
+
+ queryClient.invalidateQueries({ queryKey: ["chats"] });
+ },
+ onError: (error, chatId) => {
+ console.error("Failed to delete chat:", chatId, error);
+ },
+ });
+}
diff --git a/app/ui/app/src/hooks/useHealth.ts b/app/ui/app/src/hooks/useHealth.ts
new file mode 100644
index 000000000..0b5a3ebdd
--- /dev/null
+++ b/app/ui/app/src/hooks/useHealth.ts
@@ -0,0 +1,22 @@
+import { useQuery } from "@tanstack/react-query";
+import { fetchHealth } from "@/api";
+
+export function useHealth() {
+ const healthQuery = useQuery({
+ queryKey: ["health"],
+ queryFn: fetchHealth,
+ refetchInterval: (query) => {
+ // If the server is not healthy, poll every 10ms
+ // Once healthy, stop polling
+ return query.state.data === false ? 10 : false;
+ },
+ refetchIntervalInBackground: true,
+ retry: false, // Don't retry, just return false
+ staleTime: 0, // Always consider stale so we keep polling
+ });
+
+ return {
+ isHealthy: healthQuery.data ?? false,
+ isChecking: healthQuery.isLoading,
+ };
+}
diff --git a/app/ui/app/src/hooks/useMessageAutoscroll.ts b/app/ui/app/src/hooks/useMessageAutoscroll.ts
new file mode 100644
index 000000000..0c980766e
--- /dev/null
+++ b/app/ui/app/src/hooks/useMessageAutoscroll.ts
@@ -0,0 +1,347 @@
+import {
+ useRef,
+ useCallback,
+ useEffect,
+ useLayoutEffect,
+ useState,
+ useMemo,
+} from "react";
+import type { Message } from "@/gotypes";
+
+// warning: this file is all claude code, needs to be looked into more closely
+
+interface UseMessageAutoscrollOptions {
+ messages: Message[];
+ isStreaming: boolean;
+ chatId: string;
+}
+
+interface MessageAutoscrollBehavior {
+ handleNewUserMessage: () => void;
+ containerRef: React.RefObject;
+ spacerHeight: number;
+}
+
+export const useMessageAutoscroll = ({
+ messages,
+ isStreaming,
+ chatId,
+}: UseMessageAutoscrollOptions): MessageAutoscrollBehavior => {
+ const containerRef = useRef(null);
+ const pendingScrollToUserMessage = useRef(false);
+ const [spacerHeight, setSpacerHeight] = useState(0);
+ const lastScrollHeightRef = useRef(0);
+ const lastScrollTopRef = useRef(0);
+ const [isActiveInteraction, setIsActiveInteraction] = useState(false);
+ const [hasSubmittedMessage, setHasSubmittedMessage] = useState(false);
+ const prevChatIdRef = useRef(chatId);
+
+ // Find the last user message index from React state
+ const getLastUserMessageIndex = useCallback(() => {
+ for (let i = messages.length - 1; i >= 0; i--) {
+ if (messages[i].role === "user") {
+ return i;
+ }
+ }
+ return -1;
+ }, [messages]);
+
+ const scrollToMessage = useCallback((messageIndex: number) => {
+ if (!containerRef.current || messageIndex < 0) {
+ return;
+ }
+
+ const container = containerRef.current;
+ // select the exact element by its data-message-index to avoid index mismatches
+ const targetElement = container.querySelector(
+ `[data-message-index="${messageIndex}"]`,
+ ) as HTMLElement | null;
+
+ if (!targetElement) return;
+
+ const containerHeight = container.clientHeight;
+ const containerStyle = window.getComputedStyle(container);
+ const paddingTop = parseFloat(containerStyle.paddingTop) || 0;
+ const scrollHeight = container.scrollHeight;
+ const messageHeight = targetElement.offsetHeight;
+
+ // Check if the message is large, which is 70% of the container height
+ const isLarge = messageHeight > containerHeight * 0.7;
+
+ let targetPosition: number = targetElement.offsetTop - paddingTop; // default to scrolling the message to the top of the window
+
+ if (isLarge) {
+ // when the message is large scroll to the bottom of it
+ targetPosition = scrollHeight - containerHeight;
+ }
+
+ // Ensure we don't scroll past content boundaries
+ const maxScroll = scrollHeight - containerHeight;
+ const finalPosition = Math.min(Math.max(0, targetPosition), maxScroll);
+
+ container.scrollTo({
+ top: finalPosition,
+ behavior: "smooth",
+ });
+ }, []);
+
+ // Calculate and set the spacer height based on container dimensions
+ const updateSpacerHeight = useCallback(() => {
+ if (!containerRef.current) {
+ return;
+ }
+
+ const containerHeight = containerRef.current.clientHeight;
+
+ // Find the last user message to calculate spacer for
+ const lastUserIndex = getLastUserMessageIndex();
+
+ if (lastUserIndex < 0) {
+ setSpacerHeight(0);
+ return;
+ }
+
+ const messageElements = containerRef.current.querySelectorAll(
+ "[data-message-index]",
+ ) as NodeListOf;
+
+ if (!messageElements || messageElements.length === 0) {
+ setSpacerHeight(0);
+ return;
+ }
+
+ const targetElement = containerRef.current.querySelector(
+ `[data-message-index="${lastUserIndex}"]`,
+ ) as HTMLElement | null;
+
+ if (!targetElement) {
+ setSpacerHeight(0);
+ return;
+ }
+
+ const elementsAfter = Array.from(messageElements).filter((el) => {
+ const idx = Number(el.dataset.messageIndex);
+ return Number.isFinite(idx) && idx > lastUserIndex;
+ });
+
+ const contentHeightAfterTarget = elementsAfter.reduce(
+ (sum, el) => sum + el.offsetHeight,
+ 0,
+ );
+
+ // Calculate the spacer height needed to position the user message at the top
+ // Add extra space for assistant response area
+ const targetMessageHeight = targetElement.offsetHeight;
+
+ // Calculate spacer to position the last user message at the top
+ // For new messages, we want them to appear at the top regardless of content after
+ // For large messages, we want to preserve the scroll-to-bottom behavior
+ // which shows part of the message and space for streaming response
+ let baseHeight: number;
+
+ if (contentHeightAfterTarget === 0) {
+ // No content after the user message (new message case)
+ // Position it at the top with some padding
+ baseHeight = Math.max(0, containerHeight - targetMessageHeight);
+ } else {
+ // Content exists after the user message
+ // Calculate spacer to position user message at top
+ baseHeight = Math.max(
+ 0,
+ containerHeight - contentHeightAfterTarget - targetMessageHeight,
+ );
+ }
+
+ // Only apply spacer height when actively interacting (streaming or pending new message)
+ // When just viewing a chat, don't add extra space
+ if (!isActiveInteraction) {
+ setSpacerHeight(0);
+ return;
+ }
+
+ // Add extra space for assistant response only when streaming
+ const extraSpaceForAssistant = isStreaming ? containerHeight * 0.4 : 0;
+ const calculatedHeight = baseHeight + extraSpaceForAssistant;
+
+ setSpacerHeight(calculatedHeight);
+ }, [getLastUserMessageIndex, isStreaming, isActiveInteraction]);
+
+ // Handle new user message submission
+ const handleNewUserMessage = useCallback(() => {
+ // Mark that we're expecting a new message and should scroll to it
+ pendingScrollToUserMessage.current = true;
+ setIsActiveInteraction(true);
+ setHasSubmittedMessage(true);
+ }, []);
+
+ // Use layoutEffect to scroll immediately after DOM updates
+ useLayoutEffect(() => {
+ if (pendingScrollToUserMessage.current) {
+ // Find the last user message from current state
+ const targetUserIndex = getLastUserMessageIndex();
+
+ if (targetUserIndex >= 0) {
+ requestAnimationFrame(() => {
+ updateSpacerHeight();
+ requestAnimationFrame(() => {
+ scrollToMessage(targetUserIndex);
+ pendingScrollToUserMessage.current = false;
+ });
+ });
+ } else {
+ pendingScrollToUserMessage.current = false;
+ // Reset active interaction if no target found
+ setIsActiveInteraction(isStreaming);
+ }
+ }
+ }, [
+ messages,
+ getLastUserMessageIndex,
+ scrollToMessage,
+ updateSpacerHeight,
+ isStreaming,
+ ]);
+
+ // Update active interaction state based on streaming and message submission
+ useEffect(() => {
+ if (
+ isStreaming ||
+ pendingScrollToUserMessage.current ||
+ hasSubmittedMessage
+ ) {
+ setIsActiveInteraction(true);
+ } else {
+ setIsActiveInteraction(false);
+ }
+ }, [isStreaming, hasSubmittedMessage]);
+
+ useEffect(() => {
+ if (prevChatIdRef.current !== chatId) {
+ setIsActiveInteraction(false);
+ setHasSubmittedMessage(false);
+ prevChatIdRef.current = chatId;
+ }
+ }, [chatId]);
+
+ // Recalculate spacer height when messages change
+ useEffect(() => {
+ updateSpacerHeight();
+ }, [messages, updateSpacerHeight]);
+
+ // Use ResizeObserver to handle dynamic content changes
+ useEffect(() => {
+ if (!containerRef.current) return;
+
+ let resizeTimeout: ReturnType;
+ let immediateUpdate = false;
+
+ const resizeObserver = new ResizeObserver((entries) => {
+ // Check if this is a significant height change (like collapsing content)
+ let hasSignificantChange = false;
+ for (const entry of entries) {
+ const element = entry.target as HTMLElement;
+ if (
+ element.dataset.messageIndex &&
+ entry.contentRect.height !== element.offsetHeight
+ ) {
+ const heightDiff = Math.abs(
+ entry.contentRect.height - element.offsetHeight,
+ );
+ if (heightDiff > 50) {
+ hasSignificantChange = true;
+ break;
+ }
+ }
+ }
+
+ // For significant changes, update immediately
+ if (hasSignificantChange || immediateUpdate) {
+ updateSpacerHeight();
+ immediateUpdate = false;
+ } else {
+ // For small changes (like streaming text), debounce
+ clearTimeout(resizeTimeout);
+ resizeTimeout = setTimeout(() => {
+ updateSpacerHeight();
+ }, 100);
+ }
+ });
+
+ // Also use MutationObserver for immediate attribute changes
+ const mutationObserver = new MutationObserver((mutations) => {
+ // Check if any mutations are related to expanding/collapsing
+ const hasToggle = mutations.some(
+ (mutation) =>
+ mutation.type === "attributes" &&
+ (mutation.attributeName === "class" ||
+ mutation.attributeName === "style" ||
+ mutation.attributeName === "open" ||
+ mutation.attributeName === "data-expanded"),
+ );
+
+ if (hasToggle) {
+ immediateUpdate = true;
+ updateSpacerHeight();
+ }
+ });
+
+ // Observe the container and all messages
+ resizeObserver.observe(containerRef.current);
+ mutationObserver.observe(containerRef.current, {
+ attributes: true,
+ subtree: true,
+ attributeFilter: ["class", "style", "open", "data-expanded"],
+ });
+
+ // Observe all message elements for size changes
+ const messageElements = containerRef.current.querySelectorAll(
+ "[data-message-index]",
+ );
+ messageElements.forEach((element) => {
+ resizeObserver.observe(element);
+ });
+
+ return () => {
+ clearTimeout(resizeTimeout);
+ resizeObserver.disconnect();
+ mutationObserver.disconnect();
+ };
+ }, [messages, updateSpacerHeight]);
+
+ // Track scroll position
+ useEffect(() => {
+ if (!containerRef.current) return;
+
+ const container = containerRef.current;
+ const handleScroll = () => {
+ lastScrollTopRef.current = container.scrollTop;
+ lastScrollHeightRef.current = container.scrollHeight;
+ };
+
+ container.addEventListener("scroll", handleScroll);
+
+ // Initialize scroll tracking
+ lastScrollTopRef.current = container.scrollTop;
+ lastScrollHeightRef.current = container.scrollHeight;
+
+ return () => {
+ container.removeEventListener("scroll", handleScroll);
+ };
+ }, []);
+
+ // Cleanup on unmount
+ useEffect(() => {
+ return () => {
+ pendingScrollToUserMessage.current = false;
+ };
+ }, []);
+
+ return useMemo(
+ () => ({
+ handleNewUserMessage,
+ containerRef,
+ spacerHeight,
+ }),
+ [handleNewUserMessage, containerRef, spacerHeight],
+ );
+};
diff --git a/app/ui/app/src/hooks/useModelCapabilities.ts b/app/ui/app/src/hooks/useModelCapabilities.ts
new file mode 100644
index 000000000..5dc03c84a
--- /dev/null
+++ b/app/ui/app/src/hooks/useModelCapabilities.ts
@@ -0,0 +1,22 @@
+import { useQuery } from "@tanstack/react-query";
+import { getModelCapabilities } from "@/api";
+import { ModelCapabilitiesResponse } from "@/gotypes";
+
+export function useModelCapabilities(modelName: string | undefined) {
+ return useQuery({
+ queryKey: ["modelCapabilities", modelName],
+ queryFn: () => {
+ return getModelCapabilities(modelName!);
+ },
+ enabled: !!modelName, // Only run query if modelName is provided
+ gcTime: 60 * 60 * 1000, // Keep in cache for 1 hour
+ staleTime: 60 * 60 * 1000, // Consider data stale after 1 hour
+ retry: 3,
+ retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 5000),
+ });
+}
+
+export function useHasVisionCapability(modelName: string | undefined) {
+ const { data: capabilitiesResponse } = useModelCapabilities(modelName);
+ return capabilitiesResponse?.capabilities?.includes("vision") ?? false;
+}
diff --git a/app/ui/app/src/hooks/useModels.ts b/app/ui/app/src/hooks/useModels.ts
new file mode 100644
index 000000000..10cfdfc91
--- /dev/null
+++ b/app/ui/app/src/hooks/useModels.ts
@@ -0,0 +1,55 @@
+import { useQuery } from "@tanstack/react-query";
+import { Model } from "@/gotypes";
+import { getModels } from "@/api";
+import { mergeModels } from "@/utils/mergeModels";
+import { useSettings } from "./useSettings";
+import { useMemo } from "react";
+
+export function useModels(searchQuery = "") {
+ const { settings } = useSettings();
+ const localQuery = useQuery({
+ queryKey: ["models", searchQuery],
+ queryFn: () => getModels(searchQuery),
+ gcTime: 10 * 60 * 1000, // Keep in cache for 10 minutes
+ retry: 10,
+ // exponential backoff, starting at 100ms and capping at 5s
+ retryDelay: (attemptIndex) => Math.min(100 * 2 ** attemptIndex, 5000),
+ refetchOnWindowFocus: true,
+ refetchInterval: 30 * 1000, // Refetch every 30 seconds to keep models updated
+ refetchIntervalInBackground: true,
+ });
+
+ const allModels = useMemo(() => {
+ const models = mergeModels(localQuery.data || [], settings.airplaneMode);
+
+ if (searchQuery && searchQuery.trim()) {
+ const query = searchQuery.toLowerCase().trim();
+ const filteredModels = models.filter((model) =>
+ model.model.toLowerCase().includes(query),
+ );
+
+ const seen = new Set();
+ return filteredModels.filter((model) => {
+ const currentModel = model.model.toLowerCase();
+ if (seen.has(currentModel)) {
+ return false;
+ }
+ seen.add(currentModel);
+ return true;
+ });
+ }
+
+ return models;
+ }, [localQuery.data, searchQuery, settings.airplaneMode]);
+
+ return {
+ ...localQuery,
+ data: allModels,
+ isLoading: localQuery.isLoading,
+ };
+}
+
+export function useRefetchModels() {
+ const { refetch } = useModels();
+ return refetch;
+}
diff --git a/app/ui/app/src/hooks/useQueryBatcher.ts b/app/ui/app/src/hooks/useQueryBatcher.ts
new file mode 100644
index 000000000..f524223ae
--- /dev/null
+++ b/app/ui/app/src/hooks/useQueryBatcher.ts
@@ -0,0 +1,130 @@
+import { useCallback, useRef } from "react";
+import { useQueryClient, QueryClient } from "@tanstack/react-query";
+
+interface BatcherConfig {
+ batchInterval?: number; // milliseconds, default 8ms (~120fps)
+ immediateFirst?: boolean; // if true, first update is immediate
+}
+
+export const useQueryBatcher = (
+ queryKey: readonly unknown[],
+ config: BatcherConfig = {},
+) => {
+ const queryClient = useQueryClient();
+ const { batchInterval = 8, immediateFirst = false } = config;
+
+ const batchRef = useRef<{
+ updateBatch: T | undefined;
+ batchTimeout: number | null;
+ isFirstUpdate: boolean;
+ }>({
+ updateBatch: undefined,
+ batchTimeout: null,
+ isFirstUpdate: true,
+ });
+
+ const flushBatch = useCallback(() => {
+ const { updateBatch, batchTimeout } = batchRef.current;
+ if (updateBatch) {
+ queryClient.setQueryData(queryKey, updateBatch);
+ batchRef.current.updateBatch = undefined;
+ }
+ if (batchTimeout) {
+ clearTimeout(batchTimeout);
+ batchRef.current.batchTimeout = null;
+ }
+ }, [queryClient, queryKey]);
+
+ const scheduleBatch = useCallback(
+ (updater: (old: T | undefined) => T | undefined) => {
+ const currentData = queryClient.getQueryData(queryKey);
+ const newBatch = updater(batchRef.current.updateBatch || currentData);
+ batchRef.current.updateBatch = newBatch;
+
+ // If this is the first update and immediateFirst is enabled, apply immediately
+ if (immediateFirst && batchRef.current.isFirstUpdate) {
+ batchRef.current.isFirstUpdate = false;
+ queryClient.setQueryData(queryKey, newBatch);
+ batchRef.current.updateBatch = undefined;
+ return;
+ }
+
+ if (batchRef.current.batchTimeout) {
+ clearTimeout(batchRef.current.batchTimeout);
+ }
+ batchRef.current.batchTimeout = setTimeout(flushBatch, batchInterval);
+ },
+ [queryClient, queryKey, flushBatch, batchInterval, immediateFirst],
+ );
+
+ const cleanup = useCallback(() => {
+ if (batchRef.current.batchTimeout) {
+ clearTimeout(batchRef.current.batchTimeout);
+ batchRef.current.batchTimeout = null;
+ }
+ batchRef.current.updateBatch = undefined;
+ batchRef.current.isFirstUpdate = true;
+ }, []);
+
+ return {
+ scheduleBatch,
+ flushBatch,
+ cleanup,
+ };
+};
+
+export const createQueryBatcher = (
+ queryClient: QueryClient,
+ queryKey: readonly unknown[],
+ config: BatcherConfig = {},
+) => {
+ const { batchInterval = 8, immediateFirst = false } = config;
+
+ let updateBatch: T | undefined = undefined;
+ let batchTimeout: number | null = null;
+ let isFirstUpdate = true;
+
+ const flushBatch = () => {
+ if (updateBatch) {
+ queryClient.setQueryData(queryKey, updateBatch);
+ updateBatch = undefined;
+ }
+ if (batchTimeout) {
+ clearTimeout(batchTimeout);
+ batchTimeout = null;
+ }
+ };
+
+ const scheduleBatch = (updater: (old: T | undefined) => T | undefined) => {
+ const currentData = queryClient.getQueryData(queryKey);
+ updateBatch = updater(updateBatch || currentData);
+
+ // If this is the first update and immediateFirst is enabled, apply immediately
+ if (immediateFirst && isFirstUpdate) {
+ isFirstUpdate = false;
+ queryClient.setQueryData(queryKey, updateBatch);
+ updateBatch = undefined;
+ return;
+ }
+
+ if (batchTimeout) {
+ clearTimeout(batchTimeout);
+ }
+ batchTimeout = setTimeout(flushBatch, batchInterval);
+ };
+
+ const cleanup = () => {
+ if (batchTimeout) {
+ clearTimeout(batchTimeout);
+ batchTimeout = null;
+ }
+ updateBatch = undefined;
+ isFirstUpdate = true;
+ };
+
+ return {
+ scheduleBatch,
+ flushBatch,
+ cleanup,
+ };
+};
diff --git a/app/ui/app/src/hooks/useRenameChat.ts b/app/ui/app/src/hooks/useRenameChat.ts
new file mode 100644
index 000000000..b5d315b22
--- /dev/null
+++ b/app/ui/app/src/hooks/useRenameChat.ts
@@ -0,0 +1,20 @@
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { renameChat } from "@/api";
+
+export function useRenameChat() {
+ const queryClient = useQueryClient();
+
+ return useMutation({
+ mutationFn: ({ chatId, title }: { chatId: string; title: string }) =>
+ renameChat(chatId, title),
+ onSuccess: (_, { chatId }) => {
+ // Invalidate and refetch chats list
+ queryClient.invalidateQueries({ queryKey: ["chats"] });
+ // Invalidate the specific chat to update its title
+ queryClient.invalidateQueries({ queryKey: ["chat", chatId] });
+ },
+ onError: (error) => {
+ console.error("Failed to rename chat:", error);
+ },
+ });
+}
diff --git a/app/ui/app/src/hooks/useSelectedModel.ts b/app/ui/app/src/hooks/useSelectedModel.ts
new file mode 100644
index 000000000..57a8c9201
--- /dev/null
+++ b/app/ui/app/src/hooks/useSelectedModel.ts
@@ -0,0 +1,201 @@
+import { useEffect, useMemo, useRef } from "react";
+import { useQuery } from "@tanstack/react-query";
+import { useModels } from "./useModels";
+import { useChat } from "./useChats";
+import { useSettings } from "./useSettings.ts";
+import { Model } from "@/gotypes";
+import { FEATURED_MODELS } from "@/utils/mergeModels";
+import { getTotalVRAM } from "@/utils/vram.ts";
+import { getInferenceCompute } from "@/api";
+
+export function recommendDefaultModel(totalVRAM: number): string {
+ const vram = Math.max(0, Number(totalVRAM) || 0);
+
+ if (vram < 6) {
+ return "gemma3:1b";
+ } else if (vram < 16) {
+ return "gemma3:4b";
+ }
+ return "gpt-oss:20b";
+}
+
+export function useSelectedModel(currentChatId?: string, searchQuery?: string) {
+ const { settings, setSettings } = useSettings();
+ const { data: models = [], isLoading } = useModels(searchQuery || "");
+ const { data: chatData, isLoading: isChatLoading } = useChat(
+ currentChatId && currentChatId !== "new" ? currentChatId : "",
+ );
+
+ const { data: inferenceComputes = [] } = useQuery({
+ queryKey: ["inference-compute"],
+ queryFn: getInferenceCompute,
+ enabled: !settings.selectedModel, // Only fetch if no model is selected
+ });
+
+ const totalVRAM = useMemo(
+ () => getTotalVRAM(inferenceComputes),
+ [inferenceComputes],
+ );
+
+ const recommendedModel = useMemo(
+ () => recommendDefaultModel(totalVRAM),
+ [totalVRAM],
+ );
+
+ // Track which chat we've already restored the model for
+ const restoredChatRef = useRef(null);
+
+ const selectedModel: Model | null = useMemo(() => {
+ // if airplane mode is on and selected model ends with cloud,
+ // switch to recommended default model
+ if (settings.airplaneMode && settings.selectedModel?.endsWith("cloud")) {
+ return (
+ models.find((m) => m.model === recommendedModel) ||
+ models.find((m) => m.isCloud) ||
+ models.find((m) => m.digest === undefined || m.digest === "") ||
+ models[0] ||
+ null
+ );
+ }
+
+ // Migration logic: if turboEnabled is true and selectedModel is a base model,
+ // migrate to the cloud version and disable turboEnabled permanently
+ // TODO: remove this logic in a future release
+ const baseModelsToMigrate = [
+ "gpt-oss:20b",
+ "gpt-oss:120b",
+ "deepseek-v3.1:671b",
+ "qwen3-coder:480b",
+ ];
+ const shouldMigrate =
+ !settings.airplaneMode &&
+ settings.turboEnabled &&
+ baseModelsToMigrate.includes(settings.selectedModel);
+
+ if (shouldMigrate) {
+ const cloudModel = `${settings.selectedModel}cloud`;
+ return (
+ models.find((m) => m.model === cloudModel) ||
+ new Model({
+ model: cloudModel,
+ cloud: true,
+ ollama_host: false,
+ })
+ );
+ }
+
+ return (
+ models.find((m) => m.model === settings.selectedModel) ||
+ (settings.selectedModel &&
+ new Model({
+ model: settings.selectedModel,
+ cloud: FEATURED_MODELS.some(
+ (f) => f.endsWith("cloud") && f === settings.selectedModel,
+ ),
+ ollama_host: false,
+ })) ||
+ null
+ );
+ }, [models, settings.selectedModel, settings.airplaneMode, recommendedModel]);
+
+ useEffect(() => {
+ if (!selectedModel) return;
+
+ if (
+ settings.airplaneMode &&
+ settings.selectedModel?.endsWith("cloud") &&
+ selectedModel.model !== settings.selectedModel
+ ) {
+ setSettings({ SelectedModel: selectedModel.model });
+ }
+
+ if (
+ !settings.airplaneMode &&
+ settings.turboEnabled &&
+ selectedModel.model !== settings.selectedModel
+ ) {
+ setSettings({ SelectedModel: selectedModel.model, TurboEnabled: false });
+ }
+ }, [selectedModel, settings.airplaneMode, settings.selectedModel]);
+
+ // Set model from chat history when chat data loads
+ useEffect(() => {
+ // Only run this effect if we have a valid currentChatId
+ if (!currentChatId || currentChatId === "new") {
+ return;
+ }
+
+ if (
+ chatData?.chat?.messages &&
+ !isChatLoading &&
+ restoredChatRef.current !== currentChatId
+ ) {
+ // Find the most recent model used in this chat
+ const messages = [...chatData.chat.messages].reverse();
+ for (const message of messages) {
+ if (message.model) {
+ const chatModelName = message.model;
+
+ if (chatModelName !== settings.selectedModel) {
+ setSettings({ SelectedModel: chatModelName });
+ }
+
+ // Mark this chat as restored
+ restoredChatRef.current = currentChatId;
+ return;
+ }
+ }
+ // Mark this chat as processed even if no model was found
+ restoredChatRef.current = currentChatId;
+ }
+ }, [
+ currentChatId,
+ chatData,
+ isChatLoading,
+ settings.selectedModel,
+ setSettings,
+ ]);
+
+ // On initial load, if no model is selected, set default model
+ useEffect(() => {
+ if (
+ isLoading ||
+ inferenceComputes.length === 0 ||
+ models.length === 0 ||
+ settings.selectedModel
+ ) {
+ return;
+ }
+
+ const defaultModel =
+ models.find((m) => m.model === recommendedModel) ||
+ models.find((m) => m.isCloud()) ||
+ models.find((m) => m.digest === undefined || m.digest === "") ||
+ models[0];
+
+ if (defaultModel) {
+ setSettings({ SelectedModel: defaultModel.model });
+ }
+ }, [
+ isLoading,
+ inferenceComputes.length,
+ models.length,
+ settings.selectedModel,
+ ]);
+
+ // Add the selected model to the models list if it's not already there
+ const allModels = useMemo(() => {
+ if (!selectedModel || models.find((m) => m.model === selectedModel.model)) {
+ return models;
+ }
+
+ return [...models, selectedModel];
+ }, [models, selectedModel]);
+
+ return {
+ selectedModel,
+ setSettings,
+ models: allModels,
+ loading: isLoading,
+ };
+}
diff --git a/app/ui/app/src/hooks/useSettings.ts b/app/ui/app/src/hooks/useSettings.ts
new file mode 100644
index 000000000..638be3ec7
--- /dev/null
+++ b/app/ui/app/src/hooks/useSettings.ts
@@ -0,0 +1,83 @@
+import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
+import { Settings } from "@/gotypes";
+import { getSettings, updateSettings } from "@/api";
+import { useMemo, useCallback } from "react";
+
+// TODO(hoyyeva): remove turboEnabled when we remove Migration logic in useSelectedModel.ts
+interface SettingsState {
+ turboEnabled: boolean;
+ webSearchEnabled: boolean;
+ selectedModel: string;
+ sidebarOpen: boolean;
+ airplaneMode: boolean;
+ thinkEnabled: boolean;
+ thinkLevel: string;
+}
+
+// Type for partial settings updates
+type SettingsUpdate = Partial<{
+ TurboEnabled: boolean;
+ WebSearchEnabled: boolean;
+ ThinkEnabled: boolean;
+ ThinkLevel: string;
+ SelectedModel: string;
+ SidebarOpen: boolean;
+}>;
+
+export function useSettings() {
+ const queryClient = useQueryClient();
+
+ // Fetch settings with useQuery
+ const { data: settingsData, error } = useQuery({
+ queryKey: ["settings"],
+ queryFn: getSettings,
+ });
+
+ // Update settings with useMutation
+ const updateSettingsMutation = useMutation({
+ mutationFn: updateSettings,
+ onSuccess: () => {
+ // Invalidate the query to ensure fresh data
+ queryClient.invalidateQueries({ queryKey: ["settings"] });
+ },
+ });
+
+ // Extract settings with defaults
+ const settings: SettingsState = useMemo(
+ () => ({
+ turboEnabled: settingsData?.settings?.TurboEnabled ?? false,
+ webSearchEnabled: settingsData?.settings?.WebSearchEnabled ?? false,
+ thinkEnabled: settingsData?.settings?.ThinkEnabled ?? false,
+ thinkLevel: settingsData?.settings?.ThinkLevel ?? "none",
+ selectedModel: settingsData?.settings?.SelectedModel ?? "",
+ sidebarOpen: settingsData?.settings?.SidebarOpen ?? false,
+ airplaneMode: settingsData?.settings?.AirplaneMode ?? false,
+ }),
+ [settingsData?.settings],
+ );
+
+ // Single function to update most settings
+ const setSettings = useCallback(
+ async (updates: SettingsUpdate) => {
+ if (!settingsData?.settings) return;
+
+ const updatedSettings = new Settings({
+ ...settingsData.settings,
+ ...updates,
+ });
+
+ await updateSettingsMutation.mutateAsync(updatedSettings);
+ },
+ [settingsData?.settings, updateSettingsMutation],
+ );
+
+ return useMemo(
+ () => ({
+ settings,
+ settingsData: settingsData?.settings,
+ error,
+ setSettings,
+ }),
+ [settings, settingsData?.settings, error, setSettings],
+ );
+}
diff --git a/app/ui/app/src/hooks/useUser.ts b/app/ui/app/src/hooks/useUser.ts
new file mode 100644
index 000000000..b4e6698eb
--- /dev/null
+++ b/app/ui/app/src/hooks/useUser.ts
@@ -0,0 +1,59 @@
+import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
+import { fetchUser, fetchConnectUrl, disconnectUser } from "@/api";
+
+export function useUser() {
+ const queryClient = useQueryClient();
+
+ const userQuery = useQuery({
+ queryKey: ["user"],
+ queryFn: async () => {
+ const result = await fetchUser();
+ return result;
+ },
+ staleTime: 5 * 60 * 1000, // Consider data stale after 5 minutes
+ gcTime: 10 * 60 * 1000, // Keep in cache for 10 minutes
+ retry: 10,
+ retryDelay: (attemptIndex) => Math.min(500 * attemptIndex, 2000),
+ refetchOnMount: true, // Always fetch when component mounts
+ });
+
+ // Mutation to refresh user data
+ const refreshUser = useMutation({
+ mutationFn: () => fetchUser(),
+ onSuccess: (data) => {
+ queryClient.setQueryData(["user"], data);
+ },
+ });
+
+ // Query for connect URL (only fetched when needed)
+ const connectUrlQuery = useQuery({
+ queryKey: ["connectUrl"],
+ queryFn: fetchConnectUrl,
+ enabled: false, // Don't fetch automatically
+ staleTime: Infinity, // Connect URL doesn't change
+ });
+
+ const disconnectMutation = useMutation({
+ mutationFn: disconnectUser,
+ onSuccess: () => {
+ queryClient.setQueryData(["user"], null);
+ },
+ });
+
+ const isLoading = userQuery.isLoading || userQuery.isFetching;
+ const isAuthenticated = Boolean(userQuery.data?.name);
+
+ return {
+ user: userQuery.data,
+ isLoading,
+ isError: userQuery.isError,
+ error: userQuery.error,
+ isAuthenticated,
+ refreshUser: refreshUser.mutate,
+ isRefreshing: refreshUser.isPending,
+ refetchUser: userQuery.refetch,
+ fetchConnectUrl: connectUrlQuery.refetch,
+ connectUrl: connectUrlQuery.data,
+ disconnectUser: disconnectMutation.mutate,
+ };
+}
diff --git a/app/ui/app/src/index.css b/app/ui/app/src/index.css
new file mode 100644
index 000000000..af1f265dc
--- /dev/null
+++ b/app/ui/app/src/index.css
@@ -0,0 +1,30 @@
+@import "tailwindcss";
+@plugin "@tailwindcss/typography";
+@import "katex/dist/katex.min.css";
+
+@theme {
+ --font-sans: ui-sans-serif, system-ui, "Segoe UI", sans-serif;
+ --font-rounded:
+ "SF Pro Rounded", ui-sans-serif, system-ui, "Segoe UI", sans-serif;
+}
+
+@media (prefers-color-scheme: dark) {
+ /* Dark mode styles go here */
+ :root {
+ /* Example dark mode variables */
+ --bg-color: #1a1a1a;
+ --text-color: #ffffff;
+ }
+}
+
+/* messaging-style typing indicator animation */
+@keyframes typing {
+ 0%,
+ 60%,
+ 100% {
+ opacity: 0;
+ }
+ 30% {
+ opacity: 1;
+ }
+}
diff --git a/app/ui/app/src/lib/config.ts b/app/ui/app/src/lib/config.ts
new file mode 100644
index 000000000..7c5385d74
--- /dev/null
+++ b/app/ui/app/src/lib/config.ts
@@ -0,0 +1,13 @@
+// API configuration
+const DEV_API_URL = "http://127.0.0.1:3001";
+
+// Base URL for fetch API calls (can be relative in production)
+export const API_BASE = import.meta.env.DEV ? DEV_API_URL : "";
+
+// Full host URL for Ollama client (needs full origin in production)
+export const OLLAMA_HOST = import.meta.env.DEV
+ ? DEV_API_URL
+ : window.location.origin;
+
+export const OLLAMA_DOT_COM =
+ import.meta.env.VITE_OLLAMA_DOT_COM_URL || "https://ollama.com";
diff --git a/app/ui/app/src/lib/highlighter.ts b/app/ui/app/src/lib/highlighter.ts
new file mode 100644
index 000000000..2912fb358
--- /dev/null
+++ b/app/ui/app/src/lib/highlighter.ts
@@ -0,0 +1,157 @@
+import { createHighlighter } from "shiki";
+import type { ThemeRegistration } from "shiki";
+
+const oneLightTheme: ThemeRegistration = {
+ name: "one-light",
+ type: "light",
+ colors: {
+ "editor.background": "#fafafa",
+ "editor.foreground": "#383a42",
+ },
+ tokenColors: [
+ {
+ scope: ["comment", "punctuation.definition.comment"],
+ settings: { foreground: "#a0a1a7" },
+ },
+ {
+ scope: ["keyword", "storage.type", "storage.modifier"],
+ settings: { foreground: "#a626a4" },
+ },
+ { scope: ["string", "string.quoted"], settings: { foreground: "#50a14f" } },
+ {
+ scope: ["function", "entity.name.function", "support.function"],
+ settings: { foreground: "#4078f2" },
+ },
+ {
+ scope: [
+ "constant.numeric",
+ "constant.language",
+ "constant.character",
+ "number",
+ ],
+ settings: { foreground: "#c18401" },
+ },
+ {
+ scope: ["variable", "support.variable"],
+ settings: { foreground: "#e45649" },
+ },
+ {
+ scope: ["entity.name.tag", "entity.name.type", "entity.name.class"],
+ settings: { foreground: "#e45649" },
+ },
+ {
+ scope: ["entity.other.attribute-name"],
+ settings: { foreground: "#c18401" },
+ },
+ {
+ scope: ["keyword.operator", "operator"],
+ settings: { foreground: "#a626a4" },
+ },
+ { scope: ["punctuation"], settings: { foreground: "#383a42" } },
+ {
+ scope: ["markup.heading"],
+ settings: { foreground: "#e45649", fontStyle: "bold" },
+ },
+ {
+ scope: ["markup.bold"],
+ settings: { foreground: "#c18401", fontStyle: "bold" },
+ },
+ {
+ scope: ["markup.italic"],
+ settings: { foreground: "#a626a4", fontStyle: "italic" },
+ },
+ ],
+};
+
+const oneDarkTheme: ThemeRegistration = {
+ name: "one-dark",
+ type: "dark",
+ colors: {
+ "editor.background": "#282c34",
+ "editor.foreground": "#abb2bf",
+ },
+ tokenColors: [
+ {
+ scope: ["comment", "punctuation.definition.comment"],
+ settings: { foreground: "#5c6370" },
+ },
+ {
+ scope: ["keyword", "storage.type", "storage.modifier"],
+ settings: { foreground: "#c678dd" },
+ },
+ { scope: ["string", "string.quoted"], settings: { foreground: "#98c379" } },
+ {
+ scope: ["function", "entity.name.function", "support.function"],
+ settings: { foreground: "#61afef" },
+ },
+ {
+ scope: [
+ "constant.numeric",
+ "constant.language",
+ "constant.character",
+ "number",
+ ],
+ settings: { foreground: "#d19a66" },
+ },
+ {
+ scope: ["variable", "support.variable"],
+ settings: { foreground: "#e06c75" },
+ },
+ {
+ scope: ["entity.name.tag", "entity.name.type", "entity.name.class"],
+ settings: { foreground: "#e06c75" },
+ },
+ {
+ scope: ["entity.other.attribute-name"],
+ settings: { foreground: "#d19a66" },
+ },
+ {
+ scope: ["keyword.operator", "operator"],
+ settings: { foreground: "#c678dd" },
+ },
+ { scope: ["punctuation"], settings: { foreground: "#abb2bf" } },
+ {
+ scope: ["markup.heading"],
+ settings: { foreground: "#e06c75", fontStyle: "bold" },
+ },
+ {
+ scope: ["markup.bold"],
+ settings: { foreground: "#d19a66", fontStyle: "bold" },
+ },
+ {
+ scope: ["markup.italic"],
+ settings: { foreground: "#c678dd", fontStyle: "italic" },
+ },
+ ],
+};
+
+export let highlighter: Awaited> | null =
+ null;
+
+export const highlighterPromise = createHighlighter({
+ themes: [oneLightTheme, oneDarkTheme],
+ langs: [
+ "javascript",
+ "typescript",
+ "python",
+ "bash",
+ "shell",
+ "json",
+ "html",
+ "css",
+ "tsx",
+ "jsx",
+ "go",
+ "rust",
+ "java",
+ "c",
+ "cpp",
+ "sql",
+ "swift",
+ "yaml",
+ "markdown",
+ ],
+}).then((h) => {
+ highlighter = h;
+ return h;
+});
diff --git a/app/ui/app/src/lib/ollama-client.ts b/app/ui/app/src/lib/ollama-client.ts
new file mode 100644
index 000000000..50915a0ba
--- /dev/null
+++ b/app/ui/app/src/lib/ollama-client.ts
@@ -0,0 +1,16 @@
+import { Ollama } from "ollama/browser";
+import { OLLAMA_HOST } from "./config";
+
+let _ollamaClient: Ollama | null = null;
+
+export const ollamaClient = new Proxy({} as Ollama, {
+ get(_target, prop) {
+ if (!_ollamaClient) {
+ _ollamaClient = new Ollama({
+ host: OLLAMA_HOST,
+ });
+ }
+ const value = _ollamaClient[prop as keyof Ollama];
+ return typeof value === "function" ? value.bind(_ollamaClient) : value;
+ },
+});
diff --git a/app/ui/app/src/main.tsx b/app/ui/app/src/main.tsx
new file mode 100644
index 000000000..3e325a3ca
--- /dev/null
+++ b/app/ui/app/src/main.tsx
@@ -0,0 +1,50 @@
+import { StrictMode } from "react";
+import ReactDOM from "react-dom/client";
+import { RouterProvider, createRouter } from "@tanstack/react-router";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { routeTree } from "./routeTree.gen";
+import { fetchUser } from "./api";
+import { StreamingProvider } from "./contexts/StreamingContext";
+
+const queryClient = new QueryClient({
+ defaultOptions: {
+ mutations: {
+ networkMode: "always", // Run mutations regardless of network state
+ },
+ queries: {
+ networkMode: "always", // Allow queries even when offline (local server)
+ },
+ },
+});
+
+fetchUser().then((userData) => {
+ if (userData) {
+ queryClient.setQueryData(["user"], userData);
+ }
+});
+
+const router = createRouter({
+ routeTree,
+ context: { queryClient },
+});
+
+// Register the router instance for type safety
+declare module "@tanstack/react-router" {
+ interface Register {
+ router: typeof router;
+ }
+}
+
+const rootElement = document.getElementById("root")!;
+if (!rootElement.innerHTML) {
+ const root = ReactDOM.createRoot(rootElement);
+ root.render(
+
+
+
+
+
+
+ ,
+ );
+}
diff --git a/app/ui/app/src/routeTree.gen.ts b/app/ui/app/src/routeTree.gen.ts
new file mode 100644
index 000000000..e5caa3f63
--- /dev/null
+++ b/app/ui/app/src/routeTree.gen.ts
@@ -0,0 +1,134 @@
+/* eslint-disable */
+
+// @ts-nocheck
+
+// noinspection JSUnusedGlobalSymbols
+
+// This file was automatically generated by TanStack Router.
+// You should NOT make any changes in this file as it will be overwritten.
+// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
+
+// Import Routes
+
+import { Route as rootRoute } from './routes/__root'
+import { Route as SettingsImport } from './routes/settings'
+import { Route as IndexImport } from './routes/index'
+import { Route as CChatIdImport } from './routes/c.$chatId'
+
+// Create/Update Routes
+
+const SettingsRoute = SettingsImport.update({
+ id: '/settings',
+ path: '/settings',
+ getParentRoute: () => rootRoute,
+} as any)
+
+const IndexRoute = IndexImport.update({
+ id: '/',
+ path: '/',
+ getParentRoute: () => rootRoute,
+} as any)
+
+const CChatIdRoute = CChatIdImport.update({
+ id: '/c/$chatId',
+ path: '/c/$chatId',
+ getParentRoute: () => rootRoute,
+} as any)
+
+// Populate the FileRoutesByPath interface
+
+declare module '@tanstack/react-router' {
+ interface FileRoutesByPath {
+ '/': {
+ id: '/'
+ path: '/'
+ fullPath: '/'
+ preLoaderRoute: typeof IndexImport
+ parentRoute: typeof rootRoute
+ }
+ '/settings': {
+ id: '/settings'
+ path: '/settings'
+ fullPath: '/settings'
+ preLoaderRoute: typeof SettingsImport
+ parentRoute: typeof rootRoute
+ }
+ '/c/$chatId': {
+ id: '/c/$chatId'
+ path: '/c/$chatId'
+ fullPath: '/c/$chatId'
+ preLoaderRoute: typeof CChatIdImport
+ parentRoute: typeof rootRoute
+ }
+ }
+}
+
+// Create and export the route tree
+
+export interface FileRoutesByFullPath {
+ '/': typeof IndexRoute
+ '/settings': typeof SettingsRoute
+ '/c/$chatId': typeof CChatIdRoute
+}
+
+export interface FileRoutesByTo {
+ '/': typeof IndexRoute
+ '/settings': typeof SettingsRoute
+ '/c/$chatId': typeof CChatIdRoute
+}
+
+export interface FileRoutesById {
+ __root__: typeof rootRoute
+ '/': typeof IndexRoute
+ '/settings': typeof SettingsRoute
+ '/c/$chatId': typeof CChatIdRoute
+}
+
+export interface FileRouteTypes {
+ fileRoutesByFullPath: FileRoutesByFullPath
+ fullPaths: '/' | '/settings' | '/c/$chatId'
+ fileRoutesByTo: FileRoutesByTo
+ to: '/' | '/settings' | '/c/$chatId'
+ id: '__root__' | '/' | '/settings' | '/c/$chatId'
+ fileRoutesById: FileRoutesById
+}
+
+export interface RootRouteChildren {
+ IndexRoute: typeof IndexRoute
+ SettingsRoute: typeof SettingsRoute
+ CChatIdRoute: typeof CChatIdRoute
+}
+
+const rootRouteChildren: RootRouteChildren = {
+ IndexRoute: IndexRoute,
+ SettingsRoute: SettingsRoute,
+ CChatIdRoute: CChatIdRoute,
+}
+
+export const routeTree = rootRoute
+ ._addFileChildren(rootRouteChildren)
+ ._addFileTypes()
+
+/* ROUTE_MANIFEST_START
+{
+ "routes": {
+ "__root__": {
+ "filePath": "__root.tsx",
+ "children": [
+ "/",
+ "/settings",
+ "/c/$chatId"
+ ]
+ },
+ "/": {
+ "filePath": "index.tsx"
+ },
+ "/settings": {
+ "filePath": "settings.tsx"
+ },
+ "/c/$chatId": {
+ "filePath": "c.$chatId.tsx"
+ }
+ }
+}
+ROUTE_MANIFEST_END */
diff --git a/app/ui/app/src/routes/__root.tsx b/app/ui/app/src/routes/__root.tsx
new file mode 100644
index 000000000..25da49912
--- /dev/null
+++ b/app/ui/app/src/routes/__root.tsx
@@ -0,0 +1,24 @@
+import type { QueryClient } from "@tanstack/react-query";
+import { createRootRouteWithContext, Outlet } from "@tanstack/react-router";
+import { getSettings } from "@/api";
+import { useQuery } from "@tanstack/react-query";
+
+function RootComponent() {
+ // This hook ensures settings are fetched on app startup
+ useQuery({
+ queryKey: ["settings"],
+ queryFn: getSettings,
+ });
+
+ return (
+
+
+
+ );
+}
+
+export const Route = createRootRouteWithContext<{
+ queryClient: QueryClient;
+}>()({
+ component: RootComponent,
+});
diff --git a/app/ui/app/src/routes/c.$chatId.tsx b/app/ui/app/src/routes/c.$chatId.tsx
new file mode 100644
index 000000000..323251af8
--- /dev/null
+++ b/app/ui/app/src/routes/c.$chatId.tsx
@@ -0,0 +1,71 @@
+import { createFileRoute } from "@tanstack/react-router";
+import { useChat } from "@/hooks/useChats";
+import Chat from "@/components/Chat";
+import { getChat } from "@/api";
+import { SidebarLayout } from "@/components/layout/layout";
+import { ChatSidebar } from "@/components/ChatSidebar";
+
+export const Route = createFileRoute("/c/$chatId")({
+ component: RouteComponent,
+ loader: async ({ context, params }) => {
+ // Skip loading for "new" chat
+ if (params.chatId !== "new") {
+ context.queryClient.ensureQueryData({
+ queryKey: ["chat", params.chatId],
+ queryFn: () => getChat(params.chatId),
+ staleTime: 1500,
+ });
+ }
+ },
+});
+
+function RouteComponent() {
+ const { chatId } = Route.useParams();
+
+ // Always call hooks at the top level - use a flag to skip data when chatId is "new"
+ const {
+ data: chatData,
+ isLoading: chatLoading,
+ error: chatError,
+ } = useChat(chatId === "new" ? "" : chatId);
+
+ // Handle "new" chat case - just use Chat component which handles everything
+ if (chatId === "new") {
+ return (
+ }>
+
+
+ );
+ }
+
+ // Handle existing chat case
+ if (chatLoading) {
+ return (
+ }>
+ Loading chat...
+
+ );
+ }
+
+ if (chatError) {
+ return (
+ }>
+ Error loading chat
+
+ );
+ }
+
+ if (!chatData) {
+ return (
+ }>
+ Chat not found
+
+ );
+ }
+
+ return (
+ }>
+
+
+ );
+}
diff --git a/app/ui/app/src/routes/index.tsx b/app/ui/app/src/routes/index.tsx
new file mode 100644
index 000000000..303dde536
--- /dev/null
+++ b/app/ui/app/src/routes/index.tsx
@@ -0,0 +1,13 @@
+import { createFileRoute, redirect } from "@tanstack/react-router";
+
+export const Route = createFileRoute("/")({
+ beforeLoad: () => {
+ throw redirect({
+ to: "/c/$chatId",
+ params: { chatId: "new" },
+ mask: {
+ to: "/",
+ },
+ });
+ },
+});
diff --git a/app/ui/app/src/routes/settings.tsx b/app/ui/app/src/routes/settings.tsx
new file mode 100644
index 000000000..6ae232ae7
--- /dev/null
+++ b/app/ui/app/src/routes/settings.tsx
@@ -0,0 +1,6 @@
+import { createFileRoute } from "@tanstack/react-router";
+import Settings from "@/components/Settings";
+
+export const Route = createFileRoute("/settings")({
+ component: Settings,
+});
diff --git a/app/ui/app/src/types/webview.d.ts b/app/ui/app/src/types/webview.d.ts
new file mode 100644
index 000000000..ca962f77a
--- /dev/null
+++ b/app/ui/app/src/types/webview.d.ts
@@ -0,0 +1,49 @@
+// Type declarations for webview API functions
+
+interface ImageData {
+ filename: string;
+ path: string;
+ dataURL: string; // base64 encoded file data
+}
+
+interface MenuItem {
+ label: string;
+ enabled?: boolean;
+ separator?: boolean;
+}
+
+interface WebviewAPI {
+ selectFile: () => Promise;
+ selectMultipleFiles: () => Promise;
+ selectModelsDirectory: () => Promise;
+ selectWorkingDirectory: () => Promise;
+}
+
+declare global {
+ interface Window {
+ webview?: WebviewAPI;
+ drag?: () => void;
+ doubleClick?: () => void;
+ menu: (items: MenuItem[]) => Promise;
+ OLLAMA_TOOLS?: boolean;
+ OLLAMA_WEBSEARCH?: boolean;
+ }
+
+ namespace JSX {
+ interface IntrinsicElements {
+ input: React.DetailedHTMLProps<
+ React.InputHTMLAttributes & {
+ webkitdirectory?: string;
+ directory?: string;
+ },
+ HTMLInputElement
+ >;
+ }
+ }
+
+ interface File {
+ readonly webkitRelativePath: string;
+ }
+}
+
+export type { ImageData, WebviewAPI, ContextMenuItem, ContextMenuResult };
diff --git a/app/ui/app/src/util/jsonl-parsing.ts b/app/ui/app/src/util/jsonl-parsing.ts
new file mode 100644
index 000000000..afd2ad6d0
--- /dev/null
+++ b/app/ui/app/src/util/jsonl-parsing.ts
@@ -0,0 +1,57 @@
+export async function* parseJsonlFromStream(
+ stream: ReadableStream,
+): AsyncGenerator {
+ const reader = stream.getReader();
+ const decoder = new TextDecoder();
+ let buffer = "";
+
+ try {
+ while (true) {
+ const { done, value } = await reader.read();
+
+ if (done) {
+ // Process any remaining data in buffer
+ if (buffer.trim()) {
+ try {
+ yield JSON.parse(buffer.trim());
+ } catch (error) {
+ console.error(`Failed to parse final buffer: ${buffer}`, error);
+ }
+ }
+ break;
+ }
+
+ // Decode the chunk and add to buffer
+ buffer += decoder.decode(value, { stream: true });
+
+ // Process complete lines
+ const lines = buffer.split("\n");
+ buffer = lines.pop() || ""; // Keep incomplete line in buffer
+
+ for (const line of lines) {
+ const trimmed = line.trim();
+ if (trimmed) {
+ try {
+ yield JSON.parse(trimmed);
+ } catch (error) {
+ console.error(`Failed to parse line: ${trimmed}`, error);
+ }
+ }
+ }
+ }
+ } finally {
+ reader.releaseLock();
+ }
+}
+
+/**
+ * Helper function to parse JSONL from a Response object
+ */
+export async function* parseJsonlFromResponse(
+ response: Response,
+): AsyncGenerator {
+ if (!response.body) {
+ throw new Error("Response body is null");
+ }
+ yield* parseJsonlFromStream(response.body);
+}
diff --git a/app/ui/app/src/utils/fileValidation.test.ts b/app/ui/app/src/utils/fileValidation.test.ts
new file mode 100644
index 000000000..94798cf2e
--- /dev/null
+++ b/app/ui/app/src/utils/fileValidation.test.ts
@@ -0,0 +1,97 @@
+import { describe, it, expect } from "vitest";
+import { IMAGE_EXTENSIONS, validateFile } from "./fileValidation";
+
+describe("fileValidation", () => {
+ describe("IMAGE_EXTENSIONS", () => {
+ it("should include all supported image formats including WebP", () => {
+ expect(IMAGE_EXTENSIONS).toContain("png");
+ expect(IMAGE_EXTENSIONS).toContain("jpg");
+ expect(IMAGE_EXTENSIONS).toContain("jpeg");
+ expect(IMAGE_EXTENSIONS).toContain("webp");
+ });
+ });
+
+ describe("validateFile", () => {
+ const createMockFile = (
+ name: string,
+ size: number,
+ type: string,
+ ): File => {
+ const blob = new Blob(["test content"], { type });
+ return new File([blob], name, { type });
+ };
+
+ it("should accept WebP images when vision capability is enabled", () => {
+ const file = createMockFile("test.webp", 1024, "image/webp");
+ const result = validateFile(file, {
+ hasVisionCapability: true,
+ });
+ expect(result.valid).toBe(true);
+ });
+
+ it("should reject WebP images when vision capability is disabled", () => {
+ const file = createMockFile("test.webp", 1024, "image/webp");
+ const result = validateFile(file, {
+ hasVisionCapability: false,
+ });
+ expect(result.valid).toBe(false);
+ expect(result.error).toBe("This model does not support images");
+ });
+
+ it("should accept PNG images when vision capability is enabled", () => {
+ const file = createMockFile("test.png", 1024, "image/png");
+ const result = validateFile(file, {
+ hasVisionCapability: true,
+ });
+ expect(result.valid).toBe(true);
+ });
+
+ it("should accept JPEG images when vision capability is enabled", () => {
+ const file = createMockFile("test.jpg", 1024, "image/jpeg");
+ const result = validateFile(file, {
+ hasVisionCapability: true,
+ });
+ expect(result.valid).toBe(true);
+ });
+
+ it("should reject files that are too large", () => {
+ // Create a file with size property set correctly
+ const largeSize = 11 * 1024 * 1024; // 11MB
+ const content = new Uint8Array(largeSize);
+ const blob = new Blob([content], { type: "image/webp" });
+ const file = new File([blob], "large.webp", { type: "image/webp" });
+
+ const result = validateFile(file, {
+ hasVisionCapability: true,
+ maxFileSize: 10, // 10MB limit
+ });
+ expect(result.valid).toBe(false);
+ expect(result.error).toBe("File too large");
+ });
+
+ it("should reject unsupported file types", () => {
+ const file = createMockFile("test.xyz", 1024, "application/xyz");
+ const result = validateFile(file, {
+ hasVisionCapability: true,
+ });
+ expect(result.valid).toBe(false);
+ expect(result.error).toBe("File type not supported");
+ });
+
+ it("should respect custom validators", () => {
+ const file = createMockFile("test.webp", 1024, "image/webp");
+ const result = validateFile(file, {
+ hasVisionCapability: true,
+ customValidator: () => ({
+ valid: false,
+ error: "Custom error",
+ }),
+ });
+ expect(result.valid).toBe(false);
+ expect(result.error).toBe("Custom error");
+ });
+ });
+
+ // Note: processFiles tests are skipped because FileReader is not available in the Node.js test environment
+ // These functions are tested in browser environment via integration tests
+});
diff --git a/app/ui/app/src/utils/fileValidation.ts b/app/ui/app/src/utils/fileValidation.ts
new file mode 100644
index 000000000..047aa9984
--- /dev/null
+++ b/app/ui/app/src/utils/fileValidation.ts
@@ -0,0 +1,154 @@
+import { Model } from "@/gotypes";
+// Shared file validation logic used by both FileUpload and native dialog selection
+
+export const TEXT_FILE_EXTENSIONS = [
+ "pdf",
+ "docx",
+ "txt",
+ "md",
+ "csv",
+ "json",
+ "xml",
+ "html",
+ "htm",
+ "js",
+ "jsx",
+ "ts",
+ "tsx",
+ "py",
+ "java",
+ "cpp",
+ "c",
+ "cc",
+ "h",
+ "cs",
+ "php",
+ "rb",
+ "go",
+ "rs",
+ "swift",
+ "kt",
+ "scala",
+ "sh",
+ "bat",
+ "yaml",
+ "yml",
+ "toml",
+ "ini",
+ "cfg",
+ "conf",
+ "log",
+ "rtf",
+];
+
+export const IMAGE_EXTENSIONS = ["png", "jpg", "jpeg", "webp"];
+
+export interface FileValidationOptions {
+ maxFileSize?: number; // in MB
+ allowedExtensions?: string[];
+ hasVisionCapability?: boolean;
+ selectedModel?: Model | null;
+ customValidator?: (file: File) => { valid: boolean; error?: string };
+}
+
+export interface ValidationResult {
+ valid: boolean;
+ error?: string;
+}
+
+export function validateFile(
+ file: File,
+ options: FileValidationOptions = {},
+): ValidationResult {
+ const {
+ maxFileSize = 10,
+ allowedExtensions = [...TEXT_FILE_EXTENSIONS, ...IMAGE_EXTENSIONS],
+ hasVisionCapability = false,
+ customValidator,
+ } = options;
+
+ const MAX_FILE_SIZE = maxFileSize * 1024 * 1024; // Convert MB to bytes
+ const fileExtension = file.name.toLowerCase().split(".").pop();
+
+ // Custom validation first
+ if (customValidator) {
+ const customResult = customValidator(file);
+ if (!customResult.valid) {
+ return customResult;
+ }
+ }
+
+ // File extension validation
+ if (!fileExtension || !allowedExtensions.includes(fileExtension)) {
+ return { valid: false, error: "File type not supported" };
+ }
+
+ if (IMAGE_EXTENSIONS.includes(fileExtension) && !hasVisionCapability) {
+ return { valid: false, error: "This model does not support images" };
+ }
+
+ // File size validation
+ if (file.size > MAX_FILE_SIZE) {
+ return { valid: false, error: "File too large" };
+ }
+
+ return { valid: true };
+}
+
+// Helper function to read file as Uint8Array
+export function readFileAsBytes(file: File): Promise {
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader();
+ reader.onload = () => {
+ const arrayBuffer = reader.result as ArrayBuffer;
+ resolve(new Uint8Array(arrayBuffer));
+ };
+ reader.onerror = () => reject(reader.error);
+ reader.readAsArrayBuffer(file);
+ });
+}
+
+// Process multiple files with validation
+export async function processFiles(
+ files: File[],
+ options: FileValidationOptions = {},
+): Promise<{
+ validFiles: Array<{ filename: string; data: Uint8Array; type?: string }>;
+ errors: Array<{ filename: string; error: string }>;
+}> {
+ const validFiles: Array<{
+ filename: string;
+ data: Uint8Array;
+ type?: string;
+ }> = [];
+ const errors: Array<{ filename: string; error: string }> = [];
+
+ for (const file of files) {
+ const validation = validateFile(file, options);
+
+ if (!validation.valid) {
+ errors.push({
+ filename: file.name,
+ error: validation.error || "File validation failed",
+ });
+ continue;
+ }
+
+ try {
+ const fileBytes = await readFileAsBytes(file);
+ validFiles.push({
+ filename: file.name,
+ data: fileBytes,
+ type: file.type || undefined,
+ });
+ } catch (error) {
+ console.error(`Error reading file ${file.name}:`, error);
+ errors.push({
+ filename: file.name,
+ error: "Error reading file",
+ });
+ }
+ }
+
+ return { validFiles, errors };
+}
diff --git a/app/ui/app/src/utils/imageUtils.ts b/app/ui/app/src/utils/imageUtils.ts
new file mode 100644
index 000000000..5839c6070
--- /dev/null
+++ b/app/ui/app/src/utils/imageUtils.ts
@@ -0,0 +1,4 @@
+export function isImageFile(filename: string): boolean {
+ const extension = filename.toLowerCase().split(".").pop();
+ return ["png", "jpg", "jpeg", "gif", "webp"].includes(extension || "");
+}
diff --git a/app/ui/app/src/utils/mergeModels.test.ts b/app/ui/app/src/utils/mergeModels.test.ts
new file mode 100644
index 000000000..90092182a
--- /dev/null
+++ b/app/ui/app/src/utils/mergeModels.test.ts
@@ -0,0 +1,128 @@
+import { describe, it, expect } from "vitest";
+import { Model } from "@/gotypes";
+import { mergeModels, FEATURED_MODELS } from "@/utils/mergeModels";
+import "@/api";
+
+describe("Model merging logic", () => {
+ it("should handle cloud models with -cloud suffix", () => {
+ const localModels: Model[] = [
+ new Model({ model: "gpt-oss:120b-cloud" }),
+ new Model({ model: "llama3:latest" }),
+ new Model({ model: "mistral:latest" }),
+ ];
+
+ const merged = mergeModels(localModels);
+
+ // First verify cloud models are first and in FEATURED_MODELS order
+ const cloudModels = FEATURED_MODELS.filter((m: string) =>
+ m.endsWith("cloud"),
+ );
+ for (let i = 0; i < cloudModels.length; i++) {
+ expect(merged[i].model).toBe(cloudModels[i]);
+ expect(merged[i].isCloud()).toBe(true);
+ }
+
+ // Then verify non-cloud featured models are next and in FEATURED_MODELS order
+ const nonCloudFeatured = FEATURED_MODELS.filter(
+ (m: string) => !m.endsWith("cloud"),
+ );
+ for (let i = 0; i < nonCloudFeatured.length; i++) {
+ const model = merged[i + cloudModels.length];
+ expect(model.model).toBe(nonCloudFeatured[i]);
+ expect(model.isCloud()).toBe(false);
+ }
+
+ // Verify local models are preserved and come after featured models
+ const featuredCount = FEATURED_MODELS.length;
+ expect(merged[featuredCount].model).toBe("llama3:latest");
+ expect(merged[featuredCount + 1].model).toBe("mistral:latest");
+
+ // Length should be exactly featured models plus our local models
+ expect(merged.length).toBe(FEATURED_MODELS.length + 2);
+ });
+
+ it("should hide cloud models in airplane mode", () => {
+ const localModels: Model[] = [
+ new Model({ model: "gpt-oss:120b-cloud" }),
+ new Model({ model: "llama3:latest" }),
+ new Model({ model: "mistral:latest" }),
+ ];
+
+ const merged = mergeModels(localModels, true); // airplane mode = true
+
+ // No cloud models should be present
+ const cloudModels = merged.filter((m) => m.isCloud());
+ expect(cloudModels.length).toBe(0);
+
+ // Should have non-cloud featured models
+ const nonCloudFeatured = FEATURED_MODELS.filter(
+ (m) => !m.endsWith("cloud"),
+ );
+ for (let i = 0; i < nonCloudFeatured.length; i++) {
+ const model = merged[i];
+ expect(model.model).toBe(nonCloudFeatured[i]);
+ expect(model.isCloud()).toBe(false);
+ }
+
+ // Local models should be preserved
+ const featuredCount = nonCloudFeatured.length;
+ expect(merged[featuredCount].model).toBe("llama3:latest");
+ expect(merged[featuredCount + 1].model).toBe("mistral:latest");
+ });
+
+ it("should handle empty input", () => {
+ const merged = mergeModels([]);
+
+ // First verify cloud models are first and in FEATURED_MODELS order
+ const cloudModels = FEATURED_MODELS.filter((m) => m.endsWith("cloud"));
+ for (let i = 0; i < cloudModels.length; i++) {
+ expect(merged[i].model).toBe(cloudModels[i]);
+ expect(merged[i].isCloud()).toBe(true);
+ }
+
+ // Then verify non-cloud featured models are next and in FEATURED_MODELS order
+ const nonCloudFeatured = FEATURED_MODELS.filter(
+ (m) => !m.endsWith("cloud"),
+ );
+ for (let i = 0; i < nonCloudFeatured.length; i++) {
+ const model = merged[i + cloudModels.length];
+ expect(model.model).toBe(nonCloudFeatured[i]);
+ expect(model.isCloud()).toBe(false);
+ }
+
+ // Length should be exactly FEATURED_MODELS length
+ expect(merged.length).toBe(FEATURED_MODELS.length);
+ });
+
+ it("should sort models correctly", () => {
+ const localModels: Model[] = [
+ new Model({ model: "zephyr:latest" }),
+ new Model({ model: "alpha:latest" }),
+ new Model({ model: "gpt-oss:120b-cloud" }),
+ ];
+
+ const merged = mergeModels(localModels);
+
+ // First verify cloud models are first and in FEATURED_MODELS order
+ const cloudModels = FEATURED_MODELS.filter((m) => m.endsWith("cloud"));
+ for (let i = 0; i < cloudModels.length; i++) {
+ expect(merged[i].model).toBe(cloudModels[i]);
+ expect(merged[i].isCloud()).toBe(true);
+ }
+
+ // Then verify non-cloud featured models are next and in FEATURED_MODELS order
+ const nonCloudFeatured = FEATURED_MODELS.filter(
+ (m) => !m.endsWith("cloud"),
+ );
+ for (let i = 0; i < nonCloudFeatured.length; i++) {
+ const model = merged[i + cloudModels.length];
+ expect(model.model).toBe(nonCloudFeatured[i]);
+ expect(model.isCloud()).toBe(false);
+ }
+
+ // Non-featured local models should be at the end in alphabetical order
+ const featuredCount = FEATURED_MODELS.length;
+ expect(merged[featuredCount].model).toBe("alpha:latest");
+ expect(merged[featuredCount + 1].model).toBe("zephyr:latest");
+ });
+});
diff --git a/app/ui/app/src/utils/mergeModels.ts b/app/ui/app/src/utils/mergeModels.ts
new file mode 100644
index 000000000..abbfe00b8
--- /dev/null
+++ b/app/ui/app/src/utils/mergeModels.ts
@@ -0,0 +1,101 @@
+import { Model } from "@/gotypes";
+
+// Featured models list (in priority order)
+export const FEATURED_MODELS = [
+ "gpt-oss:120b-cloud",
+ "gpt-oss:20b-cloud",
+ "deepseek-v3.1:671b-cloud",
+ "qwen3-coder:480b-cloud",
+ "qwen3-vl:235b-cloud",
+ "minimax-m2:cloud",
+ "glm-4.6:cloud",
+ "gpt-oss:120b",
+ "gpt-oss:20b",
+ "gemma3:27b",
+ "gemma3:12b",
+ "gemma3:4b",
+ "gemma3:1b",
+ "deepseek-r1:8b",
+ "qwen3-coder:30b",
+ "qwen3-vl:30b",
+ "qwen3-vl:8b",
+ "qwen3-vl:4b",
+ "qwen3:30b",
+ "qwen3:8b",
+ "qwen3:4b",
+];
+
+function alphabeticalSort(a: Model, b: Model): number {
+ return a.model.toLowerCase().localeCompare(b.model.toLowerCase());
+}
+
+//Merges models, sorting cloud models first, then other models
+export function mergeModels(
+ localModels: Model[],
+ airplaneMode: boolean = false,
+): Model[] {
+ const allModels = (localModels || []).map((model) => model);
+
+ // 1. Get cloud models from local models and featured list
+ const cloudModels = [...allModels.filter((m) => m.isCloud())];
+
+ // Add any cloud models from FEATURED_MODELS that aren't in local models
+ FEATURED_MODELS.filter((f) => f.endsWith("cloud")).forEach((cloudModel) => {
+ if (!cloudModels.some((m) => m.model === cloudModel)) {
+ cloudModels.push(new Model({ model: cloudModel }));
+ }
+ });
+
+ // 2. Get other featured models (non-cloud)
+ const featuredModels = FEATURED_MODELS.filter(
+ (f) => !f.endsWith("cloud"),
+ ).map((model) => {
+ // Check if this model exists in local models
+ const localMatch = allModels.find(
+ (m) => m.model.toLowerCase() === model.toLowerCase(),
+ );
+
+ if (localMatch) return localMatch;
+
+ return new Model({
+ model,
+ });
+ });
+
+ // 3. Get remaining local models that aren't featured and aren't cloud models
+ const remainingModels = allModels.filter(
+ (model) =>
+ !model.isCloud() &&
+ !FEATURED_MODELS.some(
+ (f) => f.toLowerCase() === model.model.toLowerCase(),
+ ),
+ );
+
+ cloudModels.sort((a, b) => {
+ const aIndex = FEATURED_MODELS.indexOf(a.model);
+ const bIndex = FEATURED_MODELS.indexOf(b.model);
+
+ // If both are featured, sort by their position in FEATURED_MODELS
+ if (aIndex !== -1 && bIndex !== -1) {
+ return aIndex - bIndex;
+ }
+
+ // If only one is featured, featured model comes first
+ if (aIndex !== -1 && bIndex === -1) return -1;
+ if (aIndex === -1 && bIndex !== -1) return 1;
+
+ // If neither is featured, sort alphabetically
+ return a.model.toLowerCase().localeCompare(b.model.toLowerCase());
+ });
+
+ featuredModels.sort(
+ (a, b) =>
+ FEATURED_MODELS.indexOf(a.model) - FEATURED_MODELS.indexOf(b.model),
+ );
+
+ remainingModels.sort(alphabeticalSort);
+
+ return airplaneMode
+ ? [...featuredModels, ...remainingModels]
+ : [...cloudModels, ...featuredModels, ...remainingModels];
+}
diff --git a/app/ui/app/src/utils/remarkCitationParser.ts b/app/ui/app/src/utils/remarkCitationParser.ts
new file mode 100644
index 000000000..255b8d158
--- /dev/null
+++ b/app/ui/app/src/utils/remarkCitationParser.ts
@@ -0,0 +1,103 @@
+import { visit } from "unist-util-visit";
+import type { Root, RootContent } from "mdast";
+
+export default function remarkMyDelimiter() {
+ return (tree: Root) => {
+ // First pass: convert citations to nodes
+ visit(tree, "text", (node, index, parent) => {
+ // Example: 【1†L25-L30】
+ // should be parsed into:
+ // cursor: 1, start: 25, end: 30
+ const regex = /【(\d+)†L(\d+)-L(\d+)】/g;
+ let match;
+ let last = 0;
+ const pieces: RootContent[] = [];
+
+ while ((match = regex.exec(node.value))) {
+ // text before the delimiter
+ if (match.index > last) {
+ pieces.push({
+ type: "text",
+ value: node.value.slice(last, match.index),
+ });
+ }
+ // the delimited content → new custom node
+ pieces.push({
+ // @ts-expect-error: custom type
+ type: "custom-citation" as const,
+ data: {
+ // tell rehype/rehype-react to render
+ hName: "ol-citation",
+ hProperties: {
+ cursor: match[1],
+ start: match[2],
+ end: match[3],
+ },
+ },
+ });
+ last = match.index + match[0].length;
+ }
+
+ // After handling range-style citations, handle generic ones in the remaining text
+ // Generic style citations like [1†...] should also be parsed as citations
+ const remaining = node.value.slice(last);
+ const generic = /【(\d+)†[^】]*】/g;
+ let gLast = 0;
+ while ((match = generic.exec(remaining))) {
+ if (match.index > gLast) {
+ pieces.push({
+ type: "text",
+ value: remaining.slice(gLast, match.index),
+ });
+ }
+ pieces.push({
+ // @ts-expect-error: custom type
+ type: "custom-citation" as const,
+ data: {
+ hName: "ol-citation",
+ hProperties: {
+ cursor: match[1],
+ },
+ },
+ });
+ gLast = match.index + match[0].length;
+ }
+
+ // trailing text after generic
+ if (gLast < remaining.length) {
+ pieces.push({ type: "text", value: remaining.slice(gLast) });
+ }
+
+ if (pieces.length) {
+ parent?.children?.splice(index ?? 0, 1, ...pieces);
+ return (index ?? 0) + pieces.length;
+ }
+ });
+
+ // Second pass: remove adjacent duplicate citations
+ visit(tree, (node, index, parent) => {
+ if (
+ parent &&
+ parent.children &&
+ index !== null &&
+ index !== undefined &&
+ index > 0
+ ) {
+ const currentNode = node as any;
+ const prevNode = parent.children[index - 1] as any;
+
+ // Check if both nodes are citations with the same cursor
+ if (
+ currentNode.type === "custom-citation" &&
+ prevNode.type === "custom-citation" &&
+ currentNode.data?.hProperties?.cursor ===
+ prevNode.data?.hProperties?.cursor
+ ) {
+ // Remove the current duplicate citation
+ parent.children.splice(index, 1);
+ return index;
+ }
+ }
+ });
+ };
+}
diff --git a/app/ui/app/src/utils/vram.test.ts b/app/ui/app/src/utils/vram.test.ts
new file mode 100644
index 000000000..40dc82a51
--- /dev/null
+++ b/app/ui/app/src/utils/vram.test.ts
@@ -0,0 +1,121 @@
+import { describe, it, expect } from "vitest";
+import { parseVRAM, getTotalVRAM } from "./vram";
+
+describe("VRAM Utilities", () => {
+ describe("parseVRAM", () => {
+ it("should parse GB (decimal) values correctly", () => {
+ expect(parseVRAM("1 GB")).toBeCloseTo(1000 / 1024); // ≈0.9765625 GiB
+ expect(parseVRAM("16.5 GB")).toBeCloseTo(16.5 * (1000 / 1024));
+ expect(parseVRAM("32GB")).toBeCloseTo(32 * (1000 / 1024));
+ });
+
+ it("should parse GiB (binary) values correctly", () => {
+ expect(parseVRAM("8 GiB")).toBe(8);
+ expect(parseVRAM("12.8 GiB")).toBe(12.8);
+ expect(parseVRAM("24GiB")).toBe(24);
+ });
+
+ it("should convert MB (decimal) to GiB correctly", () => {
+ expect(parseVRAM("1000 MB")).toBeCloseTo(1000 / (1024 * 1024));
+ expect(parseVRAM("8192 MB")).toBeCloseTo(8192 / (1024 * 1024));
+ expect(parseVRAM("512.5 MB")).toBeCloseTo(512.5 / (1024 * 1024));
+ });
+
+ it("should convert MiB (binary) to GiB correctly", () => {
+ expect(parseVRAM("1024 MiB")).toBe(1);
+ expect(parseVRAM("2048MiB")).toBe(2);
+ expect(parseVRAM("512.5 MiB")).toBe(512.5 / 1024);
+ expect(parseVRAM("8192 MiB")).toBe(8);
+ });
+
+ it("should handle case insensitive units", () => {
+ expect(parseVRAM("8 gb")).toBeCloseTo(8 * (1000 / 1024));
+ expect(parseVRAM("8 Gb")).toBeCloseTo(8 * (1000 / 1024));
+ expect(parseVRAM("8 GiB")).toBe(8);
+ expect(parseVRAM("1024 mib")).toBe(1);
+ expect(parseVRAM("1000 mb")).toBeCloseTo(1000 / (1024 * 1024));
+ });
+
+ it("should return null for invalid inputs", () => {
+ expect(parseVRAM("")).toBeNull();
+ expect(parseVRAM("invalid")).toBeNull();
+ expect(parseVRAM("8 TB")).toBeNull();
+ expect(parseVRAM("GB 8")).toBeNull();
+ expect(parseVRAM("8")).toBeNull();
+ });
+
+ it("should handle edge cases", () => {
+ expect(parseVRAM("0 GB")).toBe(0);
+ expect(parseVRAM("0.1 GiB")).toBe(0.1);
+ expect(parseVRAM("999999 GiB")).toBe(999999);
+ });
+ });
+
+ describe("Integration tests", () => {
+ it("should parse various VRAM formats consistently", () => {
+ const testCases = ["8 GB", "16 GiB", "1024 MB", "512 MiB"];
+
+ testCases.forEach((testCase) => {
+ const parsed = parseVRAM(testCase);
+ expect(parsed).not.toBeNull();
+ expect(typeof parsed).toBe("number");
+ expect(parsed).toBeGreaterThan(0);
+ });
+ });
+ });
+
+ describe("getTotalVRAM", () => {
+ it("should sum VRAM values from multiple computes", () => {
+ const computes = [
+ { vram: "8 GiB" },
+ { vram: "16 GiB" },
+ { vram: "4 GiB" },
+ ];
+ expect(getTotalVRAM(computes)).toBe(28);
+ });
+
+ it("should handle MB and MiB conversions correctly", () => {
+ const computes = [
+ { vram: "1024 MiB" }, // 1 GiB
+ { vram: "2048 MiB" }, // 2 GiB
+ { vram: "1000 MB" }, // ~0.000953 GiB
+ ];
+ expect(getTotalVRAM(computes)).toBeCloseTo(3.000953);
+ });
+
+ it("should handle mixed units", () => {
+ const computes = [
+ { vram: "8 GiB" },
+ { vram: "1000 MB" }, // ~0.000953 GiB
+ { vram: "16 GB" }, // 16 * 0.9765625 GiB
+ ];
+
+ expect(getTotalVRAM(computes)).toBeCloseTo(8 + 0.000953 + 15.625);
+ });
+
+ it("should skip invalid VRAM strings", () => {
+ const computes = [
+ { vram: "8 GiB" },
+ { vram: "invalid" },
+ { vram: "16 GiB" },
+ { vram: "" },
+ ];
+
+ expect(getTotalVRAM(computes)).toBe(24);
+ });
+
+ it("should handle empty array", () => {
+ expect(getTotalVRAM([])).toBe(0);
+ });
+
+ it("should handle single compute", () => {
+ const computes = [{ vram: "12 GiB" }];
+ expect(getTotalVRAM(computes)).toBe(12);
+ });
+
+ it("should handle decimal values", () => {
+ const computes = [{ vram: "8.5 GiB" }, { vram: "4.25 GiB" }];
+ expect(getTotalVRAM(computes)).toBe(12.75);
+ });
+ });
+});
diff --git a/app/ui/app/src/utils/vram.ts b/app/ui/app/src/utils/vram.ts
new file mode 100644
index 000000000..78d5b3cef
--- /dev/null
+++ b/app/ui/app/src/utils/vram.ts
@@ -0,0 +1,29 @@
+const GIB_FACTOR: Record = {
+ gib: 1, // 1 GiB = 1 GiB
+ gb: 1000 / 1024, // 1 GB (decimal) = ~0.9765625 GiB
+ mib: 1 / 1024, // 1 MiB = 1/1024 GiB
+ mb: 1 / (1024 * 1024), // 1 MB (decimal) = 1,000,000 bytes = ~9.54e-7 GiB
+};
+
+export function parseVRAM(vramString: string): number | null {
+ if (!vramString) return null;
+
+ const match = vramString.match(/^(\d+(?:\.\d+)?)\s*(GiB|GB|MiB|MB)$/i);
+ if (!match) return null;
+
+ const value = parseFloat(match[1]);
+ const unit = match[2].toLowerCase();
+
+ return value * GIB_FACTOR[unit];
+}
+
+export function getTotalVRAM(inferenceComputes: { vram: string }[]): number {
+ let totalVRAM = 0;
+ for (const compute of inferenceComputes) {
+ const parsed = parseVRAM(compute.vram);
+ if (parsed !== null) {
+ totalVRAM += parsed;
+ }
+ }
+ return totalVRAM;
+}
diff --git a/app/ui/app/src/vite-env.d.ts b/app/ui/app/src/vite-env.d.ts
new file mode 100644
index 000000000..11f02fe2a
--- /dev/null
+++ b/app/ui/app/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/app/ui/app/tailwind.config.js b/app/ui/app/tailwind.config.js
new file mode 100644
index 000000000..27b5f408e
--- /dev/null
+++ b/app/ui/app/tailwind.config.js
@@ -0,0 +1,18 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
+ theme: {
+ extend: {
+ spacing: {
+ 3.5: "0.875rem",
+ 4.5: "1.125rem",
+ },
+ colors: {
+ gray: {
+ 350: "#a1a1aa",
+ },
+ },
+ },
+ },
+ plugins: [require("@tailwindcss/typography")],
+};
diff --git a/app/ui/app/tsconfig.app.json b/app/ui/app/tsconfig.app.json
new file mode 100644
index 000000000..fe88160cd
--- /dev/null
+++ b/app/ui/app/tsconfig.app.json
@@ -0,0 +1,34 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+ "types": [],
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true,
+ "paths": {
+ "@/gotypes": ["codegen/gotypes.gen.ts"],
+ "@/*": ["src/*"]
+ }
+ },
+ "include": ["src", "codegen"],
+ "exclude": ["src/**/*.test.*", "src/**/*.stories.*"]
+}
diff --git a/app/ui/app/tsconfig.json b/app/ui/app/tsconfig.json
new file mode 100644
index 000000000..bee90f0c6
--- /dev/null
+++ b/app/ui/app/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "files": [],
+ "references": [
+ { "path": "./tsconfig.app.json" },
+ { "path": "./tsconfig.node.json" },
+ { "path": "./tsconfig.stories.json" }
+ ]
+}
diff --git a/app/ui/app/tsconfig.node.json b/app/ui/app/tsconfig.node.json
new file mode 100644
index 000000000..9728af2d8
--- /dev/null
+++ b/app/ui/app/tsconfig.node.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "ES2022",
+ "lib": ["ES2023"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/app/ui/app/tsconfig.stories.json b/app/ui/app/tsconfig.stories.json
new file mode 100644
index 000000000..629c11fd9
--- /dev/null
+++ b/app/ui/app/tsconfig.stories.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig.app.json",
+ "compilerOptions": {
+ "types": ["@storybook/react-vite"]
+ },
+ "include": ["src/**/*.stories.*"],
+ "exclude": []
+}
diff --git a/app/ui/app/vite.config.ts b/app/ui/app/vite.config.ts
new file mode 100644
index 000000000..03d51cc68
--- /dev/null
+++ b/app/ui/app/vite.config.ts
@@ -0,0 +1,67 @@
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
+import { TanStackRouterVite } from "@tanstack/router-plugin/vite";
+import tailwindcss from "@tailwindcss/vite";
+import tsconfigPaths from "vite-tsconfig-paths";
+import postcssPresetEnv from "postcss-preset-env";
+import { resolve } from "path";
+
+export default defineConfig(() => ({
+ base: "/",
+
+ plugins: [
+ TanStackRouterVite({ target: "react" }),
+ react(),
+ tailwindcss(),
+ tsconfigPaths(),
+ ],
+
+ resolve: {
+ alias: {
+ "@/gotypes": resolve(__dirname, "codegen/gotypes.gen.ts"),
+ "@": resolve(__dirname, "src"),
+ "micromark-extension-math": "micromark-extension-llm-math",
+ },
+ },
+
+ css: {
+ postcss: {
+ plugins: [
+ postcssPresetEnv({
+ stage: 1, // Include more experimental features that Safari 14 needs
+ browsers: ["Safari >= 14"],
+ // autoprefixer: false,
+ features: {
+ "custom-properties": true, // Let TailwindCSS handle this
+ "nesting-rules": true,
+ "logical-properties-and-values": true, // Polyfill logical properties
+ "media-query-ranges": true, // Modern media query syntax
+ "color-function": true, // CSS color functions
+ "double-position-gradients": true,
+ "gap-properties": true, // This is key for flexbox gap!
+ "place-properties": true,
+ "overflow-property": true,
+ "focus-visible-pseudo-class": true, // Focus-visible support
+ "focus-within-pseudo-class": true, // Focus-within support
+ "any-link-pseudo-class": true, // :any-link pseudo-class
+ "not-pseudo-class": true, // Enhanced :not() support
+ "dir-pseudo-class": true, // :dir() pseudo-class
+ "all-property": true, // CSS 'all' property
+ "image-set-function": true, // image-set() function
+ "hwb-function": true, // hwb() color function
+ "lab-function": true, // lab() color function
+ "oklab-function": true, // oklab() color function
+ },
+ }),
+ ],
+ },
+ },
+
+ build: {
+ target: "es2017",
+ },
+
+ esbuild: {
+ target: "es2017",
+ },
+}));
diff --git a/app/ui/app/vitest.config.ts b/app/ui/app/vitest.config.ts
new file mode 100644
index 000000000..0a4337d8e
--- /dev/null
+++ b/app/ui/app/vitest.config.ts
@@ -0,0 +1,21 @@
+import { defineConfig, mergeConfig } from "vite";
+import path from "path";
+import baseConfig from "./vite.config";
+
+export default defineConfig((configEnv) =>
+ mergeConfig(
+ baseConfig(configEnv),
+ defineConfig({
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, "./src"),
+ "@/gotypes": path.resolve(__dirname, "./codegen/gotypes.gen.ts"),
+ },
+ },
+ test: {
+ environment: "node",
+ globals: true,
+ },
+ }),
+ ),
+);
diff --git a/app/ui/app/vitest.shims.d.ts b/app/ui/app/vitest.shims.d.ts
new file mode 100644
index 000000000..a1d31e5a7
--- /dev/null
+++ b/app/ui/app/vitest.shims.d.ts
@@ -0,0 +1 @@
+///
diff --git a/app/ui/extract.go b/app/ui/extract.go
new file mode 100644
index 000000000..fd710a62c
--- /dev/null
+++ b/app/ui/extract.go
@@ -0,0 +1,84 @@
+//go:build windows || darwin
+
+package ui
+
+import (
+ "bytes"
+ "fmt"
+ "path/filepath"
+ "slices"
+ "strings"
+ "unicode/utf8"
+
+ "github.com/ledongthuc/pdf"
+)
+
+// convertBytesToText converts raw file bytes to text based on file extension
+func convertBytesToText(data []byte, filename string) string {
+ ext := strings.ToLower(filepath.Ext(filename))
+
+ if ext == ".pdf" {
+ text, err := extractPDFText(data)
+ if err != nil {
+ return fmt.Sprintf("[PDF file - %d bytes - failed to extract text: %v]", len(data), err)
+ }
+ if strings.TrimSpace(text) == "" {
+ return fmt.Sprintf("[PDF file - %d bytes - no text content found]", len(data))
+ }
+ return text
+ }
+
+ binaryExtensions := []string{
+ ".xlsx", ".pptx", ".zip", ".tar", ".gz", ".rar",
+ ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".svg", ".ico",
+ ".mp3", ".mp4", ".avi", ".mov", ".wmv", ".flv", ".webm",
+ ".exe", ".dll", ".so", ".dylib", ".app", ".dmg", ".pkg",
+ }
+
+ if slices.Contains(binaryExtensions, ext) {
+ return fmt.Sprintf("[Binary file of type %s - %d bytes]", ext, len(data))
+ }
+
+ if utf8.Valid(data) {
+ return string(data)
+ }
+
+ // If not valid UTF-8, return a placeholder
+ return fmt.Sprintf("[Binary file - %d bytes - not valid UTF-8]", len(data))
+}
+
+// extractPDFText extracts text content from PDF bytes
+func extractPDFText(data []byte) (string, error) {
+ reader := bytes.NewReader(data)
+ pdfReader, err := pdf.NewReader(reader, int64(len(data)))
+ if err != nil {
+ return "", fmt.Errorf("failed to create PDF reader: %w", err)
+ }
+
+ var textBuilder strings.Builder
+ numPages := pdfReader.NumPage()
+
+ for i := 1; i <= numPages; i++ {
+ page := pdfReader.Page(i)
+ if page.V.IsNull() {
+ continue
+ }
+
+ text, err := page.GetPlainText(nil)
+ if err != nil {
+ // Log the error but continue with other pages
+ continue
+ }
+
+ if strings.TrimSpace(text) != "" {
+ if textBuilder.Len() > 0 {
+ textBuilder.WriteString("\n\n--- Page ")
+ textBuilder.WriteString(fmt.Sprintf("%d", i))
+ textBuilder.WriteString(" ---\n")
+ }
+ textBuilder.WriteString(text)
+ }
+ }
+
+ return textBuilder.String(), nil
+}
diff --git a/app/ui/responses/types.go b/app/ui/responses/types.go
new file mode 100644
index 000000000..2da6623fd
--- /dev/null
+++ b/app/ui/responses/types.go
@@ -0,0 +1,155 @@
+//go:build windows || darwin
+
+package responses
+
+import (
+ "time"
+
+ "github.com/ollama/ollama/app/store"
+ "github.com/ollama/ollama/types/model"
+)
+
+type ChatInfo struct {
+ ID string `json:"id"`
+ Title string `json:"title"`
+ UserExcerpt string `json:"userExcerpt"`
+ CreatedAt time.Time `json:"createdAt" ts_type:"Date" ts_transform:"new Date(__VALUE__)"`
+ UpdatedAt time.Time `json:"updatedAt" ts_type:"Date" ts_transform:"new Date(__VALUE__)"`
+}
+
+type ChatsResponse struct {
+ ChatInfos []ChatInfo `json:"chatInfos"`
+}
+
+type ChatResponse struct {
+ Chat store.Chat `json:"chat"`
+}
+
+type Model struct {
+ Model string `json:"model"`
+ Digest string `json:"digest,omitempty"`
+ ModifiedAt *time.Time `json:"modified_at,omitempty"`
+}
+
+type ModelsResponse struct {
+ Models []Model `json:"models"`
+}
+
+type InferenceCompute struct {
+ Library string `json:"library"`
+ Variant string `json:"variant"`
+ Compute string `json:"compute"`
+ Driver string `json:"driver"`
+ Name string `json:"name"`
+ VRAM string `json:"vram"`
+}
+
+type InferenceComputeResponse struct {
+ InferenceComputes []InferenceCompute `json:"inferenceComputes"`
+}
+
+type ModelCapabilitiesResponse struct {
+ Capabilities []model.Capability `json:"capabilities"`
+}
+
+// ChatEvent is for regular chat messages and assistant interactions
+type ChatEvent struct {
+ EventName string `json:"eventName" ts_type:"\"chat\" | \"thinking\" | \"assistant_with_tools\" | \"tool_call\" | \"tool\" | \"tool_result\" | \"done\" | \"chat_created\""`
+
+ // Chat/Assistant message fields
+ Content *string `json:"content,omitempty"`
+ Thinking *string `json:"thinking,omitempty"`
+ ThinkingTimeStart *time.Time `json:"thinkingTimeStart,omitempty" ts_type:"Date | undefined" ts_transform:"__VALUE__ && new Date(__VALUE__)"`
+ ThinkingTimeEnd *time.Time `json:"thinkingTimeEnd,omitempty" ts_type:"Date | undefined" ts_transform:"__VALUE__ && new Date(__VALUE__)"`
+
+ // Tool-related fields
+ ToolCalls []store.ToolCall `json:"toolCalls,omitempty"`
+ ToolCall *store.ToolCall `json:"toolCall,omitempty"`
+ ToolName *string `json:"toolName,omitempty"`
+ ToolResult *bool `json:"toolResult,omitempty"`
+ ToolResultData any `json:"toolResultData,omitempty"`
+
+ // Chat creation fields
+ ChatID *string `json:"chatId,omitempty"`
+
+ // Tool state field from the new code
+ ToolState any `json:"toolState,omitempty"`
+}
+
+// DownloadEvent is for model download progress
+type DownloadEvent struct {
+ EventName string `json:"eventName" ts_type:"\"download\""`
+ Total int64 `json:"total" ts_type:"number"`
+ Completed int64 `json:"completed" ts_type:"number"`
+ Done bool `json:"done" ts_type:"boolean"`
+}
+
+// ErrorEvent is for error messages
+type ErrorEvent struct {
+ EventName string `json:"eventName" ts_type:"\"error\""`
+ Error string `json:"error"`
+ Code string `json:"code,omitempty"` // Optional error code for different error types
+ Details string `json:"details,omitempty"` // Optional additional details
+}
+
+type SettingsResponse struct {
+ Settings store.Settings `json:"settings"`
+}
+
+type HealthResponse struct {
+ Healthy bool `json:"healthy"`
+}
+
+type User struct {
+ ID string `json:"id"`
+ Email string `json:"email"`
+ Name string `json:"name"`
+ Bio string `json:"bio,omitempty"`
+ AvatarURL string `json:"avatarurl,omitempty"`
+ FirstName string `json:"firstname,omitempty"`
+ LastName string `json:"lastname,omitempty"`
+ Plan string `json:"plan,omitempty"`
+}
+
+type Attachment struct {
+ Filename string `json:"filename"`
+ Data string `json:"data,omitempty"` // omitempty = optional, no data = existing file reference
+}
+
+type ChatRequest struct {
+ Model string `json:"model"`
+ Prompt string `json:"prompt"`
+ Index *int `json:"index,omitempty"`
+ Attachments []Attachment `json:"attachments,omitempty"`
+ WebSearch *bool `json:"web_search,omitempty"`
+ FileTools *bool `json:"file_tools,omitempty"`
+ ForceUpdate bool `json:"forceUpdate,omitempty"`
+ Think any `json:"think,omitempty"`
+}
+
+type Error struct {
+ Error string `json:"error"`
+}
+
+type ModelUpstreamResponse struct {
+ Digest string `json:"digest,omitempty"`
+ PushTime int64 `json:"pushTime"`
+ Error string `json:"error,omitempty"`
+}
+
+// Serializable data for the browser state
+type BrowserStateData struct {
+ PageStack []string `json:"page_stack"` // Sequential list of page URLs
+ ViewTokens int `json:"view_tokens"` // Number of tokens to show in viewport
+ URLToPage map[string]*Page `json:"url_to_page"` // URL to page contents
+}
+
+// Page represents the contents of a page
+type Page struct {
+ URL string `json:"url"`
+ Title string `json:"title"`
+ Text string `json:"text"`
+ Lines []string `json:"lines"`
+ Links map[int]string `json:"links,omitempty" ts_type:"Record"`
+ FetchedAt time.Time `json:"fetched_at"`
+}
diff --git a/app/ui/ui.go b/app/ui/ui.go
new file mode 100644
index 000000000..26de71422
--- /dev/null
+++ b/app/ui/ui.go
@@ -0,0 +1,1724 @@
+//go:build windows || darwin
+
+// package ui implements a chat interface for Ollama
+package ui
+
+import (
+ "context"
+ "encoding/base64"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "log/slog"
+ "net/http"
+ "net/http/httputil"
+ "os"
+ "runtime"
+ "runtime/debug"
+ "slices"
+ "strconv"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/google/uuid"
+ "github.com/ollama/ollama/api"
+ "github.com/ollama/ollama/app/server"
+ "github.com/ollama/ollama/app/store"
+ "github.com/ollama/ollama/app/tools"
+ "github.com/ollama/ollama/app/types/not"
+ "github.com/ollama/ollama/app/ui/responses"
+ "github.com/ollama/ollama/app/version"
+ ollamaAuth "github.com/ollama/ollama/auth"
+ "github.com/ollama/ollama/envconfig"
+ "github.com/ollama/ollama/types/model"
+ _ "github.com/tkrajina/typescriptify-golang-structs/typescriptify"
+)
+
+//go:generate tscriptify -package=github.com/ollama/ollama/app/ui/responses -target=./app/codegen/gotypes.gen.ts responses/types.go
+//go:generate npm --prefix ./app run build
+
+var CORS = envconfig.Bool("OLLAMA_CORS")
+
+// OllamaDotCom returns the URL for ollama.com, allowing override via environment variable
+var OllamaDotCom = func() string {
+ if url := os.Getenv("OLLAMA_DOT_COM_URL"); url != "" {
+ return url
+ }
+ return "https://ollama.com"
+}()
+
+type statusRecorder struct {
+ http.ResponseWriter
+ code int
+}
+
+func (r *statusRecorder) Written() bool {
+ return r.code != 0
+}
+
+func (r *statusRecorder) WriteHeader(code int) {
+ r.code = code
+ r.ResponseWriter.WriteHeader(code)
+}
+
+func (r *statusRecorder) Status() int {
+ if r.code == 0 {
+ return http.StatusOK
+ }
+ return r.code
+}
+
+func (r *statusRecorder) Flush() {
+ if flusher, ok := r.ResponseWriter.(http.Flusher); ok {
+ flusher.Flush()
+ }
+}
+
+// Event is a string that represents the type of event being sent to the
+// client. It is used in the Server-Sent Events (SSE) protocol to identify
+// the type of data being sent.
+// The client (template) will use this type in the sse event listener to
+// determine how to handle the incoming data. It will also be used in the
+// sse-swap htmx event listener to determine how to handle the incoming data.
+type Event string
+
+const (
+ EventChat Event = "chat"
+ EventComplete Event = "complete"
+ EventLoading Event = "loading"
+ EventToolResult Event = "tool_result" // Used for both tool calls and their results
+ EventThinking Event = "thinking"
+ EventToolCall Event = "tool_call"
+ EventDownload Event = "download"
+)
+
+type Server struct {
+ Logger *slog.Logger
+ Restart func()
+ Token string
+ Store *store.Store
+ ToolRegistry *tools.Registry
+ Tools bool // if true, the server will use single-turn tools to fulfill the user's request
+ WebSearch bool // if true, the server will use single-turn browser tool to fulfill the user's request
+ Agent bool // if true, the server will use multi-turn tools to fulfill the user's request
+ WorkingDir string // Working directory for all agent operations
+
+ // Dev is true if the server is running in development mode
+ Dev bool
+}
+
+func (s *Server) log() *slog.Logger {
+ if s.Logger == nil {
+ return slog.Default()
+ }
+ return s.Logger
+}
+
+// ollamaProxy creates a reverse proxy handler to the Ollama server
+func (s *Server) ollamaProxy() http.Handler {
+ var (
+ proxy http.Handler
+ proxyMu sync.Mutex
+ )
+
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ proxyMu.Lock()
+ p := proxy
+ proxyMu.Unlock()
+
+ if p == nil {
+ proxyMu.Lock()
+ if proxy == nil {
+ var err error
+ for i := range 2 {
+ if i > 0 {
+ s.log().Warn("ollama server not ready, retrying", "attempt", i+1)
+ time.Sleep(1 * time.Second)
+ }
+
+ err = WaitForServer(context.Background(), 10*time.Second)
+ if err == nil {
+ break
+ }
+ }
+
+ if err != nil {
+ proxyMu.Unlock()
+ s.log().Error("ollama server not ready after retries", "error", err)
+ http.Error(w, "Ollama server is not ready", http.StatusServiceUnavailable)
+ return
+ }
+
+ target := envconfig.Host()
+ s.log().Info("configuring ollama proxy", "target", target.String())
+
+ newProxy := httputil.NewSingleHostReverseProxy(target)
+
+ originalDirector := newProxy.Director
+ newProxy.Director = func(req *http.Request) {
+ originalDirector(req)
+ req.Host = target.Host
+ s.log().Debug("proxying request", "method", req.Method, "path", req.URL.Path, "target", target.Host)
+ }
+
+ newProxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) {
+ s.log().Error("proxy error", "error", err, "path", r.URL.Path, "target", target.String())
+ http.Error(w, "proxy error: "+err.Error(), http.StatusBadGateway)
+ }
+
+ proxy = newProxy
+ p = newProxy
+ } else {
+ p = proxy
+ }
+ proxyMu.Unlock()
+ }
+
+ p.ServeHTTP(w, r)
+ })
+}
+
+type errHandlerFunc func(http.ResponseWriter, *http.Request) error
+
+func (s *Server) Handler() http.Handler {
+ handle := func(f errHandlerFunc) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ // Add CORS headers for dev work
+ if CORS() {
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
+ w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With")
+ w.Header().Set("Access-Control-Allow-Credentials", "true")
+
+ // Handle preflight requests
+ if r.Method == "OPTIONS" {
+ w.WriteHeader(http.StatusOK)
+ return
+ }
+ }
+
+ // Don't check for token in development mode
+ if !s.Dev {
+ cookie, err := r.Cookie("token")
+ if err != nil {
+ w.WriteHeader(http.StatusForbidden)
+ json.NewEncoder(w).Encode(map[string]string{"error": "Token is required"})
+ return
+ }
+
+ if cookie.Value != s.Token {
+ w.WriteHeader(http.StatusForbidden)
+ json.NewEncoder(w).Encode(map[string]string{"error": "Token is required"})
+ return
+ }
+ }
+
+ sw := &statusRecorder{ResponseWriter: w}
+
+ log := s.log()
+ level := slog.LevelInfo
+ start := time.Now()
+ requestID := fmt.Sprintf("%d", time.Now().UnixNano())
+
+ defer func() {
+ p := recover()
+ if p != nil {
+ log = log.With("panic", p, "request_id", requestID)
+ level = slog.LevelError
+
+ // Handle panic with user-friendly error
+ if !sw.Written() {
+ s.handleError(sw, fmt.Errorf("internal server error"))
+ }
+ }
+
+ log.Log(r.Context(), level, "site.serveHTTP",
+ "http.method", r.Method,
+ "http.path", r.URL.Path,
+ "http.pattern", r.Pattern,
+ "http.status", sw.Status(),
+ "http.d", time.Since(start),
+ "request_id", requestID,
+ "version", version.Version,
+ )
+
+ // let net/http.Server deal with panics
+ if p != nil {
+ panic(p)
+ }
+ }()
+
+ w.Header().Set("X-Frame-Options", "DENY")
+ w.Header().Set("X-Version", version.Version)
+ w.Header().Set("X-Request-ID", requestID)
+
+ ctx := r.Context()
+ if err := f(sw, r); err != nil {
+ if ctx.Err() != nil {
+ return
+ }
+ level = slog.LevelError
+ log = log.With("error", err)
+ s.handleError(sw, err)
+ }
+ })
+ }
+
+ mux := http.NewServeMux()
+
+ // CORS is handled in `handle`, but we have to match on OPTIONS to handle preflight requests
+ mux.Handle("OPTIONS /", handle(func(w http.ResponseWriter, r *http.Request) error {
+ return nil
+ }))
+
+ // API routes - handle first to take precedence
+ mux.Handle("GET /api/v1/chats", handle(s.listChats))
+ mux.Handle("GET /api/v1/chat/{id}", handle(s.getChat))
+ mux.Handle("POST /api/v1/chat/{id}", handle(s.chat))
+ mux.Handle("DELETE /api/v1/chat/{id}", handle(s.deleteChat))
+ mux.Handle("POST /api/v1/create-chat", handle(s.createChat))
+ mux.Handle("PUT /api/v1/chat/{id}/rename", handle(s.renameChat))
+
+ mux.Handle("GET /api/v1/inference-compute", handle(s.getInferenceCompute))
+ mux.Handle("POST /api/v1/model/upstream", handle(s.modelUpstream))
+ mux.Handle("GET /api/v1/settings", handle(s.getSettings))
+ mux.Handle("POST /api/v1/settings", handle(s.settings))
+
+ // Ollama proxy endpoints
+ ollamaProxy := s.ollamaProxy()
+ mux.Handle("GET /api/tags", ollamaProxy)
+ mux.Handle("POST /api/show", ollamaProxy)
+ mux.Handle("GET /api/version", ollamaProxy)
+ mux.Handle("HEAD /api/version", ollamaProxy)
+ mux.Handle("POST /api/me", ollamaProxy)
+ mux.Handle("POST /api/signout", ollamaProxy)
+
+ // React app - catch all non-API routes and serve the React app
+ mux.Handle("GET /", s.appHandler())
+ mux.Handle("PUT /", s.appHandler())
+ mux.Handle("POST /", s.appHandler())
+ mux.Handle("PATCH /", s.appHandler())
+ mux.Handle("DELETE /", s.appHandler())
+
+ return mux
+}
+
+// handleError renders appropriate error responses based on request type
+func (s *Server) handleError(w http.ResponseWriter, e error) {
+ // Preserve CORS headers for API requests
+ if CORS() {
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
+ w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With")
+ w.Header().Set("Access-Control-Allow-Credentials", "true")
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusInternalServerError)
+ json.NewEncoder(w).Encode(map[string]string{"error": e.Error()})
+}
+
+// userAgentTransport is a custom RoundTripper that adds the User-Agent header to all requests
+type userAgentTransport struct {
+ base http.RoundTripper
+}
+
+func (t *userAgentTransport) RoundTrip(req *http.Request) (*http.Response, error) {
+ // Clone the request to avoid mutating the original
+ r := req.Clone(req.Context())
+ r.Header.Set("User-Agent", userAgent())
+ return t.base.RoundTrip(r)
+}
+
+// httpClient returns an HTTP client that automatically adds the User-Agent header
+func (s *Server) httpClient() *http.Client {
+ return &http.Client{
+ Timeout: 10 * time.Second,
+ Transport: &userAgentTransport{
+ base: http.DefaultTransport,
+ },
+ }
+}
+
+// doSelfSigned sends a self-signed request to the ollama.com API
+func (s *Server) doSelfSigned(ctx context.Context, method, path string) (*http.Response, error) {
+ timestamp := strconv.FormatInt(time.Now().Unix(), 10)
+ // Form the string to sign: METHOD,PATH?ts=TIMESTAMP
+ signString := fmt.Sprintf("%s,%s?ts=%s", method, path, timestamp)
+ signature, err := ollamaAuth.Sign(ctx, []byte(signString))
+ if err != nil {
+ return nil, fmt.Errorf("failed to sign request: %w", err)
+ }
+
+ endpoint := fmt.Sprintf("%s%s?ts=%s", OllamaDotCom, path, timestamp)
+ req, err := http.NewRequestWithContext(ctx, method, endpoint, nil)
+ if err != nil {
+ return nil, fmt.Errorf("failed to create request: %w", err)
+ }
+ req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", signature))
+
+ return s.httpClient().Do(req)
+}
+
+// UserData fetches user data from ollama.com API for the current ollama key
+func (s *Server) UserData(ctx context.Context) (*api.UserResponse, error) {
+ resp, err := s.doSelfSigned(ctx, http.MethodPost, "/api/me")
+ if err != nil {
+ return nil, fmt.Errorf("failed to call ollama.com/api/me: %w", err)
+ }
+ defer resp.Body.Close()
+
+ if resp.StatusCode != http.StatusOK {
+ return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode)
+ }
+
+ var user api.UserResponse
+ if err := json.NewDecoder(resp.Body).Decode(&user); err != nil {
+ return nil, fmt.Errorf("failed to parse user response: %w", err)
+ }
+
+ user.AvatarURL = fmt.Sprintf("%s/%s", OllamaDotCom, user.AvatarURL)
+
+ storeUser := store.User{
+ Name: user.Name,
+ Email: user.Email,
+ Plan: user.Plan,
+ }
+ if err := s.Store.SetUser(storeUser); err != nil {
+ s.log().Warn("failed to cache user data", "error", err)
+ }
+
+ return &user, nil
+}
+
+// WaitForServer waits for the Ollama server to be ready
+func WaitForServer(ctx context.Context, timeout time.Duration) error {
+ deadline := time.Now().Add(timeout)
+ for time.Now().Before(deadline) {
+ c, err := api.ClientFromEnvironment()
+ if err != nil {
+ return err
+ }
+ if _, err := c.Version(ctx); err == nil {
+ slog.Debug("ollama server is ready")
+ return nil
+ }
+ time.Sleep(10 * time.Millisecond)
+ }
+ return errors.New("timeout waiting for Ollama server to be ready")
+}
+
+func (s *Server) createChat(w http.ResponseWriter, r *http.Request) error {
+ if err := WaitForServer(r.Context(), 10*time.Second); err != nil {
+ return err
+ }
+
+ id, err := uuid.NewV7()
+ if err != nil {
+ return fmt.Errorf("failed to generate chat ID: %w", err)
+ }
+
+ json.NewEncoder(w).Encode(map[string]string{"id": id.String()})
+ return nil
+}
+
+func (s *Server) listChats(w http.ResponseWriter, r *http.Request) error {
+ chats, _ := s.Store.Chats()
+
+ chatInfos := make([]responses.ChatInfo, len(chats))
+ for i, chat := range chats {
+ chatInfos[i] = chatInfoFromChat(chat)
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ json.NewEncoder(w).Encode(responses.ChatsResponse{ChatInfos: chatInfos})
+ return nil
+}
+
+// checkModelUpstream makes a HEAD request to the Ollama registry to get the upstream digest and push time
+func (s *Server) checkModelUpstream(ctx context.Context, modelName string, timeout time.Duration) (string, int64, error) {
+ // Create a context with timeout for the registry check
+ checkCtx, cancel := context.WithTimeout(ctx, timeout)
+ defer cancel()
+
+ // Parse model name to get namespace, model, and tag
+ parts := strings.Split(modelName, ":")
+ name := parts[0]
+ tag := "latest"
+ if len(parts) > 1 {
+ tag = parts[1]
+ }
+
+ if !strings.Contains(name, "/") {
+ // If the model name does not contain a slash, assume it's a library model
+ name = "library/" + name
+ }
+
+ // Check the model in the Ollama registry using HEAD request
+ url := OllamaDotCom + "/v2/" + name + "/manifests/" + tag
+ req, err := http.NewRequestWithContext(checkCtx, "HEAD", url, nil)
+ if err != nil {
+ return "", 0, err
+ }
+
+ httpClient := s.httpClient()
+ httpClient.Timeout = timeout
+
+ resp, err := httpClient.Do(req)
+ if err != nil {
+ return "", 0, err
+ }
+ defer resp.Body.Close()
+
+ if resp.StatusCode != http.StatusOK {
+ return "", 0, fmt.Errorf("registry returned status %d", resp.StatusCode)
+ }
+
+ digest := resp.Header.Get("ollama-content-digest")
+ if digest == "" {
+ return "", 0, fmt.Errorf("no digest header found")
+ }
+
+ var pushTime int64
+ if pushTimeStr := resp.Header.Get("ollama-push-time"); pushTimeStr != "" {
+ if pt, err := strconv.ParseInt(pushTimeStr, 10, 64); err == nil {
+ pushTime = pt
+ }
+ }
+
+ return digest, pushTime, nil
+}
+
+// isNetworkError checks if an error string contains common network/connection error patterns
+func isNetworkError(errStr string) bool {
+ networkErrorPatterns := []string{
+ "connection refused",
+ "no such host",
+ "timeout",
+ "network is unreachable",
+ "connection reset",
+ "connection timed out",
+ "temporary failure",
+ "dial tcp",
+ "i/o timeout",
+ "context deadline exceeded",
+ "broken pipe",
+ }
+
+ for _, pattern := range networkErrorPatterns {
+ if strings.Contains(errStr, pattern) {
+ return true
+ }
+ }
+ return false
+}
+
+var ErrNetworkOffline = errors.New("network is offline")
+
+func (s *Server) getError(err error) responses.ErrorEvent {
+ var sErr api.AuthorizationError
+ if errors.As(err, &sErr) && sErr.StatusCode == http.StatusUnauthorized {
+ return responses.ErrorEvent{
+ EventName: "error",
+ Error: "Could not verify you are signed in. Please sign in and try again.",
+ Code: "cloud_unauthorized",
+ }
+ }
+
+ errStr := err.Error()
+
+ switch {
+ case strings.Contains(errStr, "402"):
+ return responses.ErrorEvent{
+ EventName: "error",
+ Error: "You've reached your usage limit, please upgrade to continue",
+ Code: "usage_limit_upgrade",
+ }
+ case strings.HasPrefix(errStr, "pull model manifest") && isNetworkError(errStr):
+ return responses.ErrorEvent{
+ EventName: "error",
+ Error: "Unable to download model. Please check your internet connection to download the model for offline use.",
+ Code: "offline_download_error",
+ }
+ case errors.Is(err, ErrNetworkOffline) || strings.Contains(errStr, "operation timed out"):
+ return responses.ErrorEvent{
+ EventName: "error",
+ Error: "Connection lost",
+ Code: "turbo_connection_lost",
+ }
+ }
+ return responses.ErrorEvent{
+ EventName: "error",
+ Error: err.Error(),
+ }
+}
+
+func (s *Server) browserState(chat *store.Chat) (*responses.BrowserStateData, bool) {
+ if len(chat.BrowserState) > 0 {
+ var st responses.BrowserStateData
+ if err := json.Unmarshal(chat.BrowserState, &st); err == nil {
+ return &st, true
+ }
+ }
+ return nil, false
+}
+
+// reconstructBrowserState (legacy): return the latest full browser state stored in messages.
+func reconstructBrowserState(messages []store.Message, defaultViewTokens int) *responses.BrowserStateData {
+ for i := len(messages) - 1; i >= 0; i-- {
+ msg := messages[i]
+ if msg.ToolResult == nil {
+ continue
+ }
+ var st responses.BrowserStateData
+ if err := json.Unmarshal(*msg.ToolResult, &st); err == nil {
+ if len(st.PageStack) > 0 || len(st.URLToPage) > 0 {
+ if st.ViewTokens == 0 {
+ st.ViewTokens = defaultViewTokens
+ }
+ return &st
+ }
+ }
+ }
+ return nil
+}
+
+func (s *Server) chat(w http.ResponseWriter, r *http.Request) error {
+ w.Header().Set("Content-Type", "text/jsonl")
+ w.Header().Set("Cache-Control", "no-cache")
+ w.Header().Set("Connection", "keep-alive")
+ w.Header().Set("Transfer-Encoding", "chunked")
+
+ flusher, ok := w.(http.Flusher)
+ if !ok {
+ return errors.New("streaming not supported")
+ }
+
+ if r.Method != "POST" {
+ return not.Found
+ }
+
+ cid := r.PathValue("id")
+ createdChat := false
+
+ // if cid is the literal string "new", then we create a new chat before
+ // performing our normal actions
+ if cid == "new" {
+ u, err := uuid.NewV7()
+ if err != nil {
+ return fmt.Errorf("failed to generate new chat id: %w", err)
+ }
+ cid = u.String()
+ createdChat = true
+ }
+
+ var req responses.ChatRequest
+ if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
+ fmt.Fprintf(os.Stderr, "error unmarshalling body: %v\n", err)
+ return fmt.Errorf("invalid request body: %w", err)
+ }
+
+ if req.Model == "" {
+ return fmt.Errorf("empty model")
+ }
+
+ // Don't allow empty messages unless forceUpdate is true
+ if req.Prompt == "" && !req.ForceUpdate {
+ return fmt.Errorf("empty message")
+ }
+
+ if createdChat {
+ // send message to the client that the chat has been created
+ json.NewEncoder(w).Encode(responses.ChatEvent{
+ EventName: "chat_created",
+ ChatID: &cid,
+ })
+ flusher.Flush()
+ }
+
+ // Check if this is from a specific message index (e.g. for editing)
+ idx := -1
+ if req.Index != nil {
+ idx = *req.Index
+ }
+
+ // Load chat with attachments since we need them for processing
+ chat, err := s.Store.ChatWithOptions(cid, true)
+ if err != nil {
+ if !errors.Is(err, not.Found) {
+ return err
+ }
+ chat = store.NewChat(cid)
+ }
+
+ // Only add user message if not forceUpdate
+ if !req.ForceUpdate {
+ var messageOptions *store.MessageOptions
+ if len(req.Attachments) > 0 {
+ storeAttachments := make([]store.File, 0, len(req.Attachments))
+
+ for _, att := range req.Attachments {
+ if att.Data == "" {
+ // This is an existing file reference - keep it from the original message
+ if idx >= 0 && idx < len(chat.Messages) {
+ originalMessage := chat.Messages[idx]
+ // Find the file by filename in the original message
+ for _, originalFile := range originalMessage.Attachments {
+ if originalFile.Filename == att.Filename {
+ storeAttachments = append(storeAttachments, originalFile)
+ break
+ }
+ }
+ }
+ } else {
+ // This is a new file - decode base64 data
+ data, err := base64.StdEncoding.DecodeString(att.Data)
+ if err != nil {
+ s.log().Error("failed to decode attachment data", "error", err, "filename", att.Filename)
+ continue
+ }
+
+ storeAttachments = append(storeAttachments, store.File{
+ Filename: att.Filename,
+ Data: data,
+ })
+ }
+ }
+
+ messageOptions = &store.MessageOptions{
+ Attachments: storeAttachments,
+ }
+ }
+ userMsg := store.NewMessage("user", req.Prompt, messageOptions)
+
+ if idx >= 0 && idx < len(chat.Messages) {
+ // Generate from specified message: truncate and replace
+ chat.Messages = chat.Messages[:idx]
+ chat.Messages = append(chat.Messages, userMsg)
+ } else {
+ // Normal mode: append new message
+ chat.Messages = append(chat.Messages, userMsg)
+ }
+
+ if err := s.Store.SetChat(*chat); err != nil {
+ return err
+ }
+ }
+
+ ctx, cancel := context.WithCancel(r.Context())
+ defer cancel()
+
+ _, cancelLoading := context.WithCancel(ctx)
+ loading := false
+
+ c, err := api.ClientFromEnvironment()
+ if err != nil {
+ cancelLoading()
+ return err
+ }
+
+ // Check if the model exists locally by trying to show it
+ // TODO (jmorganca): skip this round trip and instead just act
+ // on a 404 error on chat
+ _, err = c.Show(ctx, &api.ShowRequest{Model: req.Model})
+ if err != nil || req.ForceUpdate {
+ // Create an empty assistant message to store the model information
+ // This will be overwritten when the model responds
+ chat.Messages = append(chat.Messages, store.NewMessage("assistant", "", &store.MessageOptions{Model: req.Model}))
+ if err := s.Store.SetChat(*chat); err != nil {
+ cancelLoading()
+ return err
+ }
+ // Send download progress events while the model is being pulled
+ // TODO (jmorganca): this only shows the largest digest, but we
+ // should show the progress for the total size of the download
+ var largestDigest string
+ var largestTotal int64
+
+ err = c.Pull(ctx, &api.PullRequest{Model: req.Model}, func(progress api.ProgressResponse) error {
+ if progress.Digest != "" && progress.Total > largestTotal {
+ largestDigest = progress.Digest
+ largestTotal = progress.Total
+ }
+
+ if progress.Digest != "" && progress.Digest == largestDigest {
+ progressEvent := responses.DownloadEvent{
+ EventName: string(EventDownload),
+ Total: progress.Total,
+ Completed: progress.Completed,
+ Done: false,
+ }
+
+ if err := json.NewEncoder(w).Encode(progressEvent); err != nil {
+ return err
+ }
+ flusher.Flush()
+ }
+ return nil
+ })
+ if err != nil {
+ s.log().Error("model download error", "error", err, "model", req.Model)
+ errorEvent := s.getError(err)
+ json.NewEncoder(w).Encode(errorEvent)
+ flusher.Flush()
+ cancelLoading()
+ return fmt.Errorf("failed to download model: %w", err)
+ }
+
+ if err := json.NewEncoder(w).Encode(responses.DownloadEvent{
+ EventName: string(EventDownload),
+ Completed: largestTotal,
+ Total: largestTotal,
+ Done: true,
+ }); err != nil {
+ cancelLoading()
+ return err
+ }
+ flusher.Flush()
+
+ // If forceUpdate, we're done after updating the model
+ if req.ForceUpdate {
+ json.NewEncoder(w).Encode(responses.ChatEvent{EventName: "done"})
+ flusher.Flush()
+ cancelLoading()
+ return nil
+ }
+ }
+
+ loading = true
+ defer cancelLoading()
+
+ // Check the model capabilities
+ details, err := c.Show(ctx, &api.ShowRequest{Model: req.Model})
+
+ if err != nil || details == nil {
+ errorEvent := s.getError(err)
+ json.NewEncoder(w).Encode(errorEvent)
+ flusher.Flush()
+ s.log().Error("failed to show model details", "error", err, "model", req.Model)
+ return nil
+ }
+ think := slices.Contains(details.Capabilities, model.CapabilityThinking)
+
+ var thinkValue any
+
+ if req.Think != nil {
+ thinkValue = req.Think
+ } else {
+ thinkValue = think
+ }
+
+ // Check if the last user message has attachments
+ // TODO (parthsareen): this logic will change with directory drag and drop
+ hasAttachments := false
+ if len(chat.Messages) > 0 {
+ lastMsg := chat.Messages[len(chat.Messages)-1]
+ if lastMsg.Role == "user" && len(lastMsg.Attachments) > 0 {
+ hasAttachments = true
+ }
+ }
+
+ // Check if agent or tools mode is enabled
+ // Note: Skip agent/tools mode if user has attachments, as the agent doesn't handle file attachments properly
+ registry := tools.NewRegistry()
+ var browser *tools.Browser
+
+ if !hasAttachments {
+ WebSearchEnabled := req.WebSearch != nil && *req.WebSearch
+
+ if WebSearchEnabled {
+ if supportsBrowserTools(req.Model) {
+ browserState, ok := s.browserState(chat)
+ if !ok {
+ browserState = reconstructBrowserState(chat.Messages, tools.DefaultViewTokens)
+ }
+ browser = tools.NewBrowser(browserState)
+ registry.Register(tools.NewBrowserSearch(browser))
+ registry.Register(tools.NewBrowserOpen(browser))
+ registry.Register(tools.NewBrowserFind(browser))
+ } else if supportsWebSearchTools(req.Model) {
+ registry.Register(&tools.WebSearch{})
+ registry.Register(&tools.WebFetch{})
+ }
+ }
+ }
+
+ var thinkingTimeStart *time.Time = nil
+ var thinkingTimeEnd *time.Time = nil
+ // Request-only assistant tool_calls buffer
+ // if tool_calls arrive before any assistant text, we keep them here,
+ // inject them into the next request, and attach on first assistant content/thinking.
+ var pendingAssistantToolCalls []store.ToolCall
+
+ passNum := 1
+
+ for {
+ var toolsExecuted bool
+
+ availableTools := registry.AvailableTools()
+
+ // If we have pending assistant tool_calls and no assistant yet,
+ // build the request against a temporary chat that includes a
+ // request-only assistant with tool_calls inserted BEFORE tool messages
+ reqChat := chat
+ if len(pendingAssistantToolCalls) > 0 {
+ if len(chat.Messages) == 0 || chat.Messages[len(chat.Messages)-1].Role != "assistant" {
+ temp := *chat
+ synth := store.NewMessage("assistant", "", &store.MessageOptions{Model: req.Model, ToolCalls: pendingAssistantToolCalls})
+ insertIdx := len(temp.Messages) - 1
+ for insertIdx >= 0 && temp.Messages[insertIdx].Role == "tool" {
+ insertIdx--
+ }
+ if insertIdx < 0 {
+ temp.Messages = append([]store.Message{synth}, temp.Messages...)
+ } else {
+ tmp := make([]store.Message, 0, len(temp.Messages)+1)
+ tmp = append(tmp, temp.Messages[:insertIdx+1]...)
+ tmp = append(tmp, synth)
+ tmp = append(tmp, temp.Messages[insertIdx+1:]...)
+ temp.Messages = tmp
+ }
+
+ reqChat = &temp
+ }
+ }
+ chatReq, err := s.buildChatRequest(reqChat, req.Model, thinkValue, availableTools)
+ if err != nil {
+ return err
+ }
+
+ err = c.Chat(ctx, chatReq, func(res api.ChatResponse) error {
+ if loading {
+ // Remove the loading indicator on first token
+ cancelLoading()
+ loading = false
+ }
+
+ // Start thinking timer on first thinking content or after tool call when thinking again
+ if res.Message.Thinking != "" && (thinkingTimeStart == nil || thinkingTimeEnd != nil) {
+ now := time.Now()
+ thinkingTimeStart = &now
+ thinkingTimeEnd = nil
+ }
+
+ if res.Message.Content == "" && res.Message.Thinking == "" && len(res.Message.ToolCalls) == 0 {
+ return nil
+ }
+
+ event := EventChat
+ if thinkingTimeStart != nil && res.Message.Content == "" && len(res.Message.ToolCalls) == 0 {
+ event = EventThinking
+ }
+
+ if len(res.Message.ToolCalls) > 0 {
+ event = EventToolCall
+ }
+
+ if event == EventToolCall && thinkingTimeStart != nil && thinkingTimeEnd == nil {
+ now := time.Now()
+ thinkingTimeEnd = &now
+ }
+
+ if event == EventChat && thinkingTimeStart != nil && thinkingTimeEnd == nil && res.Message.Content != "" {
+ now := time.Now()
+ thinkingTimeEnd = &now
+ }
+
+ json.NewEncoder(w).Encode(chatEventFromApiChatResponse(res, thinkingTimeStart, thinkingTimeEnd))
+ flusher.Flush()
+
+ switch event {
+ case EventToolCall:
+ if thinkingTimeEnd != nil {
+ if len(chat.Messages) > 0 && chat.Messages[len(chat.Messages)-1].Role == "assistant" {
+ lastMsg := &chat.Messages[len(chat.Messages)-1]
+ lastMsg.ThinkingTimeEnd = thinkingTimeEnd
+ lastMsg.UpdatedAt = time.Now()
+ s.Store.UpdateLastMessage(chat.ID, *lastMsg)
+ }
+ thinkingTimeStart = nil
+ thinkingTimeEnd = nil
+ }
+
+ // attach tool_calls to an existing assistant if present,
+ // otherwise (for standalone web_search/web_fetch) buffer for request-only injection.
+ if len(res.Message.ToolCalls) > 0 {
+ if len(chat.Messages) > 0 && chat.Messages[len(chat.Messages)-1].Role == "assistant" {
+ toolCalls := make([]store.ToolCall, len(res.Message.ToolCalls))
+ for i, tc := range res.Message.ToolCalls {
+ argsJSON, _ := json.Marshal(tc.Function.Arguments)
+ toolCalls[i] = store.ToolCall{
+ Type: "function",
+ Function: store.ToolFunction{
+ Name: tc.Function.Name,
+ Arguments: string(argsJSON),
+ },
+ }
+ }
+ lastMsg := &chat.Messages[len(chat.Messages)-1]
+ lastMsg.ToolCalls = toolCalls
+ if err := s.Store.UpdateLastMessage(chat.ID, *lastMsg); err != nil {
+ return err
+ }
+ } else {
+ onlyStandalone := true
+ for _, tc := range res.Message.ToolCalls {
+ if !(tc.Function.Name == "web_search" || tc.Function.Name == "web_fetch") {
+ onlyStandalone = false
+ break
+ }
+ }
+ if onlyStandalone {
+ toolCalls := make([]store.ToolCall, len(res.Message.ToolCalls))
+ for i, tc := range res.Message.ToolCalls {
+ argsJSON, _ := json.Marshal(tc.Function.Arguments)
+ toolCalls[i] = store.ToolCall{
+ Type: "function",
+ Function: store.ToolFunction{
+ Name: tc.Function.Name,
+ Arguments: string(argsJSON),
+ },
+ }
+ }
+
+ synth := store.NewMessage("assistant", "", &store.MessageOptions{Model: req.Model, ToolCalls: toolCalls})
+ chat.Messages = append(chat.Messages, synth)
+ if err := s.Store.AppendMessage(chat.ID, synth); err != nil {
+ return err
+ }
+
+ // clear buffer to avoid-injecting again
+ pendingAssistantToolCalls = nil
+ }
+ }
+ }
+
+ for _, toolCall := range res.Message.ToolCalls {
+ // continues loop as tools were executed
+ toolsExecuted = true
+ result, content, err := registry.Execute(ctx, toolCall.Function.Name, toolCall.Function.Arguments)
+ if err != nil {
+ errContent := fmt.Sprintf("Error: %v", err)
+ toolErrMsg := store.NewMessage("tool", errContent, nil)
+ toolErrMsg.ToolName = toolCall.Function.Name
+ chat.Messages = append(chat.Messages, toolErrMsg)
+ if err := s.Store.AppendMessage(chat.ID, toolErrMsg); err != nil {
+ return err
+ }
+
+ // Emit tool error event
+ toolResult := true
+ json.NewEncoder(w).Encode(responses.ChatEvent{
+ EventName: "tool",
+ Content: &errContent,
+ ToolName: &toolCall.Function.Name,
+ })
+ flusher.Flush()
+
+ json.NewEncoder(w).Encode(responses.ChatEvent{
+ EventName: "tool_result",
+ Content: &errContent,
+ ToolName: &toolCall.Function.Name,
+ ToolResult: &toolResult,
+ ToolResultData: nil, // No result data for errors
+ })
+ flusher.Flush()
+ continue
+ }
+
+ var tr json.RawMessage
+ if strings.HasPrefix(toolCall.Function.Name, "browser.search") {
+ // For standalone web_search, ensure the tool message has readable content
+ // so the second-pass model can consume results, while keeping browser state flow intact.
+ // We still persist tool msg with content below.
+ // (No browser state update needed for standalone.)
+ } else if strings.HasPrefix(toolCall.Function.Name, "browser") {
+ stateBytes, err := json.Marshal(browser.State())
+ if err != nil {
+ return fmt.Errorf("failed to marshal browser state: %w", err)
+ }
+ if err := s.Store.UpdateChatBrowserState(chat.ID, json.RawMessage(stateBytes)); err != nil {
+ return fmt.Errorf("failed to persist browser state to chat: %w", err)
+ }
+ // tool result is not added to the tool message for the browser tool
+ } else {
+ var err error
+ tr, err = json.Marshal(result)
+ if err != nil {
+ return fmt.Errorf("failed to marshal tool result: %w", err)
+ }
+ }
+ // ensure tool message sent back to the model has content (if empty, use a sensible fallback)
+ modelContent := content
+ if toolCall.Function.Name == "web_fetch" && modelContent == "" {
+ if str, ok := result.(string); ok {
+ modelContent = str
+ }
+ }
+ if modelContent == "" && len(tr) > 0 {
+ s.log().Debug("tool message empty, sending json result")
+ modelContent = string(tr)
+ }
+ toolMsg := store.NewMessage("tool", modelContent, &store.MessageOptions{
+ ToolResult: &tr,
+ })
+ toolMsg.ToolName = toolCall.Function.Name
+ chat.Messages = append(chat.Messages, toolMsg)
+
+ s.Store.AppendMessage(chat.ID, toolMsg)
+
+ // Emit tool message event (matching agent pattern)
+ toolResult := true
+ json.NewEncoder(w).Encode(responses.ChatEvent{
+ EventName: "tool",
+ Content: &content,
+ ToolName: &toolCall.Function.Name,
+ })
+ flusher.Flush()
+
+ var toolState any = nil
+ if browser != nil {
+ toolState = browser.State()
+ }
+ // Stream tool result to frontend
+
+ json.NewEncoder(w).Encode(responses.ChatEvent{
+ EventName: "tool_result",
+ Content: &content,
+ ToolName: &toolCall.Function.Name,
+ ToolResult: &toolResult,
+ ToolResultData: result,
+ ToolState: toolState,
+ })
+ flusher.Flush()
+ }
+
+ case EventChat:
+ // Append the new message to the chat history
+ if len(chat.Messages) == 0 || chat.Messages[len(chat.Messages)-1].Role != "assistant" {
+ newMsg := store.NewMessage("assistant", "", &store.MessageOptions{Model: req.Model})
+ chat.Messages = append(chat.Messages, newMsg)
+ // Append new message to database
+ if err := s.Store.AppendMessage(chat.ID, newMsg); err != nil {
+ return err
+ }
+ // Attach any buffered tool_calls (request-only) now that assistant has started
+ if len(pendingAssistantToolCalls) > 0 {
+ lastMsg := &chat.Messages[len(chat.Messages)-1]
+ lastMsg.ToolCalls = pendingAssistantToolCalls
+
+ pendingAssistantToolCalls = nil
+ if err := s.Store.UpdateLastMessage(chat.ID, *lastMsg); err != nil {
+ return err
+ }
+ }
+ }
+
+ // Append token to last assistant message & persist
+ lastMsg := &chat.Messages[len(chat.Messages)-1]
+ lastMsg.Content += res.Message.Content
+ lastMsg.UpdatedAt = time.Now()
+ // Update thinking time fields
+ if thinkingTimeStart != nil {
+ lastMsg.ThinkingTimeStart = thinkingTimeStart
+ }
+ if thinkingTimeEnd != nil {
+ lastMsg.ThinkingTimeEnd = thinkingTimeEnd
+ }
+ // Use optimized update for streaming
+ if err := s.Store.UpdateLastMessage(chat.ID, *lastMsg); err != nil {
+ return err
+ }
+ case EventThinking:
+ // Persist thinking content
+ if len(chat.Messages) == 0 || chat.Messages[len(chat.Messages)-1].Role != "assistant" {
+ newMsg := store.NewMessage("assistant", "", &store.MessageOptions{
+ Model: req.Model,
+ Thinking: res.Message.Thinking,
+ })
+ chat.Messages = append(chat.Messages, newMsg)
+ // Append new message to database
+ if err := s.Store.AppendMessage(chat.ID, newMsg); err != nil {
+ return err
+ }
+ // Attach any buffered tool_calls now that assistant exists
+ if len(pendingAssistantToolCalls) > 0 {
+ lastMsg := &chat.Messages[len(chat.Messages)-1]
+ lastMsg.ToolCalls = pendingAssistantToolCalls
+
+ pendingAssistantToolCalls = nil
+ if err := s.Store.UpdateLastMessage(chat.ID, *lastMsg); err != nil {
+ return err
+ }
+ }
+ } else {
+ // Update thinking content of existing message
+ lastMsg := &chat.Messages[len(chat.Messages)-1]
+ lastMsg.Thinking += res.Message.Thinking
+ lastMsg.UpdatedAt = time.Now()
+ // Update thinking time fields
+ if thinkingTimeStart != nil {
+ lastMsg.ThinkingTimeStart = thinkingTimeStart
+ }
+ if thinkingTimeEnd != nil {
+ lastMsg.ThinkingTimeEnd = thinkingTimeEnd
+ }
+
+ // Use optimized update for streaming
+ if err := s.Store.UpdateLastMessage(chat.ID, *lastMsg); err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+ })
+ if err != nil {
+ s.log().Error("chat stream error", "error", err)
+ errorEvent := s.getError(err)
+ json.NewEncoder(w).Encode(errorEvent)
+ flusher.Flush()
+ return nil
+ }
+
+ // If no tools were executed, exit the loop
+ if !toolsExecuted {
+ break
+ }
+
+ passNum++
+ }
+
+ // handle cases where thinking started but didn't finish
+ // this can happen if the client disconnects or the request is cancelled
+ // TODO (jmorganca): this should be merged with code above
+ if thinkingTimeStart != nil && thinkingTimeEnd == nil {
+ now := time.Now()
+ thinkingTimeEnd = &now
+ if len(chat.Messages) > 0 && chat.Messages[len(chat.Messages)-1].Role == "assistant" {
+ lastMsg := &chat.Messages[len(chat.Messages)-1]
+ lastMsg.ThinkingTimeEnd = thinkingTimeEnd
+ lastMsg.UpdatedAt = time.Now()
+ s.Store.UpdateLastMessage(chat.ID, *lastMsg)
+ }
+ }
+
+ json.NewEncoder(w).Encode(responses.ChatEvent{EventName: "done"})
+ flusher.Flush()
+
+ if len(chat.Messages) > 0 {
+ chat.Messages[len(chat.Messages)-1].Stream = false
+ }
+ return s.Store.SetChat(*chat)
+}
+
+func (s *Server) getChat(w http.ResponseWriter, r *http.Request) error {
+ cid := r.PathValue("id")
+
+ if cid == "" {
+ return fmt.Errorf("chat ID is required")
+ }
+
+ chat, err := s.Store.Chat(cid)
+ if err != nil {
+ // Return empty chat if not found
+ data := responses.ChatResponse{
+ Chat: store.Chat{},
+ }
+ w.Header().Set("Content-Type", "application/json")
+ json.NewEncoder(w).Encode(data)
+ return nil //nolint:nilerr
+ }
+
+ // fill missing tool_name on tool messages (from previous tool_calls) so labels don’t flip after reload.
+ if chat != nil && len(chat.Messages) > 0 {
+ for i := range chat.Messages {
+ if chat.Messages[i].Role == "tool" && chat.Messages[i].ToolName == "" && chat.Messages[i].ToolResult != nil {
+ for j := i - 1; j >= 0; j-- {
+ if chat.Messages[j].Role == "assistant" && len(chat.Messages[j].ToolCalls) > 0 {
+ last := chat.Messages[j].ToolCalls[len(chat.Messages[j].ToolCalls)-1]
+ if last.Function.Name != "" {
+ chat.Messages[i].ToolName = last.Function.Name
+ }
+ break
+ }
+ }
+ }
+ }
+ }
+
+ browserState, ok := s.browserState(chat)
+ if !ok {
+ browserState = reconstructBrowserState(chat.Messages, tools.DefaultViewTokens)
+ }
+ // clear the text and lines of all pages as it is not needed for rendering
+ if browserState != nil {
+ for _, page := range browserState.URLToPage {
+ page.Lines = nil
+ page.Text = ""
+ }
+
+ if cleanedState, err := json.Marshal(browserState); err == nil {
+ chat.BrowserState = json.RawMessage(cleanedState)
+ }
+ }
+ data := responses.ChatResponse{
+ Chat: *chat,
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ json.NewEncoder(w).Encode(data)
+ return nil
+}
+
+func (s *Server) renameChat(w http.ResponseWriter, r *http.Request) error {
+ cid := r.PathValue("id")
+ if cid == "" {
+ return fmt.Errorf("chat ID is required")
+ }
+
+ var req struct {
+ Title string `json:"title"`
+ }
+ if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
+ return fmt.Errorf("invalid request body: %w", err)
+ }
+
+ // Get the chat without loading attachments (we only need to update the title)
+ chat, err := s.Store.ChatWithOptions(cid, false)
+ if err != nil {
+ return fmt.Errorf("chat not found: %w", err)
+ }
+
+ // Update the title
+ chat.Title = req.Title
+ if err := s.Store.SetChat(*chat); err != nil {
+ return fmt.Errorf("failed to update chat: %w", err)
+ }
+
+ // Return the updated chat info
+ w.Header().Set("Content-Type", "application/json")
+ json.NewEncoder(w).Encode(chatInfoFromChat(*chat))
+ return nil
+}
+
+func (s *Server) deleteChat(w http.ResponseWriter, r *http.Request) error {
+ cid := r.PathValue("id")
+ if cid == "" {
+ return fmt.Errorf("chat ID is required")
+ }
+
+ // Check if the chat exists (no need to load attachments)
+ _, err := s.Store.ChatWithOptions(cid, false)
+ if err != nil {
+ if errors.Is(err, not.Found) {
+ w.WriteHeader(http.StatusNotFound)
+ return fmt.Errorf("chat not found")
+ }
+ return fmt.Errorf("failed to get chat: %w", err)
+ }
+
+ // Delete the chat
+ if err := s.Store.DeleteChat(cid); err != nil {
+ return fmt.Errorf("failed to delete chat: %w", err)
+ }
+
+ w.WriteHeader(http.StatusOK)
+ return nil
+}
+
+// TODO(parthsareen): consolidate events within the function
+func chatEventFromApiChatResponse(res api.ChatResponse, thinkingTimeStart *time.Time, thinkingTimeEnd *time.Time) responses.ChatEvent {
+ // If there are tool calls, send assistant_with_tools event
+ if len(res.Message.ToolCalls) > 0 {
+ // Convert API tool calls to store tool calls
+ storeToolCalls := make([]store.ToolCall, len(res.Message.ToolCalls))
+ for i, tc := range res.Message.ToolCalls {
+ argsJSON, _ := json.Marshal(tc.Function.Arguments)
+ storeToolCalls[i] = store.ToolCall{
+ Type: "function",
+ Function: store.ToolFunction{
+ Name: tc.Function.Name,
+ Arguments: string(argsJSON),
+ },
+ }
+ }
+
+ var content *string
+ if res.Message.Content != "" {
+ content = &res.Message.Content
+ }
+ var thinking *string
+ if res.Message.Thinking != "" {
+ thinking = &res.Message.Thinking
+ }
+
+ return responses.ChatEvent{
+ EventName: "assistant_with_tools",
+ Content: content,
+ Thinking: thinking,
+ ToolCalls: storeToolCalls,
+ ThinkingTimeStart: thinkingTimeStart,
+ ThinkingTimeEnd: thinkingTimeEnd,
+ }
+ }
+
+ // Otherwise, send regular chat event
+ var content *string
+ if res.Message.Content != "" {
+ content = &res.Message.Content
+ }
+ var thinking *string
+ if res.Message.Thinking != "" {
+ thinking = &res.Message.Thinking
+ }
+
+ return responses.ChatEvent{
+ EventName: "chat",
+ Content: content,
+ Thinking: thinking,
+ ThinkingTimeStart: thinkingTimeStart,
+ ThinkingTimeEnd: thinkingTimeEnd,
+ }
+}
+
+func chatInfoFromChat(chat store.Chat) responses.ChatInfo {
+ userExcerpt := ""
+ var updatedAt time.Time
+
+ for _, msg := range chat.Messages {
+ // extract the first user message as the user excerpt
+ if msg.Role == "user" && userExcerpt == "" {
+ userExcerpt = msg.Content
+ }
+ // update the updated at time
+ if msg.UpdatedAt.After(updatedAt) {
+ updatedAt = msg.UpdatedAt
+ }
+ }
+
+ return responses.ChatInfo{
+ ID: chat.ID,
+ Title: chat.Title,
+ UserExcerpt: userExcerpt,
+ CreatedAt: chat.CreatedAt,
+ UpdatedAt: updatedAt,
+ }
+}
+
+func (s *Server) getSettings(w http.ResponseWriter, r *http.Request) error {
+ settings, err := s.Store.Settings()
+ if err != nil {
+ return fmt.Errorf("failed to load settings: %w", err)
+ }
+
+ // set default models directory if not set
+ if settings.Models == "" {
+ settings.Models = envconfig.Models()
+ }
+
+ // set default context length if not set
+ if settings.ContextLength == 0 {
+ settings.ContextLength = 4096
+ }
+
+ // Include current runtime settings
+ settings.Agent = s.Agent
+ settings.Tools = s.Tools
+ settings.WorkingDir = s.WorkingDir
+
+ w.Header().Set("Content-Type", "application/json")
+ return json.NewEncoder(w).Encode(responses.SettingsResponse{
+ Settings: settings,
+ })
+}
+
+func (s *Server) settings(w http.ResponseWriter, r *http.Request) error {
+ old, err := s.Store.Settings()
+ if err != nil {
+ return fmt.Errorf("failed to load settings: %w", err)
+ }
+
+ var settings store.Settings
+ if err := json.NewDecoder(r.Body).Decode(&settings); err != nil {
+ return fmt.Errorf("invalid request body: %w", err)
+ }
+
+ if err := s.Store.SetSettings(settings); err != nil {
+ return fmt.Errorf("failed to save settings: %w", err)
+ }
+
+ if old.ContextLength != settings.ContextLength ||
+ old.Models != settings.Models ||
+ old.Expose != settings.Expose {
+ s.Restart()
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ return json.NewEncoder(w).Encode(responses.SettingsResponse{
+ Settings: settings,
+ })
+}
+
+func (s *Server) getInferenceCompute(w http.ResponseWriter, r *http.Request) error {
+ ctx, cancel := context.WithTimeout(r.Context(), 500*time.Millisecond)
+ defer cancel()
+ serverInferenceComputes, err := server.GetInferenceComputer(ctx)
+ if err != nil {
+ s.log().Error("failed to get inference compute", "error", err)
+ return fmt.Errorf("failed to get inference compute: %w", err)
+ }
+
+ inferenceComputes := make([]responses.InferenceCompute, len(serverInferenceComputes))
+ for i, ic := range serverInferenceComputes {
+ inferenceComputes[i] = responses.InferenceCompute{
+ Library: ic.Library,
+ Variant: ic.Variant,
+ Compute: ic.Compute,
+ Driver: ic.Driver,
+ Name: ic.Name,
+ VRAM: ic.VRAM,
+ }
+ }
+
+ response := responses.InferenceComputeResponse{
+ InferenceComputes: inferenceComputes,
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ return json.NewEncoder(w).Encode(response)
+}
+
+func (s *Server) modelUpstream(w http.ResponseWriter, r *http.Request) error {
+ if r.Method != "POST" {
+ return fmt.Errorf("method not allowed")
+ }
+
+ var req struct {
+ Model string `json:"model"`
+ }
+ if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
+ return fmt.Errorf("invalid request body: %w", err)
+ }
+
+ if req.Model == "" {
+ return fmt.Errorf("model is required")
+ }
+
+ digest, pushTime, err := s.checkModelUpstream(r.Context(), req.Model, 5*time.Second)
+ if err != nil {
+ s.log().Warn("failed to check upstream digest", "error", err, "model", req.Model)
+ response := responses.ModelUpstreamResponse{
+ Error: err.Error(),
+ }
+ w.Header().Set("Content-Type", "application/json")
+ return json.NewEncoder(w).Encode(response)
+ }
+
+ response := responses.ModelUpstreamResponse{
+ Digest: digest,
+ PushTime: pushTime,
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ return json.NewEncoder(w).Encode(response)
+}
+
+func userAgent() string {
+ buildinfo, _ := debug.ReadBuildInfo()
+
+ version := buildinfo.Main.Version
+ if version == "(devel)" {
+ // When using `go run .` the version is "(devel)". This is seen
+ // as an invalid version by ollama.com and so it defaults to
+ // "needs upgrade" for some requests, such as pulls. These
+ // checks can be skipped by using the special version "v0.0.0",
+ // so we set it to that here.
+ version = "v0.0.0"
+ }
+
+ return fmt.Sprintf("ollama/%s (%s %s) app/%s Go/%s",
+ version,
+ runtime.GOARCH,
+ runtime.GOOS,
+ version,
+ runtime.Version(),
+ )
+}
+
+// convertToOllamaTool converts a tool schema from our tools package format to Ollama API format
+func convertToOllamaTool(toolSchema map[string]any) api.Tool {
+ tool := api.Tool{
+ Type: "function",
+ Function: api.ToolFunction{
+ Name: getStringFromMap(toolSchema, "name", ""),
+ Description: getStringFromMap(toolSchema, "description", ""),
+ },
+ }
+
+ tool.Function.Parameters.Type = "object"
+ tool.Function.Parameters.Required = []string{}
+ tool.Function.Parameters.Properties = make(map[string]api.ToolProperty)
+
+ if schemaProps, ok := toolSchema["schema"].(map[string]any); ok {
+ tool.Function.Parameters.Type = getStringFromMap(schemaProps, "type", "object")
+
+ if props, ok := schemaProps["properties"].(map[string]any); ok {
+ tool.Function.Parameters.Properties = make(map[string]api.ToolProperty)
+
+ for propName, propDef := range props {
+ if propMap, ok := propDef.(map[string]any); ok {
+ prop := api.ToolProperty{
+ Type: api.PropertyType{getStringFromMap(propMap, "type", "string")},
+ Description: getStringFromMap(propMap, "description", ""),
+ }
+ tool.Function.Parameters.Properties[propName] = prop
+ }
+ }
+ }
+
+ if required, ok := schemaProps["required"].([]string); ok {
+ tool.Function.Parameters.Required = required
+ } else if requiredAny, ok := schemaProps["required"].([]any); ok {
+ required := make([]string, len(requiredAny))
+ for i, r := range requiredAny {
+ if s, ok := r.(string); ok {
+ required[i] = s
+ }
+ }
+ tool.Function.Parameters.Required = required
+ }
+ }
+
+ return tool
+}
+
+// getStringFromMap safely gets a string from a map
+func getStringFromMap(m map[string]any, key, defaultValue string) string {
+ if val, ok := m[key].(string); ok {
+ return val
+ }
+ return defaultValue
+}
+
+// isImageAttachment checks if a filename is an image file
+func isImageAttachment(filename string) bool {
+ ext := strings.ToLower(filename)
+ return strings.HasSuffix(ext, ".png") || strings.HasSuffix(ext, ".jpg") || strings.HasSuffix(ext, ".jpeg") || strings.HasSuffix(ext, ".webp")
+}
+
+// ptr is a convenience function for &literal
+func ptr[T any](v T) *T { return &v }
+
+// Browser tools simulate a full browser environment, allowing for actions like searching, opening, and interacting with web pages (e.g., "browser_search", "browser_open", "browser_find"). Currently only gpt-oss models support browser tools.
+func supportsBrowserTools(model string) bool {
+ return strings.HasPrefix(strings.ToLower(model), "gpt-oss")
+}
+
+// Web search tools are simpler, providing only basic web search and fetch capabilities (e.g., "web_search", "web_fetch") without simulating a browser. Currently only qwen3 and deepseek-v3 support web search tools.
+func supportsWebSearchTools(model string) bool {
+ model = strings.ToLower(model)
+ prefixes := []string{"qwen3", "deepseek-v3"}
+ for _, p := range prefixes {
+ if strings.HasPrefix(model, p) {
+ return true
+ }
+ }
+ return false
+}
+
+// buildChatRequest converts store.Chat to api.ChatRequest
+func (s *Server) buildChatRequest(chat *store.Chat, model string, think any, availableTools []map[string]any) (*api.ChatRequest, error) {
+ var msgs []api.Message
+ for _, m := range chat.Messages {
+ // Skip empty messages if present
+ if m.Content == "" && m.Thinking == "" && len(m.ToolCalls) == 0 && len(m.Attachments) == 0 {
+ continue
+ }
+
+ apiMsg := api.Message{Role: m.Role, Thinking: m.Thinking}
+
+ sb := strings.Builder{}
+ sb.WriteString(m.Content)
+
+ var images []api.ImageData
+ if m.Role == "user" && len(m.Attachments) > 0 {
+ for _, a := range m.Attachments {
+ if isImageAttachment(a.Filename) {
+ images = append(images, api.ImageData(a.Data))
+ } else {
+ content := convertBytesToText(a.Data, a.Filename)
+ sb.WriteString(fmt.Sprintf("\n--- File: %s ---\n%s\n--- End of %s ---",
+ a.Filename, content, a.Filename))
+ }
+ }
+ }
+
+ apiMsg.Content = sb.String()
+ apiMsg.Images = images
+
+ switch m.Role {
+ case "assistant":
+ if len(m.ToolCalls) > 0 {
+ var toolCalls []api.ToolCall
+ for _, tc := range m.ToolCalls {
+ var args api.ToolCallFunctionArguments
+ if err := json.Unmarshal([]byte(tc.Function.Arguments), &args); err != nil {
+ s.log().Error("failed to parse tool call arguments", "error", err, "function_name", tc.Function.Name, "arguments", tc.Function.Arguments)
+ continue
+ }
+
+ toolCalls = append(toolCalls, api.ToolCall{
+ Function: api.ToolCallFunction{
+ Name: tc.Function.Name,
+ Arguments: args,
+ },
+ })
+ }
+ apiMsg.ToolCalls = toolCalls
+ }
+ case "tool":
+ apiMsg.Role = "tool"
+ apiMsg.Content = m.Content
+ apiMsg.ToolName = m.ToolName
+ case "user", "system":
+ // User and system messages are handled normally
+ default:
+ // Log unknown roles but still include them
+ s.log().Debug("unknown message role", "role", m.Role)
+ }
+
+ msgs = append(msgs, apiMsg)
+ }
+
+ var thinkValue *api.ThinkValue
+ if think != nil {
+ // Only set Think if it's actually requesting thinking
+ if boolValue, ok := think.(bool); ok {
+ if boolValue {
+ thinkValue = &api.ThinkValue{Value: boolValue}
+ }
+ } else if stringValue, ok := think.(string); ok {
+ if stringValue != "" && stringValue != "none" {
+ thinkValue = &api.ThinkValue{Value: stringValue}
+ }
+ }
+ }
+
+ req := &api.ChatRequest{
+ Model: model,
+ Messages: msgs,
+ Stream: ptr(true),
+ Think: thinkValue,
+ }
+
+ if len(availableTools) > 0 {
+ tools := make(api.Tools, len(availableTools))
+ for i, toolSchema := range availableTools {
+ tools[i] = convertToOllamaTool(toolSchema)
+ }
+ req.Tools = tools
+ }
+
+ return req, nil
+}
diff --git a/app/ui/ui_test.go b/app/ui/ui_test.go
new file mode 100644
index 000000000..980797435
--- /dev/null
+++ b/app/ui/ui_test.go
@@ -0,0 +1,423 @@
+//go:build windows || darwin
+
+package ui
+
+import (
+ "bytes"
+ "encoding/json"
+ "io"
+ "net/http"
+ "net/http/httptest"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "testing"
+
+ "github.com/ollama/ollama/app/store"
+)
+
+func TestHandlePostApiSettings(t *testing.T) {
+ tests := []struct {
+ name string
+ requested store.Settings
+ wantErr bool
+ }{
+ {
+ name: "valid settings update - all fields",
+ requested: store.Settings{
+ Expose: true,
+ Browser: true,
+ Models: "/custom/models",
+ Agent: true,
+ Tools: true,
+ WorkingDir: "/workspace",
+ },
+ wantErr: false,
+ },
+ {
+ name: "partial settings update",
+ requested: store.Settings{
+ Agent: true,
+ Tools: false,
+ WorkingDir: "/new/path",
+ },
+ wantErr: false,
+ },
+ {
+ name: "settings with special characters in paths",
+ requested: store.Settings{
+ Models: "/path with spaces/models",
+ WorkingDir: "/tmp/work-dir_123",
+ Agent: true,
+ },
+ wantErr: false,
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ testStore := &store.Store{
+ DBPath: filepath.Join(t.TempDir(), "db.sqlite"),
+ }
+ defer testStore.Close() // Ensure database is closed before cleanup
+
+ body, err := json.Marshal(tt.requested)
+ if err != nil {
+ t.Fatalf("failed to marshal test body: %v", err)
+ }
+
+ req := httptest.NewRequest("POST", "/api/v1/settings", bytes.NewReader(body))
+ req.Header.Set("Content-Type", "application/json")
+ rr := httptest.NewRecorder()
+
+ // Set up server with test store
+ server := &Server{
+ Store: testStore,
+ Restart: func() {}, // Mock restart function for tests
+ }
+
+ if err := server.settings(rr, req); (err != nil) != tt.wantErr {
+ t.Errorf("handlePostApiSettings() error = %v, wantErr %v", err, tt.wantErr)
+ }
+ if rr.Code != http.StatusOK {
+ t.Errorf("handlePostApiSettings() status = %v, want %v", rr.Code, http.StatusOK)
+ }
+
+ // Check settings were saved correctly (if no error expected)
+ if !tt.wantErr {
+ savedSettings, err := testStore.Settings()
+ if err != nil {
+ t.Errorf("failed to retrieve saved settings: %v", err)
+ } else {
+ // Compare field by field, accounting for defaults that may be set by the store
+ if savedSettings.Expose != tt.requested.Expose {
+ t.Errorf("Expose: got %v, want %v", savedSettings.Expose, tt.requested.Expose)
+ }
+ if savedSettings.Browser != tt.requested.Browser {
+ t.Errorf("Browser: got %v, want %v", savedSettings.Browser, tt.requested.Browser)
+ }
+ if savedSettings.Agent != tt.requested.Agent {
+ t.Errorf("Agent: got %v, want %v", savedSettings.Agent, tt.requested.Agent)
+ }
+ if savedSettings.Tools != tt.requested.Tools {
+ t.Errorf("Tools: got %v, want %v", savedSettings.Tools, tt.requested.Tools)
+ }
+ if savedSettings.WorkingDir != tt.requested.WorkingDir {
+ t.Errorf("WorkingDir: got %q, want %q", savedSettings.WorkingDir, tt.requested.WorkingDir)
+ }
+ // Only check Models if explicitly set in the test case
+ if tt.requested.Models != "" && savedSettings.Models != tt.requested.Models {
+ t.Errorf("Models: got %q, want %q", savedSettings.Models, tt.requested.Models)
+ }
+ }
+ }
+ })
+ }
+}
+
+func TestAuthenticationMiddleware(t *testing.T) {
+ tests := []struct {
+ name string
+ method string
+ contentType string
+ tokenCookie string
+ serverToken string
+ wantStatus int
+ wantError string
+ setupRequest func(*http.Request)
+ }{
+ {
+ name: "missing token cookie",
+ method: "GET",
+ tokenCookie: "",
+ serverToken: "test-token-123",
+ wantStatus: http.StatusForbidden,
+ wantError: "Token is required",
+ },
+ {
+ name: "invalid token value",
+ method: "GET",
+ tokenCookie: "wrong-token",
+ serverToken: "test-token-123",
+ wantStatus: http.StatusForbidden,
+ wantError: "Token is required",
+ },
+ {
+ name: "valid token - GET request",
+ method: "GET",
+ tokenCookie: "test-token-123",
+ serverToken: "test-token-123",
+ wantStatus: http.StatusOK,
+ wantError: "",
+ },
+ {
+ name: "valid token - POST with application/json",
+ method: "POST",
+ contentType: "application/json",
+ tokenCookie: "test-token-123",
+ serverToken: "test-token-123",
+ wantStatus: http.StatusOK,
+ wantError: "",
+ },
+ {
+ name: "POST without Content-Type header",
+ method: "POST",
+ contentType: "",
+ tokenCookie: "test-token-123",
+ serverToken: "test-token-123",
+ wantStatus: http.StatusForbidden,
+ wantError: "Content-Type must be application/json",
+ },
+ {
+ name: "POST with wrong Content-Type",
+ method: "POST",
+ contentType: "text/plain",
+ tokenCookie: "test-token-123",
+ serverToken: "test-token-123",
+ wantStatus: http.StatusForbidden,
+ wantError: "Content-Type must be application/json",
+ },
+ {
+ name: "OPTIONS request (CORS preflight) - should bypass auth",
+ method: "OPTIONS",
+ tokenCookie: "",
+ serverToken: "test-token-123",
+ wantStatus: http.StatusOK,
+ wantError: "",
+ setupRequest: func(r *http.Request) {
+ // Simulate CORS being enabled
+ // Note: This assumes CORS() returns true in test environment
+ },
+ },
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ // Create a test handler that just returns 200 OK if auth passes
+ testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ w.WriteHeader(http.StatusOK)
+ json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
+ })
+
+ // Create server with test token
+ server := &Server{
+ Token: tt.serverToken,
+ }
+
+ // Get the authentication middleware by calling Handler()
+ // We need to wrap our test handler with the auth middleware
+ handler := server.Handler()
+
+ // Create a test router to simulate the authentication middleware
+ mux := http.NewServeMux()
+ mux.Handle("/test", handler)
+
+ // But since Handler() returns the full router, we'll need a different approach
+ // Let's create a minimal handler that includes just the auth logic
+ authHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ // Add CORS headers for dev work
+ if r.Method == "OPTIONS" {
+ w.WriteHeader(http.StatusOK)
+ return
+ }
+
+ if r.Method == "POST" && r.Header.Get("Content-Type") != "application/json" {
+ w.WriteHeader(http.StatusForbidden)
+ json.NewEncoder(w).Encode(map[string]string{"error": "Content-Type must be application/json"})
+ return
+ }
+
+ cookie, err := r.Cookie("token")
+ if err != nil {
+ w.WriteHeader(http.StatusForbidden)
+ json.NewEncoder(w).Encode(map[string]string{"error": "Token is required"})
+ return
+ }
+
+ if cookie.Value != server.Token {
+ w.WriteHeader(http.StatusForbidden)
+ json.NewEncoder(w).Encode(map[string]string{"error": "Token is required"})
+ return
+ }
+
+ // If auth passes, call the test handler
+ testHandler.ServeHTTP(w, r)
+ })
+
+ // Create test request
+ req := httptest.NewRequest(tt.method, "/test", nil)
+
+ // Set Content-Type if provided
+ if tt.contentType != "" {
+ req.Header.Set("Content-Type", tt.contentType)
+ }
+
+ // Set token cookie if provided
+ if tt.tokenCookie != "" {
+ req.AddCookie(&http.Cookie{
+ Name: "token",
+ Value: tt.tokenCookie,
+ })
+ }
+
+ // Run any additional setup
+ if tt.setupRequest != nil {
+ tt.setupRequest(req)
+ }
+
+ // Create response recorder
+ rr := httptest.NewRecorder()
+
+ // Serve the request
+ authHandler.ServeHTTP(rr, req)
+
+ // Check status code
+ if rr.Code != tt.wantStatus {
+ t.Errorf("handler returned wrong status code: got %v want %v", rr.Code, tt.wantStatus)
+ }
+
+ // Check error message if expected
+ if tt.wantError != "" {
+ var response map[string]string
+ if err := json.NewDecoder(rr.Body).Decode(&response); err != nil {
+ t.Fatalf("failed to decode response body: %v", err)
+ }
+
+ if response["error"] != tt.wantError {
+ t.Errorf("handler returned wrong error message: got %v want %v", response["error"], tt.wantError)
+ }
+ }
+ })
+ }
+}
+
+func TestUserAgent(t *testing.T) {
+ ua := userAgent()
+
+ // The userAgent function should return a string in the format:
+ // "ollama/version (arch os) app/version Go/goversion"
+ // Example: "ollama/v0.1.28 (amd64 darwin) Go/go1.21.0"
+
+ if ua == "" {
+ t.Fatal("userAgent returned empty string")
+ }
+
+ req := httptest.NewRequest("GET", "/", nil)
+ req.Header.Set("User-Agent", ua)
+
+ // This is a copy of the logic ollama.com uses to parse the user agent
+ clientInfoFromRequest := func(r *http.Request) struct {
+ Product string
+ Version string
+ OS string
+ Arch string
+ AppVersion string
+ } {
+ product, rest, _ := strings.Cut(r.UserAgent(), " ")
+ client, version, ok := strings.Cut(product, "/")
+ if !ok {
+ return struct {
+ Product string
+ Version string
+ OS string
+ Arch string
+ AppVersion string
+ }{}
+ }
+
+ if version != "" && version[0] != 'v' {
+ version = "v" + version
+ }
+
+ arch, rest, _ := strings.Cut(rest, " ")
+ arch = strings.Trim(arch, "(")
+ os, rest, _ := strings.Cut(rest, ")")
+
+ var appVersion string
+ if strings.Contains(rest, "app/") {
+ _, appPart, found := strings.Cut(rest, "app/")
+ if found {
+ appVersion = strings.Fields(strings.TrimSpace(appPart))[0]
+ if appVersion != "" && appVersion[0] != 'v' {
+ appVersion = "v" + appVersion
+ }
+ }
+ }
+
+ return struct {
+ Product string
+ Version string
+ OS string
+ Arch string
+ AppVersion string
+ }{
+ Product: client,
+ Version: version,
+ OS: os,
+ Arch: arch,
+ AppVersion: appVersion,
+ }
+ }
+
+ info := clientInfoFromRequest(req)
+ if info.Product != "ollama" {
+ t.Errorf("Expected Product to be 'ollama', got '%s'", info.Product)
+ }
+
+ if info.Version != "" && info.Version[0] != 'v' {
+ t.Errorf("Expected Version to start with 'v', got '%s'", info.Version)
+ }
+
+ expectedOS := runtime.GOOS
+ if info.OS != expectedOS {
+ t.Errorf("Expected OS to be '%s', got '%s'", expectedOS, info.OS)
+ }
+
+ expectedArch := runtime.GOARCH
+ if info.Arch != expectedArch {
+ t.Errorf("Expected Arch to be '%s', got '%s'", expectedArch, info.Arch)
+ }
+
+ if info.AppVersion != "" && info.AppVersion[0] != 'v' {
+ t.Errorf("Expected AppVersion to start with 'v', got '%s'", info.AppVersion)
+ }
+
+ t.Logf("User Agent: %s", ua)
+ t.Logf("Parsed - Product: %s, Version: %s, OS: %s, Arch: %s",
+ info.Product, info.Version, info.OS, info.Arch)
+}
+
+func TestUserAgentTransport(t *testing.T) {
+ ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("Content-Type", "text/plain")
+ w.Write([]byte(r.Header.Get("User-Agent")))
+ }))
+ defer ts.Close()
+ server := &Server{}
+
+ client := server.httpClient()
+ resp, err := client.Get(ts.URL)
+ if err != nil {
+ t.Fatalf("Failed to make request: %v", err)
+ }
+ defer resp.Body.Close()
+
+ // In this case the User-Agent is the response body, as the server just echoes it back
+ body, err := io.ReadAll(resp.Body)
+ if err != nil {
+ t.Fatalf("Failed to read response: %v", err)
+ }
+
+ receivedUA := string(body)
+ expectedUA := userAgent()
+
+ if receivedUA != expectedUA {
+ t.Errorf("User-Agent mismatch\nExpected: %s\nReceived: %s", expectedUA, receivedUA)
+ }
+
+ if !strings.HasPrefix(receivedUA, "ollama/") {
+ t.Errorf("User-Agent should start with 'ollama/', got: %s", receivedUA)
+ }
+
+ t.Logf("User-Agent transport successfully set: %s", receivedUA)
+}
diff --git a/app/lifecycle/updater.go b/app/updater/updater.go
similarity index 64%
rename from app/lifecycle/updater.go
rename to app/updater/updater.go
index 4d3c7d8dc..473ecf466 100644
--- a/app/lifecycle/updater.go
+++ b/app/updater/updater.go
@@ -1,4 +1,6 @@
-package lifecycle
+//go:build windows || darwin
+
+package updater
import (
"context"
@@ -19,14 +21,24 @@ import (
"strings"
"time"
+ "github.com/ollama/ollama/app/store"
+ "github.com/ollama/ollama/app/version"
"github.com/ollama/ollama/auth"
- "github.com/ollama/ollama/version"
)
var (
- UpdateCheckURLBase = "https://ollama.com/api/update"
- UpdateDownloaded = false
- UpdateCheckInterval = 60 * 60 * time.Second
+ UpdateCheckURLBase = "https://ollama.com/api/update"
+ UpdateDownloaded = false
+ UpdateCheckInterval = 60 * 60 * time.Second
+ UpdateCheckInitialDelay = 3 * time.Second // 30 * time.Second
+
+ UpdateStageDir string
+ UpgradeLogFile string
+ UpgradeMarkerFile string
+ Installer string
+ UserAgentOS string
+
+ VerifyDownload func() error
)
// TODO - maybe move up to the API package?
@@ -35,7 +47,7 @@ type UpdateResponse struct {
UpdateVersion string `json:"version"`
}
-func IsNewReleaseAvailable(ctx context.Context) (bool, UpdateResponse) {
+func (u *Updater) checkForUpdate(ctx context.Context) (bool, UpdateResponse) {
var updateResp UpdateResponse
requestURL, err := url.Parse(UpdateCheckURLBase)
@@ -49,18 +61,29 @@ func IsNewReleaseAvailable(ctx context.Context) (bool, UpdateResponse) {
query.Add("version", version.Version)
query.Add("ts", strconv.FormatInt(time.Now().Unix(), 10))
- nonce, err := auth.NewNonce(rand.Reader, 16)
- if err != nil {
- return false, updateResp
+ // The original macOS app used to use the device ID
+ // to check for updates so include it if present
+ if runtime.GOOS == "darwin" {
+ if id, err := u.Store.ID(); err == nil && id != "" {
+ query.Add("id", id)
+ }
}
- query.Add("nonce", nonce)
- requestURL.RawQuery = query.Encode()
+ var signature string
- data := []byte(fmt.Sprintf("%s,%s", http.MethodGet, requestURL.RequestURI()))
- signature, err := auth.Sign(ctx, data)
+ nonce, err := auth.NewNonce(rand.Reader, 16)
if err != nil {
- return false, updateResp
+ // Don't sign if we haven't yet generated a key pair for the server
+ slog.Debug("unable to generate nonce for update check request", "error", err)
+ } else {
+ query.Add("nonce", nonce)
+ requestURL.RawQuery = query.Encode()
+
+ data := []byte(fmt.Sprintf("%s,%s", http.MethodGet, requestURL.RequestURI()))
+ signature, err = auth.Sign(ctx, data)
+ if err != nil {
+ slog.Debug("unable to generate signature for update check request", "error", err)
+ }
}
req, err := http.NewRequestWithContext(ctx, http.MethodGet, requestURL.String(), nil)
@@ -68,10 +91,13 @@ func IsNewReleaseAvailable(ctx context.Context) (bool, UpdateResponse) {
slog.Warn(fmt.Sprintf("failed to check for update: %s", err))
return false, updateResp
}
- req.Header.Set("Authorization", signature)
- req.Header.Set("User-Agent", fmt.Sprintf("ollama/%s (%s %s) Go/%s", version.Version, runtime.GOARCH, runtime.GOOS, runtime.Version()))
+ if signature != "" {
+ req.Header.Set("Authorization", signature)
+ }
+ ua := fmt.Sprintf("ollama/%s %s Go/%s %s", version.Version, runtime.GOARCH, runtime.Version(), UserAgentOS)
+ req.Header.Set("User-Agent", ua)
- slog.Debug("checking for available update", "requestURL", requestURL)
+ slog.Debug("checking for available update", "requestURL", requestURL, "User-Agent", ua)
resp, err := http.DefaultClient.Do(req)
if err != nil {
slog.Warn(fmt.Sprintf("failed to check for update: %s", err))
@@ -104,13 +130,27 @@ func IsNewReleaseAvailable(ctx context.Context) (bool, UpdateResponse) {
return true, updateResp
}
-func DownloadNewRelease(ctx context.Context, updateResp UpdateResponse) error {
+func (u *Updater) DownloadNewRelease(ctx context.Context, updateResp UpdateResponse) error {
// Do a head first to check etag info
req, err := http.NewRequestWithContext(ctx, http.MethodHead, updateResp.UpdateURL, nil)
if err != nil {
return err
}
+ // In case of slow downloads, continue the update check in the background
+ bgctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ go func() {
+ for {
+ select {
+ case <-bgctx.Done():
+ return
+ case <-time.After(UpdateCheckInterval):
+ u.checkForUpdate(bgctx)
+ }
+ }
+ }()
+
resp, err := http.DefaultClient.Do(req)
if err != nil {
return fmt.Errorf("error checking update: %w", err)
@@ -135,11 +175,11 @@ func DownloadNewRelease(ctx context.Context, updateResp UpdateResponse) error {
// Check to see if we already have it downloaded
_, err = os.Stat(stageFilename)
if err == nil {
- slog.Info("update already downloaded")
+ slog.Info("update already downloaded", "bundle", stageFilename)
return nil
}
- cleanupOldDownloads()
+ cleanupOldDownloads(UpdateStageDir)
req.Method = http.MethodGet
resp, err = http.DefaultClient.Do(req)
@@ -176,12 +216,16 @@ func DownloadNewRelease(ctx context.Context, updateResp UpdateResponse) error {
}
slog.Info("new update downloaded " + stageFilename)
+ if err := VerifyDownload(); err != nil {
+ _ = os.Remove(stageFilename)
+ return fmt.Errorf("%s - %s", resp.Request.URL.String(), err)
+ }
UpdateDownloaded = true
return nil
}
-func cleanupOldDownloads() {
- files, err := os.ReadDir(UpdateStageDir)
+func cleanupOldDownloads(stageDir string) {
+ files, err := os.ReadDir(stageDir)
if err != nil && errors.Is(err, os.ErrNotExist) {
// Expected behavior on first run
return
@@ -190,7 +234,7 @@ func cleanupOldDownloads() {
return
}
for _, file := range files {
- fullname := filepath.Join(UpdateStageDir, file.Name())
+ fullname := filepath.Join(stageDir, file.Name())
slog.Debug("cleaning up old download: " + fullname)
err = os.RemoveAll(fullname)
if err != nil {
@@ -199,22 +243,26 @@ func cleanupOldDownloads() {
}
}
-func StartBackgroundUpdaterChecker(ctx context.Context, cb func(string) error) {
+type Updater struct {
+ Store *store.Store
+}
+
+func (u *Updater) StartBackgroundUpdaterChecker(ctx context.Context, cb func(string) error) {
go func() {
// Don't blast an update message immediately after startup
- // time.Sleep(30 * time.Second)
- time.Sleep(3 * time.Second)
-
+ time.Sleep(UpdateCheckInitialDelay)
+ slog.Info("beginning update checker", "interval", UpdateCheckInterval)
for {
- available, resp := IsNewReleaseAvailable(ctx)
+ available, resp := u.checkForUpdate(ctx)
if available {
- err := DownloadNewRelease(ctx, resp)
+ err := u.DownloadNewRelease(ctx, resp)
if err != nil {
slog.Error(fmt.Sprintf("failed to download new release: %s", err))
- }
- err = cb(resp.UpdateVersion)
- if err != nil {
- slog.Warn(fmt.Sprintf("failed to register update available with tray: %s", err))
+ } else {
+ err = cb(resp.UpdateVersion)
+ if err != nil {
+ slog.Warn(fmt.Sprintf("failed to register update available with tray: %s", err))
+ }
}
}
select {
diff --git a/app/updater/updater_darwin.go b/app/updater/updater_darwin.go
new file mode 100644
index 000000000..2a9dfb01b
--- /dev/null
+++ b/app/updater/updater_darwin.go
@@ -0,0 +1,446 @@
+package updater
+
+// #cgo CFLAGS: -x objective-c
+// #cgo LDFLAGS: -framework Webkit -framework Cocoa -framework LocalAuthentication -framework ServiceManagement
+// #include "updater_darwin.h"
+// typedef const char cchar_t;
+import "C"
+
+import (
+ "archive/zip"
+ "errors"
+ "fmt"
+ "io"
+ "log/slog"
+ "os"
+ "os/user"
+ "path/filepath"
+ "strings"
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/sys/unix"
+)
+
+var (
+ appBackupDir string
+ SystemWidePath = "/Applications/Ollama.app"
+)
+
+var BundlePath = func() string {
+ if bundle := alreadyMoved(); bundle != "" {
+ return bundle
+ }
+
+ exe, err := os.Executable()
+ if err != nil {
+ return ""
+ }
+
+ // We also install this binary in Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel
+ if filepath.Base(exe) == "Squirrel" &&
+ filepath.Base(filepath.Dir(filepath.Dir(filepath.Dir(filepath.Dir(filepath.Dir(exe)))))) == "Contents" {
+ return filepath.Dir(filepath.Dir(filepath.Dir(filepath.Dir(filepath.Dir(filepath.Dir(exe))))))
+ }
+
+ // Make sure we're in a proper macOS app bundle structure (Contents/MacOS)
+ if filepath.Base(filepath.Dir(exe)) != "MacOS" ||
+ filepath.Base(filepath.Dir(filepath.Dir(exe))) != "Contents" {
+ return ""
+ }
+
+ return filepath.Dir(filepath.Dir(filepath.Dir(exe)))
+}()
+
+func init() {
+ VerifyDownload = verifyDownload
+ Installer = "Ollama-darwin.zip"
+ home, err := os.UserHomeDir()
+ if err != nil {
+ panic(err)
+ }
+
+ var uts unix.Utsname
+ if err := unix.Uname(&uts); err == nil {
+ sysname := unix.ByteSliceToString(uts.Sysname[:])
+ release := unix.ByteSliceToString(uts.Release[:])
+ UserAgentOS = fmt.Sprintf("%s/%s", sysname, release)
+ } else {
+ slog.Warn("unable to determine OS version", "error", err)
+ UserAgentOS = "Darwin"
+ }
+
+ // TODO handle failure modes here, and developer mode better...
+
+ // Executable = Ollama.app/Contents/MacOS/Ollama
+
+ UpgradeLogFile = filepath.Join(home, ".ollama", "logs", "upgrade.log")
+
+ cacheDir, err := os.UserCacheDir()
+ if err != nil {
+ slog.Warn("unable to determine user cache dir, falling back to tmpdir", "error", err)
+ cacheDir = os.TempDir()
+ }
+ appDataDir := filepath.Join(cacheDir, "ollama")
+ UpgradeMarkerFile = filepath.Join(appDataDir, "upgraded")
+ appBackupDir = filepath.Join(appDataDir, "backup")
+ UpdateStageDir = filepath.Join(appDataDir, "updates")
+}
+
+func DoUpgrade(interactive bool) error {
+ // TODO use UpgradeLogFile to record the upgrade details from->to version, etc.
+
+ bundle := getStagedUpdate()
+ if bundle == "" {
+ return fmt.Errorf("failed to lookup downloads")
+ }
+
+ slog.Info("starting upgrade", "app", BundlePath, "update", bundle, "pid", os.Getpid(), "log", UpgradeLogFile)
+
+ // TODO - in the future, consider shutting down the backend server now to give it
+ // time to drain connections and stop allowing new connections while we perform the
+ // actual upgrade to reduce the overall time to complete
+ contentsName := filepath.Join(BundlePath, "Contents")
+ appBackup := filepath.Join(appBackupDir, "Ollama.app")
+ contentsOldName := filepath.Join(appBackup, "Contents")
+
+ // Verify old doesn't exist yet
+ if _, err := os.Stat(contentsOldName); err == nil {
+ slog.Error("prior upgrade failed", "backup", contentsOldName)
+ return fmt.Errorf("prior upgrade failed - please upgrade manually by installing the bundle")
+ }
+ if err := os.MkdirAll(appBackupDir, 0o755); err != nil {
+ return fmt.Errorf("unable to create backup dir %s: %w", appBackupDir, err)
+ }
+
+ // Verify bundle loads before starting staging process
+ r, err := zip.OpenReader(bundle)
+ if err != nil {
+ return fmt.Errorf("unable to open upgrade bundle %s: %w", bundle, err)
+ }
+ defer r.Close()
+
+ slog.Debug("temporarily staging old version", "staging", appBackup)
+ if err := os.Rename(BundlePath, appBackup); err != nil {
+ if !interactive {
+ // We don't want to prompt for permission if we're attempting to upgrade at startup
+ return fmt.Errorf("unable to upgrade in non-interactive mode with permission problems: %w", err)
+ }
+ // TODO actually inspect the error and look for permission problems before trying chown
+ slog.Warn("unable to backup old version due to permission problems, changing ownership", "error", err)
+ u, err := user.Current()
+ if err != nil {
+ return err
+ }
+ if !chownWithAuthorization(u.Username) {
+ return fmt.Errorf("unable to change permissions to complete upgrade")
+ }
+ if err := os.Rename(BundlePath, appBackup); err != nil {
+ return fmt.Errorf("unable to perform upgrade - failed to stage old version: %w", err)
+ }
+ }
+
+ // Get ready to try to unwind a partial upgade failure during unzip
+ // If something goes wrong, we attempt to put the old version back.
+ anyFailures := false
+ defer func() {
+ if anyFailures {
+ slog.Warn("upgrade failures detected, attempting to revert")
+ if err := os.RemoveAll(BundlePath); err != nil {
+ slog.Warn("failed to remove partial upgrade", "path", BundlePath, "error", err)
+ // At this point, we're basically hosed and the user will need to re-install
+ return
+ }
+ if err := os.Rename(appBackup, BundlePath); err != nil {
+ slog.Error("failed to revert to prior version", "path", contentsName, "error", err)
+ }
+ }
+ }()
+
+ // Bundle contents Ollama.app/Contents/...
+ links := []*zip.File{}
+ for _, f := range r.File {
+ s := strings.SplitN(f.Name, "/", 2)
+ if len(s) < 2 || s[1] == "" {
+ slog.Debug("skipping", "file", f.Name)
+ continue
+ }
+ name := s[1]
+ if strings.HasSuffix(name, "/") {
+ d := filepath.Join(BundlePath, name)
+ err := os.MkdirAll(d, 0o755)
+ if err != nil {
+ anyFailures = true
+ return fmt.Errorf("failed to mkdir %s: %w", d, err)
+ }
+ continue
+ }
+ if f.Mode()&os.ModeSymlink != 0 {
+ // Defer links to the end
+ links = append(links, f)
+ continue
+ }
+
+ src, err := f.Open()
+ if err != nil {
+ anyFailures = true
+ return fmt.Errorf("failed to open bundle file %s: %w", name, err)
+ }
+ destName := filepath.Join(BundlePath, name)
+ // Verify directory first
+ d := filepath.Dir(destName)
+ if _, err := os.Stat(d); err != nil {
+ err := os.MkdirAll(d, 0o755)
+ if err != nil {
+ anyFailures = true
+ return fmt.Errorf("failed to mkdir %s: %w", d, err)
+ }
+ }
+ destFile, err := os.OpenFile(destName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o755)
+ if err != nil {
+ anyFailures = true
+ return fmt.Errorf("failed to open output file %s: %w", destName, err)
+ }
+ defer destFile.Close()
+ if _, err := io.Copy(destFile, src); err != nil {
+ anyFailures = true
+ return fmt.Errorf("failed to open extract file %s: %w", destName, err)
+ }
+ }
+ for _, f := range links {
+ s := strings.SplitN(f.Name, "/", 2) // Strip off Ollama.app/
+ if len(s) < 2 || s[1] == "" {
+ slog.Debug("skipping link", "file", f.Name)
+ continue
+ }
+ name := s[1]
+ src, err := f.Open()
+ if err != nil {
+ anyFailures = true
+ return err
+ }
+ buf, err := io.ReadAll(src)
+ if err != nil {
+ anyFailures = true
+ return err
+ }
+ link := string(buf)
+ if link[0] == '/' {
+ anyFailures = true
+ return fmt.Errorf("bundle contains absolute symlink %s -> %s", f.Name, link)
+ }
+ // Don't allow links outside of Ollama.app
+ if strings.HasPrefix(filepath.Join(filepath.Dir(name), link), "..") {
+ anyFailures = true
+ return fmt.Errorf("bundle contains link outside of contents %s -> %s", f.Name, link)
+ }
+ if err = os.Symlink(link, filepath.Join(BundlePath, name)); err != nil {
+ anyFailures = true
+ return err
+ }
+ }
+
+ f, err := os.OpenFile(UpgradeMarkerFile, os.O_RDONLY|os.O_CREATE, 0o666)
+ if err != nil {
+ slog.Warn("unable to create marker file", "file", UpgradeMarkerFile, "error", err)
+ }
+ f.Close()
+ // Make sure to remove the staged download now that we succeeded so we don't inadvertently try again.
+ cleanupOldDownloads(UpdateStageDir)
+
+ return nil
+}
+
+func DoPostUpgradeCleanup() error {
+ slog.Debug("post upgrade cleanup", "backup", appBackupDir)
+ err := os.RemoveAll(appBackupDir)
+ if err != nil {
+ return err
+ }
+ slog.Debug("post upgrade cleanup", "old", UpgradeMarkerFile)
+ return os.Remove(UpgradeMarkerFile)
+}
+
+func verifyDownload() error {
+ bundle := getStagedUpdate()
+ if bundle == "" {
+ return fmt.Errorf("failed to lookup downloads")
+ }
+ slog.Debug("verifying update", "bundle", bundle)
+
+ // Extract zip file into a temporary location so we can run the cert verification routines
+ dir, err := os.MkdirTemp("", "ollama_update_verify")
+ if err != nil {
+ return err
+ }
+ defer os.RemoveAll(dir)
+ r, err := zip.OpenReader(bundle)
+ if err != nil {
+ return fmt.Errorf("unable to open upgrade bundle %s: %w", bundle, err)
+ }
+ defer r.Close()
+ links := []*zip.File{}
+ for _, f := range r.File {
+ if strings.HasSuffix(f.Name, "/") {
+ d := filepath.Join(dir, f.Name)
+ err := os.MkdirAll(d, 0o755)
+ if err != nil {
+ return fmt.Errorf("failed to mkdir %s: %w", d, err)
+ }
+ continue
+ }
+ if f.Mode()&os.ModeSymlink != 0 {
+ // Defer links to the end
+ links = append(links, f)
+ continue
+ }
+ src, err := f.Open()
+ if err != nil {
+ return fmt.Errorf("failed to open bundle file %s: %w", f.Name, err)
+ }
+ destName := filepath.Join(dir, f.Name)
+ // Verify directory first
+ d := filepath.Dir(destName)
+ if _, err := os.Stat(d); err != nil {
+ err := os.MkdirAll(d, 0o755)
+ if err != nil {
+ return fmt.Errorf("failed to mkdir %s: %w", d, err)
+ }
+ }
+ destFile, err := os.OpenFile(destName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o755)
+ if err != nil {
+ return fmt.Errorf("failed to open output file %s: %w", destName, err)
+ }
+ defer destFile.Close()
+ if _, err := io.Copy(destFile, src); err != nil {
+ return fmt.Errorf("failed to open extract file %s: %w", destName, err)
+ }
+ }
+ for _, f := range links {
+ src, err := f.Open()
+ if err != nil {
+ return err
+ }
+ buf, err := io.ReadAll(src)
+ if err != nil {
+ return err
+ }
+ link := string(buf)
+ if link[0] == '/' {
+ return fmt.Errorf("bundle contains absolute symlink %s -> %s", f.Name, link)
+ }
+ if strings.HasPrefix(filepath.Join(filepath.Dir(f.Name), link), "..") {
+ return fmt.Errorf("bundle contains link outside of contents %s -> %s", f.Name, link)
+ }
+ if err = os.Symlink(link, filepath.Join(dir, f.Name)); err != nil {
+ return err
+ }
+ }
+
+ if err := verifyExtractedBundle(filepath.Join(dir, "Ollama.app")); err != nil {
+ return fmt.Errorf("signature verification failed: %s", err)
+ }
+ return nil
+}
+
+// If we detect an upgrade bundle, attempt to upgrade at startup
+func DoUpgradeAtStartup() error {
+ bundle := getStagedUpdate()
+ if bundle == "" {
+ return fmt.Errorf("failed to lookup downloads")
+ }
+
+ if BundlePath == "" {
+ return fmt.Errorf("unable to upgrade at startup, app in development mode")
+ }
+
+ // [Re]verify before proceeding
+ if err := VerifyDownload(); err != nil {
+ _ = os.Remove(bundle)
+ slog.Warn("verification failure", "bundle", bundle, "error", err)
+ return nil
+ }
+ slog.Info("performing update at startup", "bundle", bundle)
+ return DoUpgrade(false)
+}
+
+func getStagedUpdate() string {
+ files, err := filepath.Glob(filepath.Join(UpdateStageDir, "*", "*.zip"))
+ if err != nil {
+ slog.Debug("failed to lookup downloads", "error", err)
+ return ""
+ }
+ if len(files) == 0 {
+ return ""
+ } else if len(files) > 1 {
+ // Shouldn't happen
+ slog.Warn("multiple update downloads found, using first one", "bundles", files)
+ }
+ return files[0]
+}
+
+func IsUpdatePending() bool {
+ return getStagedUpdate() != ""
+}
+
+func chownWithAuthorization(user string) bool {
+ u := C.CString(user)
+ defer C.free(unsafe.Pointer(u))
+ return (bool)(C.chownWithAuthorization(u))
+}
+
+func verifyExtractedBundle(path string) error {
+ p := C.CString(path)
+ defer C.free(unsafe.Pointer(p))
+ resp := C.verifyExtractedBundle(p)
+ if resp == nil {
+ return nil
+ }
+
+ return errors.New(C.GoString(resp))
+}
+
+//export goLogInfo
+func goLogInfo(msg *C.cchar_t) {
+ slog.Info(C.GoString(msg))
+}
+
+//export goLogDebug
+func goLogDebug(msg *C.cchar_t) {
+ slog.Debug(C.GoString(msg))
+}
+
+func alreadyMoved() string {
+ // Respect users intent if they chose "keep" vs. "replace" when dragging to Applications
+ installedAppPaths, err := filepath.Glob(filepath.Join(
+ strings.TrimSuffix(SystemWidePath, filepath.Ext(SystemWidePath))+"*"+filepath.Ext(SystemWidePath),
+ "Contents", "MacOS", "Ollama"))
+ if err != nil {
+ slog.Warn("failed to lookup installed app paths", "error", err)
+ return ""
+ }
+ exe, err := os.Executable()
+ if err != nil {
+ slog.Warn("failed to resolve executable", "error", err)
+ return ""
+ }
+ self, err := os.Stat(exe)
+ if err != nil {
+ slog.Warn("failed to stat running executable", "path", exe, "error", err)
+ return ""
+ }
+ selfSys := self.Sys().(*syscall.Stat_t)
+ for _, installedAppPath := range installedAppPaths {
+ app, err := os.Stat(installedAppPath)
+ if err != nil {
+ slog.Debug("failed to stat installed app path", "path", installedAppPath, "error", err)
+ continue
+ }
+ appSys := app.Sys().(*syscall.Stat_t)
+
+ if appSys.Ino == selfSys.Ino {
+ return filepath.Dir(filepath.Dir(filepath.Dir(installedAppPath)))
+ }
+ }
+ return ""
+}
diff --git a/app/updater/updater_darwin.h b/app/updater/updater_darwin.h
new file mode 100644
index 000000000..c4ad9c03a
--- /dev/null
+++ b/app/updater/updater_darwin.h
@@ -0,0 +1,16 @@
+#import
+
+// TODO make these macros so we can extract line numbers from the native code
+void appLogInfo(NSString *msg);
+void appLogDebug(NSString *msg);
+void goLogInfo(const char *msg);
+void goLogDebug(const char *msg);
+
+
+AuthorizationRef getAuthorization(NSString *authorizationPrompt,
+ NSString *right);
+
+AuthorizationRef getAppInstallAuthorization();
+
+const char* verifyExtractedBundle(char *path);
+bool chownWithAuthorization(const char *user);
\ No newline at end of file
diff --git a/app/updater/updater_darwin.m b/app/updater/updater_darwin.m
new file mode 100644
index 000000000..0a5f168ee
--- /dev/null
+++ b/app/updater/updater_darwin.m
@@ -0,0 +1,182 @@
+#import "updater_darwin.h"
+#import
+#import
+#import
+#import
+#import
+
+void appLogInfo(NSString *msg) {
+ NSLog(@"%@", msg);
+ goLogInfo([msg UTF8String]);
+}
+
+void appLogDebug(NSString *msg) {
+ NSLog(@"%@", msg);
+ goLogDebug([msg UTF8String]);
+}
+
+NSString *SystemWidePath = @"/Applications/Ollama.app";
+
+// TODO - how to detect if the user has admin access?
+// Possible APIs to explore:
+// - SFAuthorization
+// - CSIdentityQueryCreateForCurrentUser + CSIdentityQueryCreateForName(NULL,
+// CFSTR("admin"), kCSIdentityQueryStringEquals, kCSIdentityClassGroup,
+// CSGetDefaultIdentityAuthority());
+
+// Caller must call AuthorizationFree(authRef, kAuthorizationFlagDestroyRights)
+// once finished
+// TODO consider a struct response type to capture user cancel scenario from
+// other error/failure scenarios
+AuthorizationRef getAuthorization(NSString *authorizationPrompt,
+ NSString *right) {
+ appLogInfo([NSString stringWithFormat:@"XXX in getAuthorization"]);
+ AuthorizationRef authRef = NULL;
+ OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
+ kAuthorizationFlagDefaults, &authRef);
+ if (err != errAuthorizationSuccess) {
+ appLogInfo([NSString
+ stringWithFormat:
+ @"Failed to create authorization reference. Status = %d",
+ err]);
+ return NULL;
+ }
+ NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
+ NSString *rightNameString =
+ [NSString stringWithFormat:@"%@.%@", bundleIdentifier, right];
+ const char *rightName = [rightNameString UTF8String];
+ appLogInfo([NSString stringWithFormat:@"XXX requesting right %@", rightNameString]);
+
+ OSStatus getRightResult = AuthorizationRightGet(rightName, NULL);
+ if (getRightResult == errAuthorizationDenied) {
+ // Create or update the right if it doesn't exist
+ if (AuthorizationRightSet(
+ authRef, rightName,
+ (__bridge CFTypeRef _Nonnull)(
+ @(kAuthorizationRuleAuthenticateAsAdmin)),
+ (__bridge CFStringRef _Nullable)(authorizationPrompt), NULL,
+ NULL) != errAuthorizationSuccess) {
+ appLogInfo([NSString
+ stringWithFormat:
+ @"Failed to set right for moving to /Applications"]);
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return NULL;
+ }
+ }
+ AuthorizationItem rightItem = {
+ .name = rightName, .valueLength = 0, .value = NULL, .flags = 0};
+ AuthorizationRights rights = {.count = 1, .items = &rightItem};
+ AuthorizationFlags flags =
+ (AuthorizationFlags)(kAuthorizationFlagExtendRights |
+ kAuthorizationFlagInteractionAllowed);
+
+ err = AuthorizationCopyRights(authRef, &rights, NULL, flags, NULL);
+ if (err != errAuthorizationSuccess) {
+ if (err == errAuthorizationCanceled) {
+ appLogInfo([NSString
+ stringWithFormat:@"User cancelled authorization. Status = %d",
+ err]);
+ // TODO bubble up user cancel/reject so we can keep track
+
+ } else {
+ appLogInfo([NSString
+ stringWithFormat:@"failed to grant authorization. Status = %d",
+ err]);
+ }
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return NULL;
+ }
+ return authRef;
+}
+
+AuthorizationRef getAppInstallAuthorization() {
+ return getAuthorization(
+ @"Ollama needs additional permission to move or update itself as a "
+ "system-wide Application",
+ @"systemApplication");
+}
+
+bool chownWithAuthorization(const char *user) {
+ AuthorizationRef authRef = getAppInstallAuthorization();
+ if (authRef == NULL) {
+ return NO;
+ }
+ const char *chownTool = "/usr/sbin/chown";
+ const char *chownArgs[] = {"-R", user, [SystemWidePath UTF8String], NULL};
+
+ FILE *pipe = NULL;
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ OSStatus err = AuthorizationExecuteWithPrivileges(
+ authRef, chownTool, kAuthorizationFlagDefaults,
+ (char *const *)chownArgs, &pipe);
+#pragma clang diagnostic pop
+
+ if (err != errAuthorizationSuccess) {
+ appLogInfo([NSString
+ stringWithFormat:@"Failed to update ownership of %@ Status = %d",
+ SystemWidePath, err]);
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return NO;
+ }
+
+ // wait for the command to finish
+ while (pipe && !feof(pipe)) {
+ fgetc(pipe);
+ }
+ if (pipe) {
+ fclose(pipe);
+ }
+ appLogDebug([NSString stringWithFormat:@"XXX finished chown"]);
+ AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
+ return true;
+}
+
+// nil if bundle is good, error string otherwise
+const char *verifyExtractedBundle(char *path) {
+ NSString *p = [NSString stringWithFormat:@"%s", path];
+
+ appLogDebug([NSString stringWithFormat:@"verifyExtractedBundle: %@", p]);
+ SecStaticCodeRef staticCode = NULL;
+
+ OSStatus result = SecStaticCodeCreateWithPath(
+ CFURLCreateFromFileSystemRepresentation(
+ (__bridge CFAllocatorRef)(kCFAllocatorSystemDefault),
+ (const UInt8 *)path, strlen(path), kCFStringEncodingMacRoman),
+ kSecCSDefaultFlags, &staticCode);
+
+ if (result != noErr) {
+ NSString *failureReason =
+ CFBridgingRelease(SecCopyErrorMessageString(result, NULL));
+ appLogDebug([NSString
+ stringWithFormat:@"Failed to get static code for bundle: %@",
+ failureReason]);
+ if (staticCode != NULL)
+ CFRelease(staticCode);
+ return [[NSString
+ stringWithFormat:@"Failed to get static code for bundle: %@",
+ failureReason] UTF8String];
+ }
+
+ CFErrorRef validityError = NULL;
+ result = SecStaticCodeCheckValidityWithErrors(
+ staticCode, kSecCSCheckAllArchitectures, NULL, &validityError);
+
+ if (result != noErr) {
+ NSString *failureReason =
+ CFBridgingRelease(SecCopyErrorMessageString(result, NULL));
+ appLogDebug([NSString
+ stringWithFormat:@"Signatures did not verify on bundle: %@",
+ failureReason]);
+
+ // TODO - consider extracting additional details from validityError
+
+ if (validityError != NULL)
+ CFRelease(validityError);
+ return [[NSString
+ stringWithFormat:@"Signatures did not verify on bundle: %@",
+ failureReason] UTF8String];
+ }
+ appLogDebug([NSString stringWithFormat:@"bundle passed verification"]);
+ return NULL;
+}
\ No newline at end of file
diff --git a/app/updater/updater_darwin_test.go b/app/updater/updater_darwin_test.go
new file mode 100644
index 000000000..74a323ba3
--- /dev/null
+++ b/app/updater/updater_darwin_test.go
@@ -0,0 +1,326 @@
+package updater
+
+import (
+ "archive/zip"
+ "io/fs"
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+)
+
+func TestDoUpgrade(t *testing.T) {
+ tmpDir := t.TempDir()
+ BundlePath = filepath.Join(tmpDir, "Ollama.app")
+ appContents := filepath.Join(BundlePath, "Contents")
+ appBackupDir = filepath.Join(tmpDir, "backup")
+ appContentsOld := filepath.Join(appBackupDir, "Ollama.app", "Contents")
+ UpdateStageDir = filepath.Join(tmpDir, "updates")
+ UpgradeMarkerFile = filepath.Join(tmpDir, "upgraded")
+ bundle := filepath.Join(UpdateStageDir, "foo", "ollama-darwin.zip")
+
+ err := os.MkdirAll(filepath.Join(appContents, "MacOS"), 0o755)
+ if err != nil {
+ t.Fatal("failed to create empty dirs")
+ }
+ err = os.MkdirAll(filepath.Join(BundlePath, "Contents", "Resources"), 0o755)
+ if err != nil {
+ t.Fatal("failed to create empty dirs")
+ }
+ err = os.MkdirAll(filepath.Dir(bundle), 0o755)
+ if err != nil {
+ t.Fatal("failed to create empty dirs")
+ }
+
+ // No update file, simple failure scenario
+ if err := DoUpgrade(false); err == nil {
+ t.Fatal("expected failure without download")
+ } else if !strings.Contains(err.Error(), "failed to lookup downloads") {
+ t.Fatalf("unexpected error: %s", err.Error())
+ }
+
+ // Start with an unreadable zip file
+ if err := os.WriteFile(bundle, []byte{0x4b, 0x50, 0x40, 0x03, 0x00, 0x0a, 0x00}, 0o755); err != nil {
+ t.Fatalf("failed to create intentionally corrupt zip file: %s", err)
+ }
+ if err := DoUpgrade(false); err == nil {
+ t.Fatal("expected failure with corrupt zip file")
+ } else if !strings.Contains(err.Error(), "unable to open upgrade bundle") {
+ t.Fatalf("unexpected error with corrupt zip file: %s", err)
+ }
+
+ // Generate valid (partial) zip file for remaining scenarios
+ if err := zipCreationHelper(bundle, []testPayload{
+ {
+ Name: "Ollama.app/Contents/MacOS/Ollama",
+ Body: []byte("would be app binary"),
+ },
+ {
+ Name: "Ollama.app/Contents/Resources/ollama",
+ Body: []byte("would be the cli"),
+ },
+ {
+ Name: "Ollama.app/Contents/Resources/dummy",
+ Body: []byte("./ollama"),
+ Mode: os.ModeSymlink,
+ },
+ }); err != nil {
+ t.Fatal(err)
+ }
+ // Permission failure on rename
+ if err := os.Chmod(BundlePath, 0o500); err != nil {
+ t.Fatal("failed to remove write permission")
+ }
+ if err := DoUpgrade(false); err == nil {
+ t.Fatal("expected failure with no permission to rename Contents")
+ } else if !strings.Contains(err.Error(), "permission problems") {
+ t.Fatalf("unexpected error with permission failure: %s", err)
+ }
+ if err := os.Chmod(BundlePath, 0o755); err != nil {
+ t.Fatal("failed to restore write permission")
+ }
+
+ // Prior failed upgrade
+ if err := os.MkdirAll(appContentsOld, 0o755); err != nil {
+ t.Fatal("failed to create empty dirs")
+ }
+ if err := DoUpgrade(false); err == nil {
+ t.Fatal("expected failure with old contents existing")
+ } else if !strings.Contains(err.Error(), "prior upgrade failed") {
+ t.Fatalf("unexpected error with old contents: %s", err)
+ }
+ if err := os.RemoveAll(appBackupDir); err != nil {
+ t.Fatal("failed to cleanup dir")
+ }
+
+ // TODO - a failure mode where we revert the backup
+
+ // Happy path
+ if err := DoUpgrade(false); err != nil {
+ t.Fatalf("unexpected error with clean setup: %s", err)
+ }
+ if _, err := os.Stat(appContentsOld); err != nil {
+ t.Fatalf("missing %s", appContentsOld)
+ }
+ if _, err := os.Stat(UpgradeMarkerFile); err != nil {
+ t.Fatalf("missing marker %s", UpgradeMarkerFile)
+ }
+ if _, err := os.Stat(filepath.Join(BundlePath, "Contents", "MacOS", "Ollama")); err != nil {
+ t.Fatalf("missing new App")
+ }
+ if _, err := os.Stat(filepath.Join(BundlePath, "Contents", "Resources", "ollama")); err != nil {
+ t.Fatalf("missing new cli")
+ }
+
+ // Cleanup before next attempt
+ if err := DoPostUpgradeCleanup(); err != nil {
+ t.Fatal("failed to cleanup dir")
+ }
+
+ err = os.MkdirAll(filepath.Dir(bundle), 0o755)
+ if err != nil {
+ t.Fatal("failed to create empty dirs")
+ }
+
+ // Zip file with one corrupt file within to trigger a rollback
+ if err := os.WriteFile(bundle, corruptZipData, 0o755); err != nil {
+ t.Fatalf("failed to create intentionally corrupt zip file: %s", err)
+ }
+ if err := DoUpgrade(false); err == nil {
+ t.Fatal("expected failure with corrupt zip file")
+ } else if !strings.Contains(err.Error(), "failed to open bundle file") {
+ t.Fatalf("unexpected error with corrupt zip file: %s", err)
+ }
+ // Make sure things were restored on partial failure
+ if _, err := os.Stat(appContents); err != nil {
+ t.Fatalf("missing %s", appContents)
+ }
+ if _, err := os.Stat(appContentsOld); err == nil {
+ t.Fatal("old contents still exists")
+ }
+ if _, err := os.Stat(filepath.Join(BundlePath, "Contents", "MacOS", "Ollama")); err != nil {
+ t.Fatalf("missing old App")
+ }
+ if _, err := os.Stat(filepath.Join(BundlePath, "Contents", "Resources", "ollama")); err != nil {
+ t.Fatalf("missing old cli")
+ }
+}
+
+func TestDoUpgradeAtStartup(t *testing.T) {
+ tmpDir := t.TempDir()
+ BundlePath = filepath.Join(tmpDir, "Ollama.app")
+ appBackupDir = filepath.Join(tmpDir, "backup")
+ UpdateStageDir = filepath.Join(tmpDir, "updates")
+ UpgradeMarkerFile = filepath.Join(tmpDir, "upgraded")
+ bundle := filepath.Join(UpdateStageDir, "foo", "ollama-darwin.zip")
+
+ if err := DoUpgradeAtStartup(); err == nil {
+ t.Fatal("expected failure without download")
+ } else if !strings.Contains(err.Error(), "failed to lookup downloads") {
+ t.Fatalf("unexpected error: %s", err.Error())
+ }
+
+ if err := os.MkdirAll(filepath.Dir(bundle), 0o755); err != nil {
+ t.Fatal("failed to create empty dirs")
+ }
+
+ if err := zipCreationHelper(bundle, []testPayload{
+ {
+ Name: "Ollama.app/Contents/MacOS/Ollama",
+ Body: []byte("would be app binary"),
+ },
+ {
+ Name: "Ollama.app/Contents/Resources/ollama",
+ Body: []byte("would be the cli"),
+ },
+ {
+ Name: "Ollama.app/Contents/Resources/dummy",
+ Body: []byte("./ollama"),
+ Mode: os.ModeSymlink,
+ },
+ }); err != nil {
+ t.Fatal(err)
+ }
+
+ if err := DoUpgradeAtStartup(); err != nil {
+ t.Fatalf("unexpected error with verification failure: %s", err)
+ }
+ if _, err := os.Stat(bundle); err == nil {
+ t.Fatalf("unverified bundle still exists %s", bundle)
+ }
+}
+
+func TestVerifyDownloadFailures(t *testing.T) {
+ tmpDir := t.TempDir()
+ BundlePath = filepath.Join(tmpDir, "Ollama.app")
+ UpdateStageDir = filepath.Join(tmpDir, "staging")
+ bundle := filepath.Join(UpdateStageDir, "foo", "ollama-darwin.zip")
+ if err := os.MkdirAll(filepath.Dir(bundle), 0o755); err != nil {
+ t.Fatal("failed to create empty dirs")
+ }
+ tests := []struct {
+ n string
+ in []testPayload
+ expected string
+ }{
+ {"breakout", []testPayload{
+ {
+ Name: "Ollama.app/",
+ Body: []byte{},
+ }, {
+ Name: "Ollama.app/Resources/ollama",
+ Body: []byte("cli payload here"),
+ }, {
+ Name: "Ollama.app/Contents/MacOS/Ollama",
+ Body: []byte("../../../../breakout"),
+ Mode: os.ModeSymlink,
+ },
+ }, "bundle contains link outside"},
+ {"absolute", []testPayload{{
+ Name: "Ollama.app/Contents/MacOS/Ollama",
+ Body: []byte("/etc/foo"),
+ Mode: os.ModeSymlink,
+ }}, "bundle contains absolute"},
+ {"missing", []testPayload{{
+ Name: "Ollama.app/Contents/MacOS/Ollama",
+ Body: []byte("../nothere"),
+ Mode: os.ModeSymlink,
+ }}, "no such file or directory"},
+ {"unsigned", []testPayload{{
+ Name: "Ollama.app/Contents/MacOS/Ollama",
+ Body: []byte{0xfa, 0xcf, 0xfe, 0xed, 0x00, 0x0c, 0x01, 0x00},
+ }}, "signature verification failed"},
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.n, func(t *testing.T) {
+ _ = os.Remove(bundle)
+ if err := zipCreationHelper(bundle, tt.in); err != nil {
+ t.Fatal(err)
+ }
+ err := VerifyDownload()
+ if err == nil || !strings.Contains(err.Error(), tt.expected) {
+ t.Fatalf("expected \"%s\" got %s", tt.expected, err)
+ }
+ })
+ }
+}
+
+// One file has been corrupted to cause a checksum mismatch
+var corruptZipData = []byte{0x50, 0x4b, 0x3, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xed, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0x0, 0x1c, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x55, 0x54, 0x9, 0x0, 0x3, 0x6d, 0x6c, 0x5f, 0x67, 0x6e, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x3, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x0, 0x1c, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x55, 0x54, 0x9, 0x0, 0x3, 0x48, 0x6c, 0x5f, 0x67, 0x58, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x3, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe3, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0x0, 0x1c, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x4d, 0x61, 0x63, 0x4f, 0x53, 0x2f, 0x55, 0x54, 0x9, 0x0, 0x3, 0x59, 0x6c, 0x5f, 0x67, 0x9f, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x3, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe3, 0x7e, 0x8f, 0x59, 0xe3, 0x6, 0x15, 0x70, 0x14, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x20, 0x0, 0x1c, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x4d, 0x61, 0x63, 0x4f, 0x53, 0x2f, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x55, 0x54, 0x9, 0x0, 0x3, 0x59, 0x6c, 0x5f, 0x67, 0x83, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x43, 0x4f, 0x52, 0x52, 0x55, 0x50, 0x54, 0xa, 0x50, 0x4b, 0x3, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe9, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0, 0x1c, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x55, 0x54, 0x9, 0x0, 0x3, 0x66, 0x6c, 0x5f, 0x67, 0x83, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x3, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe9, 0x7e, 0x8f, 0x59, 0x19, 0xa5, 0x62, 0xf7, 0x11, 0x0, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0, 0x24, 0x0, 0x1c, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x6f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x55, 0x54, 0x9, 0x0, 0x3, 0x66, 0x6c, 0x5f, 0x67, 0x66, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0xa, 0x50, 0x4b, 0x1, 0x2, 0x1e, 0x3, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xed, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0xed, 0x41, 0x0, 0x0, 0x0, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x55, 0x54, 0x5, 0x0, 0x3, 0x6d, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x1, 0x2, 0x1e, 0x3, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0xed, 0x41, 0x45, 0x0, 0x0, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x55, 0x54, 0x5, 0x0, 0x3, 0x48, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x1, 0x2, 0x1e, 0x3, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe3, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0xed, 0x41, 0x93, 0x0, 0x0, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x4d, 0x61, 0x63, 0x4f, 0x53, 0x2f, 0x55, 0x54, 0x5, 0x0, 0x3, 0x59, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x1, 0x2, 0x1e, 0x3, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe3, 0x7e, 0x8f, 0x59, 0xe3, 0x6, 0x15, 0x70, 0x14, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x20, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa4, 0x81, 0xe7, 0x0, 0x0, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x4d, 0x61, 0x63, 0x4f, 0x53, 0x2f, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x55, 0x54, 0x5, 0x0, 0x3, 0x59, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x1, 0x2, 0x1e, 0x3, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe9, 0x7e, 0x8f, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0xed, 0x41, 0x55, 0x1, 0x0, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x55, 0x54, 0x5, 0x0, 0x3, 0x66, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x1, 0x2, 0x1e, 0x3, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe9, 0x7e, 0x8f, 0x59, 0x19, 0xa5, 0x62, 0xf7, 0x11, 0x0, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0, 0x24, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa4, 0x81, 0xad, 0x1, 0x0, 0x0, 0x4f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x6f, 0x6c, 0x6c, 0x61, 0x6d, 0x61, 0x55, 0x54, 0x5, 0x0, 0x3, 0x66, 0x6c, 0x5f, 0x67, 0x75, 0x78, 0xb, 0x0, 0x1, 0x4, 0xf5, 0x1, 0x0, 0x0, 0x4, 0x14, 0x0, 0x0, 0x0, 0x50, 0x4b, 0x5, 0x6, 0x0, 0x0, 0x0, 0x0, 0x6, 0x0, 0x6, 0x0, 0x3f, 0x2, 0x0, 0x0, 0x1c, 0x2, 0x0, 0x0, 0x0, 0x0}
+
+type testPayload struct {
+ Name string
+ Body []byte
+ Mode fs.FileMode
+}
+
+func zipCreationHelper(filename string, files []testPayload) error {
+ fd, err := os.Create(filename)
+ if err != nil {
+ return err
+ }
+
+ w := zip.NewWriter(fd)
+ for _, file := range files {
+ fh := &zip.FileHeader{
+ Name: file.Name,
+ Flags: 0,
+ }
+ if file.Mode != 0 {
+ fh.SetMode(file.Mode)
+ }
+ f, err := w.CreateHeader(fh)
+ if err != nil {
+ return err
+ }
+ _, err = f.Write(file.Body)
+ if err != nil {
+ return err
+ }
+ }
+ return w.Close()
+}
+
+func TestAlreadyMoved(t *testing.T) {
+ oldPath := SystemWidePath
+ defer func() {
+ SystemWidePath = oldPath
+ }()
+ exe, err := os.Executable()
+ if err != nil {
+ t.Fatal("failed to find executable path")
+ }
+ tmpDir := t.TempDir()
+ testApp := filepath.Join(tmpDir, "Ollama.app")
+ err = os.MkdirAll(filepath.Join(testApp, "Contents", "MacOS"), 0o755)
+ if err != nil {
+ t.Fatal("failed to create Contents dir")
+ }
+ SystemWidePath = testApp
+ testBinary := filepath.Join(testApp, "Contents", "MacOS", "Ollama")
+ if err := os.Symlink(exe, testBinary); err != nil {
+ t.Fatalf("failed to create symlink to executable: %s", err)
+ }
+
+ bundle := alreadyMoved()
+ if bundle != testApp {
+ t.Fatalf("expected %s, got %s", testApp, bundle)
+ }
+
+ // "Keep scenario"
+ testApp = filepath.Join(tmpDir, "Ollama 2.app")
+ err = os.MkdirAll(filepath.Join(testApp, "Contents", "MacOS"), 0o755)
+ if err != nil {
+ t.Fatal("failed to create Contents dir")
+ }
+ testBinary = filepath.Join(testApp, "Contents", "MacOS", "Ollama")
+ if err := os.Symlink(exe, testBinary); err != nil {
+ t.Fatalf("failed to create symlink to executable: %s", err)
+ }
+
+ bundle = alreadyMoved()
+ if bundle != testApp {
+ t.Fatalf("expected %s, got %s", testApp, bundle)
+ }
+}
diff --git a/app/updater/updater_test.go b/app/updater/updater_test.go
new file mode 100644
index 000000000..dea820c28
--- /dev/null
+++ b/app/updater/updater_test.go
@@ -0,0 +1,101 @@
+//go:build windows || darwin
+
+package updater
+
+import (
+ "archive/zip"
+ "bytes"
+ "context"
+ "fmt"
+ "io"
+ "log/slog"
+ "net/http"
+ "net/http/httptest"
+ "testing"
+ "time"
+
+ "github.com/ollama/ollama/app/store"
+)
+
+func TestIsNewReleaseAvailable(t *testing.T) {
+ slog.SetLogLoggerLevel(slog.LevelDebug)
+ var server *httptest.Server
+ server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ if r.URL.Path == "/update.json" {
+ w.Write([]byte(
+ fmt.Sprintf(`{"version": "9.9.9", "url": "%s"}`,
+ server.URL+"/9.9.9/"+Installer)))
+ // TODO - wire up the redirects to mimic real behavior
+ } else {
+ slog.Debug("unexpected request", "url", r.URL)
+ }
+ }))
+ defer server.Close()
+ slog.Debug("server", "url", server.URL)
+
+ updater := &Updater{Store: &store.Store{}}
+ defer updater.Store.Close() // Ensure database is closed
+ UpdateCheckURLBase = server.URL + "/update.json"
+ updatePresent, resp := updater.checkForUpdate(t.Context())
+ if !updatePresent {
+ t.Fatal("expected update to be available")
+ }
+ if resp.UpdateVersion != "9.9.9" {
+ t.Fatal("unexpected response", "url", resp.UpdateURL, "version", resp.UpdateVersion)
+ }
+}
+
+func TestBackgoundChecker(t *testing.T) {
+ UpdateStageDir = t.TempDir()
+ haveUpdate := false
+ verified := false
+ done := make(chan int)
+ cb := func(ver string) error {
+ haveUpdate = true
+ done <- 0
+ return nil
+ }
+ stallTimer := time.NewTimer(5 * time.Second)
+ ctx, cancel := context.WithCancel(t.Context())
+ defer cancel()
+ UpdateCheckInitialDelay = 5 * time.Millisecond
+ UpdateCheckInterval = 5 * time.Millisecond
+ VerifyDownload = func() error {
+ verified = true
+ return nil
+ }
+
+ var server *httptest.Server
+ server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ if r.URL.Path == "/update.json" {
+ w.Write([]byte(
+ fmt.Sprintf(`{"version": "9.9.9", "url": "%s"}`,
+ server.URL+"/9.9.9/"+Installer)))
+ // TODO - wire up the redirects to mimic real behavior
+ } else if r.URL.Path == "/9.9.9/"+Installer {
+ buf := &bytes.Buffer{}
+ zw := zip.NewWriter(buf)
+ zw.Close()
+ io.Copy(w, buf)
+ } else {
+ slog.Debug("unexpected request", "url", r.URL)
+ }
+ }))
+ defer server.Close()
+ UpdateCheckURLBase = server.URL + "/update.json"
+
+ updater := &Updater{Store: &store.Store{}}
+ defer updater.Store.Close() // Ensure database is closed
+ updater.StartBackgroundUpdaterChecker(ctx, cb)
+ select {
+ case <-stallTimer.C:
+ t.Fatal("stalled")
+ case <-done:
+ if !haveUpdate {
+ t.Fatal("no update received")
+ }
+ if !verified {
+ t.Fatal("unverified")
+ }
+ }
+}
diff --git a/app/updater/updater_windows.go b/app/updater/updater_windows.go
new file mode 100644
index 000000000..e54aaa3b1
--- /dev/null
+++ b/app/updater/updater_windows.go
@@ -0,0 +1,238 @@
+package updater
+
+import (
+ "errors"
+ "fmt"
+ "log/slog"
+ "os"
+ "os/exec"
+ "path"
+ "path/filepath"
+ "strings"
+ "syscall"
+ "time"
+ "unsafe"
+
+ "golang.org/x/sys/windows"
+)
+
+var runningInstaller string
+
+type OSVERSIONINFOEXW struct {
+ dwOSVersionInfoSize uint32
+ dwMajorVersion uint32
+ dwMinorVersion uint32
+ dwBuildNumber uint32
+ dwPlatformId uint32
+ szCSDVersion [128]uint16
+ wServicePackMajor uint16
+ wServicePackMinor uint16
+ wSuiteMask uint16
+ wProductType uint8
+ wReserved uint8
+}
+
+func init() {
+ VerifyDownload = verifyDownload
+ Installer = "Ollama-darwin.zip"
+ localAppData := os.Getenv("LOCALAPPDATA")
+ appDataDir := filepath.Join(localAppData, "Ollama")
+
+ // Use a distinct update staging directory from the old desktop app
+ // to avoid double upgrades on the transition
+ UpdateStageDir = filepath.Join(appDataDir, "updates_v2")
+
+ UpgradeLogFile = filepath.Join(appDataDir, "upgrade.log")
+ Installer = "OllamaSetup.exe"
+ runningInstaller = filepath.Join(appDataDir, Installer)
+ UpgradeMarkerFile = filepath.Join(appDataDir, "upgraded")
+
+ loadOSVersion()
+}
+
+func loadOSVersion() {
+ UserAgentOS = "Windows"
+ verInfo := OSVERSIONINFOEXW{}
+ verInfo.dwOSVersionInfoSize = (uint32)(unsafe.Sizeof(verInfo))
+ ntdll, err := windows.LoadDLL("ntdll.dll")
+ if err != nil {
+ slog.Warn("unable to find ntdll", "error", err)
+ return
+ }
+ defer ntdll.Release()
+ pRtlGetVersion, err := ntdll.FindProc("RtlGetVersion")
+ if err != nil {
+ slog.Warn("unable to locate RtlGetVersion", "error", err)
+ return
+ }
+ status, _, err := pRtlGetVersion.Call(uintptr(unsafe.Pointer(&verInfo)))
+ if status < 0x80000000 { // Success or Informational
+ // Note: Windows 11 reports 10.0.22000 or newer
+ UserAgentOS = fmt.Sprintf("Windows/%d.%d.%d", verInfo.dwMajorVersion, verInfo.dwMinorVersion, verInfo.dwBuildNumber)
+ } else {
+ slog.Warn("unable to get OS version", "error", err)
+ }
+}
+
+func getStagedUpdate() string {
+ // When transitioning from old to new app, cleanup the update from the old staging dir
+ // This can eventually be removed once enough time has passed since the transition
+ cleanupOldDownloads(filepath.Join(os.Getenv("LOCALAPPDATA"), "Ollama", "updates"))
+
+ files, err := filepath.Glob(filepath.Join(UpdateStageDir, "*", "*.exe"))
+ if err != nil {
+ slog.Debug("failed to lookup downloads", "error", err)
+ return ""
+ }
+ if len(files) == 0 {
+ return ""
+ } else if len(files) > 1 {
+ // Shouldn't happen
+ slog.Warn("multiple update downloads found, using first one", "bundles", files)
+ }
+ return files[0]
+}
+
+func DoUpgrade(interactive bool) error {
+ bundle := getStagedUpdate()
+ if bundle == "" {
+ return fmt.Errorf("failed to lookup downloads")
+ }
+
+ // We move the installer to ensure we don't race with multiple apps starting in quick succession
+ if err := os.Rename(bundle, runningInstaller); err != nil {
+ return fmt.Errorf("unable to rename %s -> %s : %w", bundle, runningInstaller, err)
+ }
+
+ slog.Info("upgrade log file " + UpgradeLogFile)
+
+ // make the upgrade show progress, but non interactive
+ installArgs := []string{
+ "/CLOSEAPPLICATIONS", // Quit the tray app if it's still running
+ "/LOG=" + filepath.Base(UpgradeLogFile), // Only relative seems reliable, so set pwd
+ "/FORCECLOSEAPPLICATIONS", // Force close the tray app - might be needed
+ "/SP", // Skip the "This will install... Do you wish to continue" prompt
+ "/NOCANCEL", // Disable the ability to cancel upgrade mid-flight to avoid partially installed upgrades
+ "/SILENT",
+ }
+
+ if !interactive {
+ // Add flags to make it totally silent without GUI
+ installArgs = append(installArgs, "/VERYSILENT", "/SUPPRESSMSGBOXES")
+ }
+
+ slog.Info("starting upgrade", "installer", runningInstaller, "args", installArgs)
+ os.Chdir(filepath.Dir(UpgradeLogFile)) //nolint:errcheck
+ cmd := exec.Command(runningInstaller, installArgs...)
+
+ if err := cmd.Start(); err != nil {
+ return fmt.Errorf("unable to start ollama app %w", err)
+ }
+
+ if cmd.Process != nil {
+ err := cmd.Process.Release()
+ if err != nil {
+ slog.Error(fmt.Sprintf("failed to release server process: %s", err))
+ }
+ } else {
+ // TODO - some details about why it didn't start, or is this a pedantic error case?
+ return errors.New("installer process did not start")
+ }
+
+ // If the install fails to upgrade the system, and leaves a functional
+ // app, this marker file will cause us to remove the staged upgrade
+ // bundle, which will prevent trying again until we download again.
+ // If this becomes looping a problem, we may need to look for failures
+ // in the upgrade log in DoPostUpgradeCleanup and then not download
+ // the same version again.
+ f, err := os.OpenFile(UpgradeMarkerFile, os.O_RDONLY|os.O_CREATE, 0o666)
+ if err != nil {
+ slog.Warn("unable to create marker file", "file", UpgradeMarkerFile, "error", err)
+ }
+ f.Close()
+
+ // TODO should we linger for a moment and check to make sure it's actually running by checking the pid?
+
+ slog.Info("Installer started in background, exiting")
+
+ os.Exit(0)
+ // Not reached
+ return nil
+}
+
+func DoPostUpgradeCleanup() error {
+ cleanupOldDownloads(UpdateStageDir)
+ err := os.Remove(UpgradeMarkerFile)
+ if err != nil {
+ slog.Warn("unable to clean up marker file", "marker", UpgradeMarkerFile, "error", err)
+ }
+ err = os.Remove(runningInstaller)
+ if err != nil {
+ slog.Debug("failed to remove running installer on first attempt, backgrounding...", "installer", runningInstaller, "error", err)
+ go func() {
+ for range 10 {
+ time.Sleep(5 * time.Second)
+ if err := os.Remove(runningInstaller); err == nil {
+ slog.Debug("installer cleaned up")
+ return
+ }
+ slog.Debug("failed to remove running installer on background attempt", "installer", runningInstaller, "error", err)
+ }
+ }()
+ }
+ return nil
+}
+
+func verifyDownload() error {
+ return nil
+}
+
+func IsUpdatePending() bool {
+ return getStagedUpdate() != ""
+}
+
+func DoUpgradeAtStartup() error {
+ return DoUpgrade(false)
+}
+
+func isInstallerRunning() bool {
+ return len(IsProcRunning(Installer)) > 0
+}
+
+func IsProcRunning(procName string) []uint32 {
+ pids := make([]uint32, 2048)
+ var ret uint32
+ if err := windows.EnumProcesses(pids, &ret); err != nil || ret == 0 {
+ slog.Debug("failed to check for running installers", "error", err)
+ return nil
+ }
+ pids = pids[:ret]
+ matches := []uint32{}
+ for _, pid := range pids {
+ if pid == 0 {
+ continue
+ }
+ hProcess, err := windows.OpenProcess(windows.PROCESS_QUERY_INFORMATION|windows.PROCESS_VM_READ, false, pid)
+ if err != nil {
+ continue
+ }
+ defer windows.CloseHandle(hProcess)
+ var module windows.Handle
+ var cbNeeded uint32
+ cb := (uint32)(unsafe.Sizeof(module))
+ if err := windows.EnumProcessModules(hProcess, &module, cb, &cbNeeded); err != nil {
+ continue
+ }
+ var sz uint32 = 1024 * 8
+ moduleName := make([]uint16, sz)
+ cb = uint32(len(moduleName)) * (uint32)(unsafe.Sizeof(uint16(0)))
+ if err := windows.GetModuleBaseName(hProcess, module, &moduleName[0], cb); err != nil && err != syscall.ERROR_INSUFFICIENT_BUFFER {
+ continue
+ }
+ exeFile := path.Base(strings.ToLower(syscall.UTF16ToString(moduleName)))
+ if strings.EqualFold(exeFile, procName) {
+ matches = append(matches, pid)
+ }
+ }
+ return matches
+}
diff --git a/app/updater/updater_windows_test.go b/app/updater/updater_windows_test.go
new file mode 100644
index 000000000..9c665be35
--- /dev/null
+++ b/app/updater/updater_windows_test.go
@@ -0,0 +1,16 @@
+//go:build windows || darwin
+
+package updater
+
+import (
+ "log/slog"
+ "testing"
+)
+
+func TestIsInstallerRunning(t *testing.T) {
+ slog.SetLogLoggerLevel(slog.LevelDebug)
+ Installer = "go.exe"
+ if !isInstallerRunning() {
+ t.Fatal("not running")
+ }
+}
diff --git a/app/version/version.go b/app/version/version.go
new file mode 100644
index 000000000..5955d601c
--- /dev/null
+++ b/app/version/version.go
@@ -0,0 +1,5 @@
+//go:build windows || darwin
+
+package version
+
+var Version string = "0.0.0"
diff --git a/app/webview/.gitignore b/app/webview/.gitignore
new file mode 100644
index 000000000..66fd13c90
--- /dev/null
+++ b/app/webview/.gitignore
@@ -0,0 +1,15 @@
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+
+# Test binary, built with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# Dependency directories (remove the comment below to include it)
+# vendor/
diff --git a/app/webview/README.md b/app/webview/README.md
new file mode 100644
index 000000000..a6935e19d
--- /dev/null
+++ b/app/webview/README.md
@@ -0,0 +1,5 @@
+# Webview
+
+This is a vendored version of the [webview_go](https://github.com/webview/webview_go) project
+
+`WebView2.h` is a vendored version of the Microsoft's [WebView2](https://learn.microsoft.com/en-us/microsoft-edge/webview2/get-started/win32)
diff --git a/app/webview/WebView2.h b/app/webview/WebView2.h
new file mode 100644
index 000000000..05b0cfbc7
--- /dev/null
+++ b/app/webview/WebView2.h
@@ -0,0 +1,57256 @@
+
+
+// Version 1.0.3351.48
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+/* File created by MIDL compiler version 8.xx.xxxx */
+/* at a redacted point in time
+ */
+/* Compiler settings for ../../edge_embedded_browser/client/win/current/WebView2.idl:
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.xx.xxxx
+ protocol : dce , ms_ext, c_ext, robust
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
+ __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+ DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+/* @@MIDL_FILE_HEADING( ) */
+// Copyright (C) Microsoft Corporation. All rights reserved.
+
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * The name of Microsoft Corporation, or the names of its contributors
+// may not be used to endorse or promote products derived from this
+// software without specific prior written permission.
+
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#pragma warning(disable : 4049) /* more than 64k source lines */
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef __WebView2_h__
+#define __WebView2_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ICoreWebView2_FWD_DEFINED__
+#define __ICoreWebView2_FWD_DEFINED__
+typedef interface ICoreWebView2 ICoreWebView2;
+
+#endif /* __ICoreWebView2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContainsFullScreenElementChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ContainsFullScreenElementChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ContainsFullScreenElementChangedEventHandler ICoreWebView2ContainsFullScreenElementChangedEventHandler;
+
+#endif /* __ICoreWebView2ContainsFullScreenElementChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContentLoadingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ContentLoadingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ContentLoadingEventHandler ICoreWebView2ContentLoadingEventHandler;
+
+#endif /* __ICoreWebView2ContentLoadingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DocumentTitleChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2DocumentTitleChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2DocumentTitleChangedEventHandler ICoreWebView2DocumentTitleChangedEventHandler;
+
+#endif /* __ICoreWebView2DocumentTitleChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2HistoryChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2HistoryChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2HistoryChangedEventHandler ICoreWebView2HistoryChangedEventHandler;
+
+#endif /* __ICoreWebView2HistoryChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationCompletedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2NavigationCompletedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2NavigationCompletedEventHandler ICoreWebView2NavigationCompletedEventHandler;
+
+#endif /* __ICoreWebView2NavigationCompletedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2NavigationStartingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2NavigationStartingEventHandler ICoreWebView2NavigationStartingEventHandler;
+
+#endif /* __ICoreWebView2NavigationStartingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2NewWindowRequestedEventHandler ICoreWebView2NewWindowRequestedEventHandler;
+
+#endif /* __ICoreWebView2NewWindowRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2PermissionRequestedEventHandler ICoreWebView2PermissionRequestedEventHandler;
+
+#endif /* __ICoreWebView2PermissionRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ProcessFailedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessFailedEventHandler ICoreWebView2ProcessFailedEventHandler;
+
+#endif /* __ICoreWebView2ProcessFailedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ScriptDialogOpeningEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ScriptDialogOpeningEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ScriptDialogOpeningEventHandler ICoreWebView2ScriptDialogOpeningEventHandler;
+
+#endif /* __ICoreWebView2ScriptDialogOpeningEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SourceChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2SourceChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2SourceChangedEventHandler ICoreWebView2SourceChangedEventHandler;
+
+#endif /* __ICoreWebView2SourceChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebMessageReceivedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2WebMessageReceivedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2WebMessageReceivedEventHandler ICoreWebView2WebMessageReceivedEventHandler;
+
+#endif /* __ICoreWebView2WebMessageReceivedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2WebResourceRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceRequestedEventHandler ICoreWebView2WebResourceRequestedEventHandler;
+
+#endif /* __ICoreWebView2WebResourceRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WindowCloseRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2WindowCloseRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2WindowCloseRequestedEventHandler ICoreWebView2WindowCloseRequestedEventHandler;
+
+#endif /* __ICoreWebView2WindowCloseRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler;
+
+#endif /* __ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ExecuteScriptCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2ExecuteScriptCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ExecuteScriptCompletedHandler ICoreWebView2ExecuteScriptCompletedHandler;
+
+#endif /* __ICoreWebView2ExecuteScriptCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CapturePreviewCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2CapturePreviewCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2CapturePreviewCompletedHandler ICoreWebView2CapturePreviewCompletedHandler;
+
+#endif /* __ICoreWebView2CapturePreviewCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2CallDevToolsProtocolMethodCompletedHandler ICoreWebView2CallDevToolsProtocolMethodCompletedHandler;
+
+#endif /* __ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_2_FWD_DEFINED__
+#define __ICoreWebView2_2_FWD_DEFINED__
+typedef interface ICoreWebView2_2 ICoreWebView2_2;
+
+#endif /* __ICoreWebView2_2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DOMContentLoadedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2DOMContentLoadedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2DOMContentLoadedEventHandler ICoreWebView2DOMContentLoadedEventHandler;
+
+#endif /* __ICoreWebView2DOMContentLoadedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseReceivedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2WebResourceResponseReceivedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceResponseReceivedEventHandler ICoreWebView2WebResourceResponseReceivedEventHandler;
+
+#endif /* __ICoreWebView2WebResourceResponseReceivedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_3_FWD_DEFINED__
+#define __ICoreWebView2_3_FWD_DEFINED__
+typedef interface ICoreWebView2_3 ICoreWebView2_3;
+
+#endif /* __ICoreWebView2_3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2TrySuspendCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2TrySuspendCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2TrySuspendCompletedHandler ICoreWebView2TrySuspendCompletedHandler;
+
+#endif /* __ICoreWebView2TrySuspendCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_4_FWD_DEFINED__
+#define __ICoreWebView2_4_FWD_DEFINED__
+typedef interface ICoreWebView2_4 ICoreWebView2_4;
+
+#endif /* __ICoreWebView2_4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DownloadStartingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2DownloadStartingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2DownloadStartingEventHandler ICoreWebView2DownloadStartingEventHandler;
+
+#endif /* __ICoreWebView2DownloadStartingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameCreatedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameCreatedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameCreatedEventHandler ICoreWebView2FrameCreatedEventHandler;
+
+#endif /* __ICoreWebView2FrameCreatedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_5_FWD_DEFINED__
+#define __ICoreWebView2_5_FWD_DEFINED__
+typedef interface ICoreWebView2_5 ICoreWebView2_5;
+
+#endif /* __ICoreWebView2_5_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificateRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ClientCertificateRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ClientCertificateRequestedEventHandler ICoreWebView2ClientCertificateRequestedEventHandler;
+
+#endif /* __ICoreWebView2ClientCertificateRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_6_FWD_DEFINED__
+#define __ICoreWebView2_6_FWD_DEFINED__
+typedef interface ICoreWebView2_6 ICoreWebView2_6;
+
+#endif /* __ICoreWebView2_6_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_7_FWD_DEFINED__
+#define __ICoreWebView2_7_FWD_DEFINED__
+typedef interface ICoreWebView2_7 ICoreWebView2_7;
+
+#endif /* __ICoreWebView2_7_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintToPdfCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2PrintToPdfCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2PrintToPdfCompletedHandler ICoreWebView2PrintToPdfCompletedHandler;
+
+#endif /* __ICoreWebView2PrintToPdfCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_8_FWD_DEFINED__
+#define __ICoreWebView2_8_FWD_DEFINED__
+typedef interface ICoreWebView2_8 ICoreWebView2_8;
+
+#endif /* __ICoreWebView2_8_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2IsDocumentPlayingAudioChangedEventHandler ICoreWebView2IsDocumentPlayingAudioChangedEventHandler;
+
+#endif /* __ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2IsMutedChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2IsMutedChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2IsMutedChangedEventHandler ICoreWebView2IsMutedChangedEventHandler;
+
+#endif /* __ICoreWebView2IsMutedChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_9_FWD_DEFINED__
+#define __ICoreWebView2_9_FWD_DEFINED__
+typedef interface ICoreWebView2_9 ICoreWebView2_9;
+
+#endif /* __ICoreWebView2_9_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler;
+
+#endif /* __ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_10_FWD_DEFINED__
+#define __ICoreWebView2_10_FWD_DEFINED__
+typedef interface ICoreWebView2_10 ICoreWebView2_10;
+
+#endif /* __ICoreWebView2_10_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BasicAuthenticationRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2BasicAuthenticationRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2BasicAuthenticationRequestedEventHandler ICoreWebView2BasicAuthenticationRequestedEventHandler;
+
+#endif /* __ICoreWebView2BasicAuthenticationRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_11_FWD_DEFINED__
+#define __ICoreWebView2_11_FWD_DEFINED__
+typedef interface ICoreWebView2_11 ICoreWebView2_11;
+
+#endif /* __ICoreWebView2_11_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ContextMenuRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ContextMenuRequestedEventHandler ICoreWebView2ContextMenuRequestedEventHandler;
+
+#endif /* __ICoreWebView2ContextMenuRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_12_FWD_DEFINED__
+#define __ICoreWebView2_12_FWD_DEFINED__
+typedef interface ICoreWebView2_12 ICoreWebView2_12;
+
+#endif /* __ICoreWebView2_12_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2StatusBarTextChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2StatusBarTextChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2StatusBarTextChangedEventHandler ICoreWebView2StatusBarTextChangedEventHandler;
+
+#endif /* __ICoreWebView2StatusBarTextChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_13_FWD_DEFINED__
+#define __ICoreWebView2_13_FWD_DEFINED__
+typedef interface ICoreWebView2_13 ICoreWebView2_13;
+
+#endif /* __ICoreWebView2_13_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_14_FWD_DEFINED__
+#define __ICoreWebView2_14_FWD_DEFINED__
+typedef interface ICoreWebView2_14 ICoreWebView2_14;
+
+#endif /* __ICoreWebView2_14_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ServerCertificateErrorDetectedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ServerCertificateErrorDetectedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ServerCertificateErrorDetectedEventHandler ICoreWebView2ServerCertificateErrorDetectedEventHandler;
+
+#endif /* __ICoreWebView2ServerCertificateErrorDetectedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler;
+
+#endif /* __ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_15_FWD_DEFINED__
+#define __ICoreWebView2_15_FWD_DEFINED__
+typedef interface ICoreWebView2_15 ICoreWebView2_15;
+
+#endif /* __ICoreWebView2_15_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FaviconChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FaviconChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FaviconChangedEventHandler ICoreWebView2FaviconChangedEventHandler;
+
+#endif /* __ICoreWebView2FaviconChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2GetFaviconCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2GetFaviconCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2GetFaviconCompletedHandler ICoreWebView2GetFaviconCompletedHandler;
+
+#endif /* __ICoreWebView2GetFaviconCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_16_FWD_DEFINED__
+#define __ICoreWebView2_16_FWD_DEFINED__
+typedef interface ICoreWebView2_16 ICoreWebView2_16;
+
+#endif /* __ICoreWebView2_16_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2PrintCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2PrintCompletedHandler ICoreWebView2PrintCompletedHandler;
+
+#endif /* __ICoreWebView2PrintCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintToPdfStreamCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2PrintToPdfStreamCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2PrintToPdfStreamCompletedHandler ICoreWebView2PrintToPdfStreamCompletedHandler;
+
+#endif /* __ICoreWebView2PrintToPdfStreamCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_17_FWD_DEFINED__
+#define __ICoreWebView2_17_FWD_DEFINED__
+typedef interface ICoreWebView2_17 ICoreWebView2_17;
+
+#endif /* __ICoreWebView2_17_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_18_FWD_DEFINED__
+#define __ICoreWebView2_18_FWD_DEFINED__
+typedef interface ICoreWebView2_18 ICoreWebView2_18;
+
+#endif /* __ICoreWebView2_18_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2LaunchingExternalUriSchemeEventHandler_FWD_DEFINED__
+#define __ICoreWebView2LaunchingExternalUriSchemeEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2LaunchingExternalUriSchemeEventHandler ICoreWebView2LaunchingExternalUriSchemeEventHandler;
+
+#endif /* __ICoreWebView2LaunchingExternalUriSchemeEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_19_FWD_DEFINED__
+#define __ICoreWebView2_19_FWD_DEFINED__
+typedef interface ICoreWebView2_19 ICoreWebView2_19;
+
+#endif /* __ICoreWebView2_19_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_20_FWD_DEFINED__
+#define __ICoreWebView2_20_FWD_DEFINED__
+typedef interface ICoreWebView2_20 ICoreWebView2_20;
+
+#endif /* __ICoreWebView2_20_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_21_FWD_DEFINED__
+#define __ICoreWebView2_21_FWD_DEFINED__
+typedef interface ICoreWebView2_21 ICoreWebView2_21;
+
+#endif /* __ICoreWebView2_21_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ExecuteScriptWithResultCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2ExecuteScriptWithResultCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ExecuteScriptWithResultCompletedHandler ICoreWebView2ExecuteScriptWithResultCompletedHandler;
+
+#endif /* __ICoreWebView2ExecuteScriptWithResultCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_22_FWD_DEFINED__
+#define __ICoreWebView2_22_FWD_DEFINED__
+typedef interface ICoreWebView2_22 ICoreWebView2_22;
+
+#endif /* __ICoreWebView2_22_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_23_FWD_DEFINED__
+#define __ICoreWebView2_23_FWD_DEFINED__
+typedef interface ICoreWebView2_23 ICoreWebView2_23;
+
+#endif /* __ICoreWebView2_23_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_24_FWD_DEFINED__
+#define __ICoreWebView2_24_FWD_DEFINED__
+typedef interface ICoreWebView2_24 ICoreWebView2_24;
+
+#endif /* __ICoreWebView2_24_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NotificationReceivedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2NotificationReceivedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2NotificationReceivedEventHandler ICoreWebView2NotificationReceivedEventHandler;
+
+#endif /* __ICoreWebView2NotificationReceivedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_25_FWD_DEFINED__
+#define __ICoreWebView2_25_FWD_DEFINED__
+typedef interface ICoreWebView2_25 ICoreWebView2_25;
+
+#endif /* __ICoreWebView2_25_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveAsUIShowingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2SaveAsUIShowingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2SaveAsUIShowingEventHandler ICoreWebView2SaveAsUIShowingEventHandler;
+
+#endif /* __ICoreWebView2SaveAsUIShowingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ShowSaveAsUICompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2ShowSaveAsUICompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ShowSaveAsUICompletedHandler ICoreWebView2ShowSaveAsUICompletedHandler;
+
+#endif /* __ICoreWebView2ShowSaveAsUICompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_26_FWD_DEFINED__
+#define __ICoreWebView2_26_FWD_DEFINED__
+typedef interface ICoreWebView2_26 ICoreWebView2_26;
+
+#endif /* __ICoreWebView2_26_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveFileSecurityCheckStartingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2SaveFileSecurityCheckStartingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2SaveFileSecurityCheckStartingEventHandler ICoreWebView2SaveFileSecurityCheckStartingEventHandler;
+
+#endif /* __ICoreWebView2SaveFileSecurityCheckStartingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2_27_FWD_DEFINED__
+#define __ICoreWebView2_27_FWD_DEFINED__
+typedef interface ICoreWebView2_27 ICoreWebView2_27;
+
+#endif /* __ICoreWebView2_27_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ScreenCaptureStartingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ScreenCaptureStartingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ScreenCaptureStartingEventHandler ICoreWebView2ScreenCaptureStartingEventHandler;
+
+#endif /* __ICoreWebView2ScreenCaptureStartingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2AcceleratorKeyPressedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2AcceleratorKeyPressedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2AcceleratorKeyPressedEventArgs ICoreWebView2AcceleratorKeyPressedEventArgs;
+
+#endif /* __ICoreWebView2AcceleratorKeyPressedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2AcceleratorKeyPressedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2AcceleratorKeyPressedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2AcceleratorKeyPressedEventArgs2 ICoreWebView2AcceleratorKeyPressedEventArgs2;
+
+#endif /* __ICoreWebView2AcceleratorKeyPressedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BasicAuthenticationRequestedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2BasicAuthenticationRequestedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2BasicAuthenticationRequestedEventArgs ICoreWebView2BasicAuthenticationRequestedEventArgs;
+
+#endif /* __ICoreWebView2BasicAuthenticationRequestedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BasicAuthenticationResponse_FWD_DEFINED__
+#define __ICoreWebView2BasicAuthenticationResponse_FWD_DEFINED__
+typedef interface ICoreWebView2BasicAuthenticationResponse ICoreWebView2BasicAuthenticationResponse;
+
+#endif /* __ICoreWebView2BasicAuthenticationResponse_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtension_FWD_DEFINED__
+#define __ICoreWebView2BrowserExtension_FWD_DEFINED__
+typedef interface ICoreWebView2BrowserExtension ICoreWebView2BrowserExtension;
+
+#endif /* __ICoreWebView2BrowserExtension_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtensionRemoveCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2BrowserExtensionRemoveCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2BrowserExtensionRemoveCompletedHandler ICoreWebView2BrowserExtensionRemoveCompletedHandler;
+
+#endif /* __ICoreWebView2BrowserExtensionRemoveCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtensionEnableCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2BrowserExtensionEnableCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2BrowserExtensionEnableCompletedHandler ICoreWebView2BrowserExtensionEnableCompletedHandler;
+
+#endif /* __ICoreWebView2BrowserExtensionEnableCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserProcessExitedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2BrowserProcessExitedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2BrowserProcessExitedEventArgs ICoreWebView2BrowserProcessExitedEventArgs;
+
+#endif /* __ICoreWebView2BrowserProcessExitedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Certificate_FWD_DEFINED__
+#define __ICoreWebView2Certificate_FWD_DEFINED__
+typedef interface ICoreWebView2Certificate ICoreWebView2Certificate;
+
+#endif /* __ICoreWebView2Certificate_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificate_FWD_DEFINED__
+#define __ICoreWebView2ClientCertificate_FWD_DEFINED__
+typedef interface ICoreWebView2ClientCertificate ICoreWebView2ClientCertificate;
+
+#endif /* __ICoreWebView2ClientCertificate_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificateRequestedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2ClientCertificateRequestedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2ClientCertificateRequestedEventArgs ICoreWebView2ClientCertificateRequestedEventArgs;
+
+#endif /* __ICoreWebView2ClientCertificateRequestedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2StringCollection_FWD_DEFINED__
+#define __ICoreWebView2StringCollection_FWD_DEFINED__
+typedef interface ICoreWebView2StringCollection ICoreWebView2StringCollection;
+
+#endif /* __ICoreWebView2StringCollection_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificateCollection_FWD_DEFINED__
+#define __ICoreWebView2ClientCertificateCollection_FWD_DEFINED__
+typedef interface ICoreWebView2ClientCertificateCollection ICoreWebView2ClientCertificateCollection;
+
+#endif /* __ICoreWebView2ClientCertificateCollection_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController_FWD_DEFINED__
+#define __ICoreWebView2CompositionController_FWD_DEFINED__
+typedef interface ICoreWebView2CompositionController ICoreWebView2CompositionController;
+
+#endif /* __ICoreWebView2CompositionController_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CursorChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2CursorChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2CursorChangedEventHandler ICoreWebView2CursorChangedEventHandler;
+
+#endif /* __ICoreWebView2CursorChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController2_FWD_DEFINED__
+#define __ICoreWebView2CompositionController2_FWD_DEFINED__
+typedef interface ICoreWebView2CompositionController2 ICoreWebView2CompositionController2;
+
+#endif /* __ICoreWebView2CompositionController2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController3_FWD_DEFINED__
+#define __ICoreWebView2CompositionController3_FWD_DEFINED__
+typedef interface ICoreWebView2CompositionController3 ICoreWebView2CompositionController3;
+
+#endif /* __ICoreWebView2CompositionController3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController4_FWD_DEFINED__
+#define __ICoreWebView2CompositionController4_FWD_DEFINED__
+typedef interface ICoreWebView2CompositionController4 ICoreWebView2CompositionController4;
+
+#endif /* __ICoreWebView2CompositionController4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NonClientRegionChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2NonClientRegionChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2NonClientRegionChangedEventHandler ICoreWebView2NonClientRegionChangedEventHandler;
+
+#endif /* __ICoreWebView2NonClientRegionChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2RegionRectCollectionView_FWD_DEFINED__
+#define __ICoreWebView2RegionRectCollectionView_FWD_DEFINED__
+typedef interface ICoreWebView2RegionRectCollectionView ICoreWebView2RegionRectCollectionView;
+
+#endif /* __ICoreWebView2RegionRectCollectionView_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContentLoadingEventArgs_FWD_DEFINED__
+#define __ICoreWebView2ContentLoadingEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2ContentLoadingEventArgs ICoreWebView2ContentLoadingEventArgs;
+
+#endif /* __ICoreWebView2ContentLoadingEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuItem_FWD_DEFINED__
+#define __ICoreWebView2ContextMenuItem_FWD_DEFINED__
+typedef interface ICoreWebView2ContextMenuItem ICoreWebView2ContextMenuItem;
+
+#endif /* __ICoreWebView2ContextMenuItem_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CustomItemSelectedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2CustomItemSelectedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2CustomItemSelectedEventHandler ICoreWebView2CustomItemSelectedEventHandler;
+
+#endif /* __ICoreWebView2CustomItemSelectedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuItemCollection_FWD_DEFINED__
+#define __ICoreWebView2ContextMenuItemCollection_FWD_DEFINED__
+typedef interface ICoreWebView2ContextMenuItemCollection ICoreWebView2ContextMenuItemCollection;
+
+#endif /* __ICoreWebView2ContextMenuItemCollection_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuRequestedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2ContextMenuRequestedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2ContextMenuRequestedEventArgs ICoreWebView2ContextMenuRequestedEventArgs;
+
+#endif /* __ICoreWebView2ContextMenuRequestedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuTarget_FWD_DEFINED__
+#define __ICoreWebView2ContextMenuTarget_FWD_DEFINED__
+typedef interface ICoreWebView2ContextMenuTarget ICoreWebView2ContextMenuTarget;
+
+#endif /* __ICoreWebView2ContextMenuTarget_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller_FWD_DEFINED__
+#define __ICoreWebView2Controller_FWD_DEFINED__
+typedef interface ICoreWebView2Controller ICoreWebView2Controller;
+
+#endif /* __ICoreWebView2Controller_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2AcceleratorKeyPressedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2AcceleratorKeyPressedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2AcceleratorKeyPressedEventHandler ICoreWebView2AcceleratorKeyPressedEventHandler;
+
+#endif /* __ICoreWebView2AcceleratorKeyPressedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FocusChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FocusChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FocusChangedEventHandler ICoreWebView2FocusChangedEventHandler;
+
+#endif /* __ICoreWebView2FocusChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2MoveFocusRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2MoveFocusRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2MoveFocusRequestedEventHandler ICoreWebView2MoveFocusRequestedEventHandler;
+
+#endif /* __ICoreWebView2MoveFocusRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ZoomFactorChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ZoomFactorChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ZoomFactorChangedEventHandler ICoreWebView2ZoomFactorChangedEventHandler;
+
+#endif /* __ICoreWebView2ZoomFactorChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller2_FWD_DEFINED__
+#define __ICoreWebView2Controller2_FWD_DEFINED__
+typedef interface ICoreWebView2Controller2 ICoreWebView2Controller2;
+
+#endif /* __ICoreWebView2Controller2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller3_FWD_DEFINED__
+#define __ICoreWebView2Controller3_FWD_DEFINED__
+typedef interface ICoreWebView2Controller3 ICoreWebView2Controller3;
+
+#endif /* __ICoreWebView2Controller3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2RasterizationScaleChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2RasterizationScaleChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2RasterizationScaleChangedEventHandler ICoreWebView2RasterizationScaleChangedEventHandler;
+
+#endif /* __ICoreWebView2RasterizationScaleChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller4_FWD_DEFINED__
+#define __ICoreWebView2Controller4_FWD_DEFINED__
+typedef interface ICoreWebView2Controller4 ICoreWebView2Controller4;
+
+#endif /* __ICoreWebView2Controller4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions_FWD_DEFINED__
+#define __ICoreWebView2ControllerOptions_FWD_DEFINED__
+typedef interface ICoreWebView2ControllerOptions ICoreWebView2ControllerOptions;
+
+#endif /* __ICoreWebView2ControllerOptions_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions2_FWD_DEFINED__
+#define __ICoreWebView2ControllerOptions2_FWD_DEFINED__
+typedef interface ICoreWebView2ControllerOptions2 ICoreWebView2ControllerOptions2;
+
+#endif /* __ICoreWebView2ControllerOptions2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions3_FWD_DEFINED__
+#define __ICoreWebView2ControllerOptions3_FWD_DEFINED__
+typedef interface ICoreWebView2ControllerOptions3 ICoreWebView2ControllerOptions3;
+
+#endif /* __ICoreWebView2ControllerOptions3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions4_FWD_DEFINED__
+#define __ICoreWebView2ControllerOptions4_FWD_DEFINED__
+typedef interface ICoreWebView2ControllerOptions4 ICoreWebView2ControllerOptions4;
+
+#endif /* __ICoreWebView2ControllerOptions4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Cookie_FWD_DEFINED__
+#define __ICoreWebView2Cookie_FWD_DEFINED__
+typedef interface ICoreWebView2Cookie ICoreWebView2Cookie;
+
+#endif /* __ICoreWebView2Cookie_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CookieManager_FWD_DEFINED__
+#define __ICoreWebView2CookieManager_FWD_DEFINED__
+typedef interface ICoreWebView2CookieManager ICoreWebView2CookieManager;
+
+#endif /* __ICoreWebView2CookieManager_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2GetCookiesCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2GetCookiesCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2GetCookiesCompletedHandler ICoreWebView2GetCookiesCompletedHandler;
+
+#endif /* __ICoreWebView2GetCookiesCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CookieList_FWD_DEFINED__
+#define __ICoreWebView2CookieList_FWD_DEFINED__
+typedef interface ICoreWebView2CookieList ICoreWebView2CookieList;
+
+#endif /* __ICoreWebView2CookieList_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CustomSchemeRegistration_FWD_DEFINED__
+#define __ICoreWebView2CustomSchemeRegistration_FWD_DEFINED__
+typedef interface ICoreWebView2CustomSchemeRegistration ICoreWebView2CustomSchemeRegistration;
+
+#endif /* __ICoreWebView2CustomSchemeRegistration_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DOMContentLoadedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2DOMContentLoadedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2DOMContentLoadedEventArgs ICoreWebView2DOMContentLoadedEventArgs;
+
+#endif /* __ICoreWebView2DOMContentLoadedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Deferral_FWD_DEFINED__
+#define __ICoreWebView2Deferral_FWD_DEFINED__
+typedef interface ICoreWebView2Deferral ICoreWebView2Deferral;
+
+#endif /* __ICoreWebView2Deferral_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceivedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceivedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs ICoreWebView2DevToolsProtocolEventReceivedEventArgs;
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceivedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 ICoreWebView2DevToolsProtocolEventReceivedEventArgs2;
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceiver_FWD_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceiver_FWD_DEFINED__
+typedef interface ICoreWebView2DevToolsProtocolEventReceiver ICoreWebView2DevToolsProtocolEventReceiver;
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceiver_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceivedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceivedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2DevToolsProtocolEventReceivedEventHandler ICoreWebView2DevToolsProtocolEventReceivedEventHandler;
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceivedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DownloadOperation_FWD_DEFINED__
+#define __ICoreWebView2DownloadOperation_FWD_DEFINED__
+typedef interface ICoreWebView2DownloadOperation ICoreWebView2DownloadOperation;
+
+#endif /* __ICoreWebView2DownloadOperation_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BytesReceivedChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2BytesReceivedChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2BytesReceivedChangedEventHandler ICoreWebView2BytesReceivedChangedEventHandler;
+
+#endif /* __ICoreWebView2BytesReceivedChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EstimatedEndTimeChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2EstimatedEndTimeChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2EstimatedEndTimeChangedEventHandler ICoreWebView2EstimatedEndTimeChangedEventHandler;
+
+#endif /* __ICoreWebView2EstimatedEndTimeChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2StateChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2StateChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2StateChangedEventHandler ICoreWebView2StateChangedEventHandler;
+
+#endif /* __ICoreWebView2StateChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2DownloadStartingEventArgs_FWD_DEFINED__
+#define __ICoreWebView2DownloadStartingEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2DownloadStartingEventArgs ICoreWebView2DownloadStartingEventArgs;
+
+#endif /* __ICoreWebView2DownloadStartingEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler;
+
+#endif /* __ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment_FWD_DEFINED__
+#define __ICoreWebView2Environment_FWD_DEFINED__
+typedef interface ICoreWebView2Environment ICoreWebView2Environment;
+
+#endif /* __ICoreWebView2Environment_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NewBrowserVersionAvailableEventHandler_FWD_DEFINED__
+#define __ICoreWebView2NewBrowserVersionAvailableEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2NewBrowserVersionAvailableEventHandler ICoreWebView2NewBrowserVersionAvailableEventHandler;
+
+#endif /* __ICoreWebView2NewBrowserVersionAvailableEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2CreateCoreWebView2ControllerCompletedHandler ICoreWebView2CreateCoreWebView2ControllerCompletedHandler;
+
+#endif /* __ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment2_FWD_DEFINED__
+#define __ICoreWebView2Environment2_FWD_DEFINED__
+typedef interface ICoreWebView2Environment2 ICoreWebView2Environment2;
+
+#endif /* __ICoreWebView2Environment2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment3_FWD_DEFINED__
+#define __ICoreWebView2Environment3_FWD_DEFINED__
+typedef interface ICoreWebView2Environment3 ICoreWebView2Environment3;
+
+#endif /* __ICoreWebView2Environment3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler;
+
+#endif /* __ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment4_FWD_DEFINED__
+#define __ICoreWebView2Environment4_FWD_DEFINED__
+typedef interface ICoreWebView2Environment4 ICoreWebView2Environment4;
+
+#endif /* __ICoreWebView2Environment4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment5_FWD_DEFINED__
+#define __ICoreWebView2Environment5_FWD_DEFINED__
+typedef interface ICoreWebView2Environment5 ICoreWebView2Environment5;
+
+#endif /* __ICoreWebView2Environment5_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserProcessExitedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2BrowserProcessExitedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2BrowserProcessExitedEventHandler ICoreWebView2BrowserProcessExitedEventHandler;
+
+#endif /* __ICoreWebView2BrowserProcessExitedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment6_FWD_DEFINED__
+#define __ICoreWebView2Environment6_FWD_DEFINED__
+typedef interface ICoreWebView2Environment6 ICoreWebView2Environment6;
+
+#endif /* __ICoreWebView2Environment6_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment7_FWD_DEFINED__
+#define __ICoreWebView2Environment7_FWD_DEFINED__
+typedef interface ICoreWebView2Environment7 ICoreWebView2Environment7;
+
+#endif /* __ICoreWebView2Environment7_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment8_FWD_DEFINED__
+#define __ICoreWebView2Environment8_FWD_DEFINED__
+typedef interface ICoreWebView2Environment8 ICoreWebView2Environment8;
+
+#endif /* __ICoreWebView2Environment8_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessInfosChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ProcessInfosChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessInfosChangedEventHandler ICoreWebView2ProcessInfosChangedEventHandler;
+
+#endif /* __ICoreWebView2ProcessInfosChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessInfoCollection_FWD_DEFINED__
+#define __ICoreWebView2ProcessInfoCollection_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessInfoCollection ICoreWebView2ProcessInfoCollection;
+
+#endif /* __ICoreWebView2ProcessInfoCollection_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment9_FWD_DEFINED__
+#define __ICoreWebView2Environment9_FWD_DEFINED__
+typedef interface ICoreWebView2Environment9 ICoreWebView2Environment9;
+
+#endif /* __ICoreWebView2Environment9_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment10_FWD_DEFINED__
+#define __ICoreWebView2Environment10_FWD_DEFINED__
+typedef interface ICoreWebView2Environment10 ICoreWebView2Environment10;
+
+#endif /* __ICoreWebView2Environment10_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment11_FWD_DEFINED__
+#define __ICoreWebView2Environment11_FWD_DEFINED__
+typedef interface ICoreWebView2Environment11 ICoreWebView2Environment11;
+
+#endif /* __ICoreWebView2Environment11_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment12_FWD_DEFINED__
+#define __ICoreWebView2Environment12_FWD_DEFINED__
+typedef interface ICoreWebView2Environment12 ICoreWebView2Environment12;
+
+#endif /* __ICoreWebView2Environment12_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment13_FWD_DEFINED__
+#define __ICoreWebView2Environment13_FWD_DEFINED__
+typedef interface ICoreWebView2Environment13 ICoreWebView2Environment13;
+
+#endif /* __ICoreWebView2Environment13_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2GetProcessExtendedInfosCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2GetProcessExtendedInfosCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2GetProcessExtendedInfosCompletedHandler ICoreWebView2GetProcessExtendedInfosCompletedHandler;
+
+#endif /* __ICoreWebView2GetProcessExtendedInfosCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessExtendedInfoCollection_FWD_DEFINED__
+#define __ICoreWebView2ProcessExtendedInfoCollection_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessExtendedInfoCollection ICoreWebView2ProcessExtendedInfoCollection;
+
+#endif /* __ICoreWebView2ProcessExtendedInfoCollection_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment14_FWD_DEFINED__
+#define __ICoreWebView2Environment14_FWD_DEFINED__
+typedef interface ICoreWebView2Environment14 ICoreWebView2Environment14;
+
+#endif /* __ICoreWebView2Environment14_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions ICoreWebView2EnvironmentOptions;
+
+#endif /* __ICoreWebView2EnvironmentOptions_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions2_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions2_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions2 ICoreWebView2EnvironmentOptions2;
+
+#endif /* __ICoreWebView2EnvironmentOptions2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions3_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions3_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions3 ICoreWebView2EnvironmentOptions3;
+
+#endif /* __ICoreWebView2EnvironmentOptions3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions4_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions4_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions4 ICoreWebView2EnvironmentOptions4;
+
+#endif /* __ICoreWebView2EnvironmentOptions4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions5_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions5_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions5 ICoreWebView2EnvironmentOptions5;
+
+#endif /* __ICoreWebView2EnvironmentOptions5_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions6_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions6_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions6 ICoreWebView2EnvironmentOptions6;
+
+#endif /* __ICoreWebView2EnvironmentOptions6_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions7_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions7_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions7 ICoreWebView2EnvironmentOptions7;
+
+#endif /* __ICoreWebView2EnvironmentOptions7_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions8_FWD_DEFINED__
+#define __ICoreWebView2EnvironmentOptions8_FWD_DEFINED__
+typedef interface ICoreWebView2EnvironmentOptions8 ICoreWebView2EnvironmentOptions8;
+
+#endif /* __ICoreWebView2EnvironmentOptions8_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ExecuteScriptResult_FWD_DEFINED__
+#define __ICoreWebView2ExecuteScriptResult_FWD_DEFINED__
+typedef interface ICoreWebView2ExecuteScriptResult ICoreWebView2ExecuteScriptResult;
+
+#endif /* __ICoreWebView2ExecuteScriptResult_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2File_FWD_DEFINED__
+#define __ICoreWebView2File_FWD_DEFINED__
+typedef interface ICoreWebView2File ICoreWebView2File;
+
+#endif /* __ICoreWebView2File_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FileSystemHandle_FWD_DEFINED__
+#define __ICoreWebView2FileSystemHandle_FWD_DEFINED__
+typedef interface ICoreWebView2FileSystemHandle ICoreWebView2FileSystemHandle;
+
+#endif /* __ICoreWebView2FileSystemHandle_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame_FWD_DEFINED__
+#define __ICoreWebView2Frame_FWD_DEFINED__
+typedef interface ICoreWebView2Frame ICoreWebView2Frame;
+
+#endif /* __ICoreWebView2Frame_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameDestroyedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameDestroyedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameDestroyedEventHandler ICoreWebView2FrameDestroyedEventHandler;
+
+#endif /* __ICoreWebView2FrameDestroyedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameNameChangedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameNameChangedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameNameChangedEventHandler ICoreWebView2FrameNameChangedEventHandler;
+
+#endif /* __ICoreWebView2FrameNameChangedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame2_FWD_DEFINED__
+#define __ICoreWebView2Frame2_FWD_DEFINED__
+typedef interface ICoreWebView2Frame2 ICoreWebView2Frame2;
+
+#endif /* __ICoreWebView2Frame2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameContentLoadingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameContentLoadingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameContentLoadingEventHandler ICoreWebView2FrameContentLoadingEventHandler;
+
+#endif /* __ICoreWebView2FrameContentLoadingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameDOMContentLoadedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameDOMContentLoadedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameDOMContentLoadedEventHandler ICoreWebView2FrameDOMContentLoadedEventHandler;
+
+#endif /* __ICoreWebView2FrameDOMContentLoadedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameNavigationCompletedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameNavigationCompletedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameNavigationCompletedEventHandler ICoreWebView2FrameNavigationCompletedEventHandler;
+
+#endif /* __ICoreWebView2FrameNavigationCompletedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameNavigationStartingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameNavigationStartingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameNavigationStartingEventHandler ICoreWebView2FrameNavigationStartingEventHandler;
+
+#endif /* __ICoreWebView2FrameNavigationStartingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameWebMessageReceivedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameWebMessageReceivedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameWebMessageReceivedEventHandler ICoreWebView2FrameWebMessageReceivedEventHandler;
+
+#endif /* __ICoreWebView2FrameWebMessageReceivedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame3_FWD_DEFINED__
+#define __ICoreWebView2Frame3_FWD_DEFINED__
+typedef interface ICoreWebView2Frame3 ICoreWebView2Frame3;
+
+#endif /* __ICoreWebView2Frame3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FramePermissionRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FramePermissionRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FramePermissionRequestedEventHandler ICoreWebView2FramePermissionRequestedEventHandler;
+
+#endif /* __ICoreWebView2FramePermissionRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame4_FWD_DEFINED__
+#define __ICoreWebView2Frame4_FWD_DEFINED__
+typedef interface ICoreWebView2Frame4 ICoreWebView2Frame4;
+
+#endif /* __ICoreWebView2Frame4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame5_FWD_DEFINED__
+#define __ICoreWebView2Frame5_FWD_DEFINED__
+typedef interface ICoreWebView2Frame5 ICoreWebView2Frame5;
+
+#endif /* __ICoreWebView2Frame5_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame6_FWD_DEFINED__
+#define __ICoreWebView2Frame6_FWD_DEFINED__
+typedef interface ICoreWebView2Frame6 ICoreWebView2Frame6;
+
+#endif /* __ICoreWebView2Frame6_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameScreenCaptureStartingEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameScreenCaptureStartingEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameScreenCaptureStartingEventHandler ICoreWebView2FrameScreenCaptureStartingEventHandler;
+
+#endif /* __ICoreWebView2FrameScreenCaptureStartingEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame7_FWD_DEFINED__
+#define __ICoreWebView2Frame7_FWD_DEFINED__
+typedef interface ICoreWebView2Frame7 ICoreWebView2Frame7;
+
+#endif /* __ICoreWebView2Frame7_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameChildFrameCreatedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2FrameChildFrameCreatedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2FrameChildFrameCreatedEventHandler ICoreWebView2FrameChildFrameCreatedEventHandler;
+
+#endif /* __ICoreWebView2FrameChildFrameCreatedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameCreatedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2FrameCreatedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2FrameCreatedEventArgs ICoreWebView2FrameCreatedEventArgs;
+
+#endif /* __ICoreWebView2FrameCreatedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfo_FWD_DEFINED__
+#define __ICoreWebView2FrameInfo_FWD_DEFINED__
+typedef interface ICoreWebView2FrameInfo ICoreWebView2FrameInfo;
+
+#endif /* __ICoreWebView2FrameInfo_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfo2_FWD_DEFINED__
+#define __ICoreWebView2FrameInfo2_FWD_DEFINED__
+typedef interface ICoreWebView2FrameInfo2 ICoreWebView2FrameInfo2;
+
+#endif /* __ICoreWebView2FrameInfo2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfoCollection_FWD_DEFINED__
+#define __ICoreWebView2FrameInfoCollection_FWD_DEFINED__
+typedef interface ICoreWebView2FrameInfoCollection ICoreWebView2FrameInfoCollection;
+
+#endif /* __ICoreWebView2FrameInfoCollection_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfoCollectionIterator_FWD_DEFINED__
+#define __ICoreWebView2FrameInfoCollectionIterator_FWD_DEFINED__
+typedef interface ICoreWebView2FrameInfoCollectionIterator ICoreWebView2FrameInfoCollectionIterator;
+
+#endif /* __ICoreWebView2FrameInfoCollectionIterator_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2HttpHeadersCollectionIterator_FWD_DEFINED__
+#define __ICoreWebView2HttpHeadersCollectionIterator_FWD_DEFINED__
+typedef interface ICoreWebView2HttpHeadersCollectionIterator ICoreWebView2HttpHeadersCollectionIterator;
+
+#endif /* __ICoreWebView2HttpHeadersCollectionIterator_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2HttpRequestHeaders_FWD_DEFINED__
+#define __ICoreWebView2HttpRequestHeaders_FWD_DEFINED__
+typedef interface ICoreWebView2HttpRequestHeaders ICoreWebView2HttpRequestHeaders;
+
+#endif /* __ICoreWebView2HttpRequestHeaders_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2HttpResponseHeaders_FWD_DEFINED__
+#define __ICoreWebView2HttpResponseHeaders_FWD_DEFINED__
+typedef interface ICoreWebView2HttpResponseHeaders ICoreWebView2HttpResponseHeaders;
+
+#endif /* __ICoreWebView2HttpResponseHeaders_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2LaunchingExternalUriSchemeEventArgs_FWD_DEFINED__
+#define __ICoreWebView2LaunchingExternalUriSchemeEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2LaunchingExternalUriSchemeEventArgs ICoreWebView2LaunchingExternalUriSchemeEventArgs;
+
+#endif /* __ICoreWebView2LaunchingExternalUriSchemeEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2MoveFocusRequestedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2MoveFocusRequestedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2MoveFocusRequestedEventArgs ICoreWebView2MoveFocusRequestedEventArgs;
+
+#endif /* __ICoreWebView2MoveFocusRequestedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationCompletedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2NavigationCompletedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2NavigationCompletedEventArgs ICoreWebView2NavigationCompletedEventArgs;
+
+#endif /* __ICoreWebView2NavigationCompletedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationCompletedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2NavigationCompletedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2NavigationCompletedEventArgs2 ICoreWebView2NavigationCompletedEventArgs2;
+
+#endif /* __ICoreWebView2NavigationCompletedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventArgs_FWD_DEFINED__
+#define __ICoreWebView2NavigationStartingEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2NavigationStartingEventArgs ICoreWebView2NavigationStartingEventArgs;
+
+#endif /* __ICoreWebView2NavigationStartingEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2NavigationStartingEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2NavigationStartingEventArgs2 ICoreWebView2NavigationStartingEventArgs2;
+
+#endif /* __ICoreWebView2NavigationStartingEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventArgs3_FWD_DEFINED__
+#define __ICoreWebView2NavigationStartingEventArgs3_FWD_DEFINED__
+typedef interface ICoreWebView2NavigationStartingEventArgs3 ICoreWebView2NavigationStartingEventArgs3;
+
+#endif /* __ICoreWebView2NavigationStartingEventArgs3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2NewWindowRequestedEventArgs ICoreWebView2NewWindowRequestedEventArgs;
+
+#endif /* __ICoreWebView2NewWindowRequestedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2NewWindowRequestedEventArgs2 ICoreWebView2NewWindowRequestedEventArgs2;
+
+#endif /* __ICoreWebView2NewWindowRequestedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventArgs3_FWD_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventArgs3_FWD_DEFINED__
+typedef interface ICoreWebView2NewWindowRequestedEventArgs3 ICoreWebView2NewWindowRequestedEventArgs3;
+
+#endif /* __ICoreWebView2NewWindowRequestedEventArgs3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NonClientRegionChangedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2NonClientRegionChangedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2NonClientRegionChangedEventArgs ICoreWebView2NonClientRegionChangedEventArgs;
+
+#endif /* __ICoreWebView2NonClientRegionChangedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Notification_FWD_DEFINED__
+#define __ICoreWebView2Notification_FWD_DEFINED__
+typedef interface ICoreWebView2Notification ICoreWebView2Notification;
+
+#endif /* __ICoreWebView2Notification_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NotificationCloseRequestedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2NotificationCloseRequestedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2NotificationCloseRequestedEventHandler ICoreWebView2NotificationCloseRequestedEventHandler;
+
+#endif /* __ICoreWebView2NotificationCloseRequestedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2NotificationReceivedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2NotificationReceivedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2NotificationReceivedEventArgs ICoreWebView2NotificationReceivedEventArgs;
+
+#endif /* __ICoreWebView2NotificationReceivedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ObjectCollectionView_FWD_DEFINED__
+#define __ICoreWebView2ObjectCollectionView_FWD_DEFINED__
+typedef interface ICoreWebView2ObjectCollectionView ICoreWebView2ObjectCollectionView;
+
+#endif /* __ICoreWebView2ObjectCollectionView_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ObjectCollection_FWD_DEFINED__
+#define __ICoreWebView2ObjectCollection_FWD_DEFINED__
+typedef interface ICoreWebView2ObjectCollection ICoreWebView2ObjectCollection;
+
+#endif /* __ICoreWebView2ObjectCollection_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2PermissionRequestedEventArgs ICoreWebView2PermissionRequestedEventArgs;
+
+#endif /* __ICoreWebView2PermissionRequestedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2PermissionRequestedEventArgs2 ICoreWebView2PermissionRequestedEventArgs2;
+
+#endif /* __ICoreWebView2PermissionRequestedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventArgs3_FWD_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventArgs3_FWD_DEFINED__
+typedef interface ICoreWebView2PermissionRequestedEventArgs3 ICoreWebView2PermissionRequestedEventArgs3;
+
+#endif /* __ICoreWebView2PermissionRequestedEventArgs3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionSetting_FWD_DEFINED__
+#define __ICoreWebView2PermissionSetting_FWD_DEFINED__
+typedef interface ICoreWebView2PermissionSetting ICoreWebView2PermissionSetting;
+
+#endif /* __ICoreWebView2PermissionSetting_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PointerInfo_FWD_DEFINED__
+#define __ICoreWebView2PointerInfo_FWD_DEFINED__
+typedef interface ICoreWebView2PointerInfo ICoreWebView2PointerInfo;
+
+#endif /* __ICoreWebView2PointerInfo_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintSettings_FWD_DEFINED__
+#define __ICoreWebView2PrintSettings_FWD_DEFINED__
+typedef interface ICoreWebView2PrintSettings ICoreWebView2PrintSettings;
+
+#endif /* __ICoreWebView2PrintSettings_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintSettings2_FWD_DEFINED__
+#define __ICoreWebView2PrintSettings2_FWD_DEFINED__
+typedef interface ICoreWebView2PrintSettings2 ICoreWebView2PrintSettings2;
+
+#endif /* __ICoreWebView2PrintSettings2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessExtendedInfo_FWD_DEFINED__
+#define __ICoreWebView2ProcessExtendedInfo_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessExtendedInfo ICoreWebView2ProcessExtendedInfo;
+
+#endif /* __ICoreWebView2ProcessExtendedInfo_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2ProcessFailedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessFailedEventArgs ICoreWebView2ProcessFailedEventArgs;
+
+#endif /* __ICoreWebView2ProcessFailedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2ProcessFailedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessFailedEventArgs2 ICoreWebView2ProcessFailedEventArgs2;
+
+#endif /* __ICoreWebView2ProcessFailedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventArgs3_FWD_DEFINED__
+#define __ICoreWebView2ProcessFailedEventArgs3_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessFailedEventArgs3 ICoreWebView2ProcessFailedEventArgs3;
+
+#endif /* __ICoreWebView2ProcessFailedEventArgs3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessInfo_FWD_DEFINED__
+#define __ICoreWebView2ProcessInfo_FWD_DEFINED__
+typedef interface ICoreWebView2ProcessInfo ICoreWebView2ProcessInfo;
+
+#endif /* __ICoreWebView2ProcessInfo_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile_FWD_DEFINED__
+#define __ICoreWebView2Profile_FWD_DEFINED__
+typedef interface ICoreWebView2Profile ICoreWebView2Profile;
+
+#endif /* __ICoreWebView2Profile_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile2_FWD_DEFINED__
+#define __ICoreWebView2Profile2_FWD_DEFINED__
+typedef interface ICoreWebView2Profile2 ICoreWebView2Profile2;
+
+#endif /* __ICoreWebView2Profile2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ClearBrowsingDataCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2ClearBrowsingDataCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ClearBrowsingDataCompletedHandler ICoreWebView2ClearBrowsingDataCompletedHandler;
+
+#endif /* __ICoreWebView2ClearBrowsingDataCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile3_FWD_DEFINED__
+#define __ICoreWebView2Profile3_FWD_DEFINED__
+typedef interface ICoreWebView2Profile3 ICoreWebView2Profile3;
+
+#endif /* __ICoreWebView2Profile3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile4_FWD_DEFINED__
+#define __ICoreWebView2Profile4_FWD_DEFINED__
+typedef interface ICoreWebView2Profile4 ICoreWebView2Profile4;
+
+#endif /* __ICoreWebView2Profile4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SetPermissionStateCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2SetPermissionStateCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2SetPermissionStateCompletedHandler ICoreWebView2SetPermissionStateCompletedHandler;
+
+#endif /* __ICoreWebView2SetPermissionStateCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler;
+
+#endif /* __ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile5_FWD_DEFINED__
+#define __ICoreWebView2Profile5_FWD_DEFINED__
+typedef interface ICoreWebView2Profile5 ICoreWebView2Profile5;
+
+#endif /* __ICoreWebView2Profile5_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile6_FWD_DEFINED__
+#define __ICoreWebView2Profile6_FWD_DEFINED__
+typedef interface ICoreWebView2Profile6 ICoreWebView2Profile6;
+
+#endif /* __ICoreWebView2Profile6_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile7_FWD_DEFINED__
+#define __ICoreWebView2Profile7_FWD_DEFINED__
+typedef interface ICoreWebView2Profile7 ICoreWebView2Profile7;
+
+#endif /* __ICoreWebView2Profile7_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ProfileAddBrowserExtensionCompletedHandler ICoreWebView2ProfileAddBrowserExtensionCompletedHandler;
+
+#endif /* __ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler;
+
+#endif /* __ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtensionList_FWD_DEFINED__
+#define __ICoreWebView2BrowserExtensionList_FWD_DEFINED__
+typedef interface ICoreWebView2BrowserExtensionList ICoreWebView2BrowserExtensionList;
+
+#endif /* __ICoreWebView2BrowserExtensionList_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile8_FWD_DEFINED__
+#define __ICoreWebView2Profile8_FWD_DEFINED__
+typedef interface ICoreWebView2Profile8 ICoreWebView2Profile8;
+
+#endif /* __ICoreWebView2Profile8_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ProfileDeletedEventHandler_FWD_DEFINED__
+#define __ICoreWebView2ProfileDeletedEventHandler_FWD_DEFINED__
+typedef interface ICoreWebView2ProfileDeletedEventHandler ICoreWebView2ProfileDeletedEventHandler;
+
+#endif /* __ICoreWebView2ProfileDeletedEventHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveAsUIShowingEventArgs_FWD_DEFINED__
+#define __ICoreWebView2SaveAsUIShowingEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2SaveAsUIShowingEventArgs ICoreWebView2SaveAsUIShowingEventArgs;
+
+#endif /* __ICoreWebView2SaveAsUIShowingEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveFileSecurityCheckStartingEventArgs_FWD_DEFINED__
+#define __ICoreWebView2SaveFileSecurityCheckStartingEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2SaveFileSecurityCheckStartingEventArgs ICoreWebView2SaveFileSecurityCheckStartingEventArgs;
+
+#endif /* __ICoreWebView2SaveFileSecurityCheckStartingEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ScreenCaptureStartingEventArgs_FWD_DEFINED__
+#define __ICoreWebView2ScreenCaptureStartingEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2ScreenCaptureStartingEventArgs ICoreWebView2ScreenCaptureStartingEventArgs;
+
+#endif /* __ICoreWebView2ScreenCaptureStartingEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ScriptDialogOpeningEventArgs_FWD_DEFINED__
+#define __ICoreWebView2ScriptDialogOpeningEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2ScriptDialogOpeningEventArgs ICoreWebView2ScriptDialogOpeningEventArgs;
+
+#endif /* __ICoreWebView2ScriptDialogOpeningEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ScriptException_FWD_DEFINED__
+#define __ICoreWebView2ScriptException_FWD_DEFINED__
+typedef interface ICoreWebView2ScriptException ICoreWebView2ScriptException;
+
+#endif /* __ICoreWebView2ScriptException_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2ServerCertificateErrorDetectedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2ServerCertificateErrorDetectedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2ServerCertificateErrorDetectedEventArgs ICoreWebView2ServerCertificateErrorDetectedEventArgs;
+
+#endif /* __ICoreWebView2ServerCertificateErrorDetectedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings_FWD_DEFINED__
+#define __ICoreWebView2Settings_FWD_DEFINED__
+typedef interface ICoreWebView2Settings ICoreWebView2Settings;
+
+#endif /* __ICoreWebView2Settings_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings2_FWD_DEFINED__
+#define __ICoreWebView2Settings2_FWD_DEFINED__
+typedef interface ICoreWebView2Settings2 ICoreWebView2Settings2;
+
+#endif /* __ICoreWebView2Settings2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings3_FWD_DEFINED__
+#define __ICoreWebView2Settings3_FWD_DEFINED__
+typedef interface ICoreWebView2Settings3 ICoreWebView2Settings3;
+
+#endif /* __ICoreWebView2Settings3_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings4_FWD_DEFINED__
+#define __ICoreWebView2Settings4_FWD_DEFINED__
+typedef interface ICoreWebView2Settings4 ICoreWebView2Settings4;
+
+#endif /* __ICoreWebView2Settings4_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings5_FWD_DEFINED__
+#define __ICoreWebView2Settings5_FWD_DEFINED__
+typedef interface ICoreWebView2Settings5 ICoreWebView2Settings5;
+
+#endif /* __ICoreWebView2Settings5_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings6_FWD_DEFINED__
+#define __ICoreWebView2Settings6_FWD_DEFINED__
+typedef interface ICoreWebView2Settings6 ICoreWebView2Settings6;
+
+#endif /* __ICoreWebView2Settings6_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings7_FWD_DEFINED__
+#define __ICoreWebView2Settings7_FWD_DEFINED__
+typedef interface ICoreWebView2Settings7 ICoreWebView2Settings7;
+
+#endif /* __ICoreWebView2Settings7_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings8_FWD_DEFINED__
+#define __ICoreWebView2Settings8_FWD_DEFINED__
+typedef interface ICoreWebView2Settings8 ICoreWebView2Settings8;
+
+#endif /* __ICoreWebView2Settings8_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings9_FWD_DEFINED__
+#define __ICoreWebView2Settings9_FWD_DEFINED__
+typedef interface ICoreWebView2Settings9 ICoreWebView2Settings9;
+
+#endif /* __ICoreWebView2Settings9_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SharedBuffer_FWD_DEFINED__
+#define __ICoreWebView2SharedBuffer_FWD_DEFINED__
+typedef interface ICoreWebView2SharedBuffer ICoreWebView2SharedBuffer;
+
+#endif /* __ICoreWebView2SharedBuffer_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2SourceChangedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2SourceChangedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2SourceChangedEventArgs ICoreWebView2SourceChangedEventArgs;
+
+#endif /* __ICoreWebView2SourceChangedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebMessageReceivedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2WebMessageReceivedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2WebMessageReceivedEventArgs ICoreWebView2WebMessageReceivedEventArgs;
+
+#endif /* __ICoreWebView2WebMessageReceivedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebMessageReceivedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2WebMessageReceivedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2WebMessageReceivedEventArgs2 ICoreWebView2WebMessageReceivedEventArgs2;
+
+#endif /* __ICoreWebView2WebMessageReceivedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequest_FWD_DEFINED__
+#define __ICoreWebView2WebResourceRequest_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceRequest ICoreWebView2WebResourceRequest;
+
+#endif /* __ICoreWebView2WebResourceRequest_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequestedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2WebResourceRequestedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceRequestedEventArgs ICoreWebView2WebResourceRequestedEventArgs;
+
+#endif /* __ICoreWebView2WebResourceRequestedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequestedEventArgs2_FWD_DEFINED__
+#define __ICoreWebView2WebResourceRequestedEventArgs2_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceRequestedEventArgs2 ICoreWebView2WebResourceRequestedEventArgs2;
+
+#endif /* __ICoreWebView2WebResourceRequestedEventArgs2_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponse_FWD_DEFINED__
+#define __ICoreWebView2WebResourceResponse_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceResponse ICoreWebView2WebResourceResponse;
+
+#endif /* __ICoreWebView2WebResourceResponse_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseReceivedEventArgs_FWD_DEFINED__
+#define __ICoreWebView2WebResourceResponseReceivedEventArgs_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceResponseReceivedEventArgs ICoreWebView2WebResourceResponseReceivedEventArgs;
+
+#endif /* __ICoreWebView2WebResourceResponseReceivedEventArgs_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseView_FWD_DEFINED__
+#define __ICoreWebView2WebResourceResponseView_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceResponseView ICoreWebView2WebResourceResponseView;
+
+#endif /* __ICoreWebView2WebResourceResponseView_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_FWD_DEFINED__
+#define __ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_FWD_DEFINED__
+typedef interface ICoreWebView2WebResourceResponseViewGetContentCompletedHandler ICoreWebView2WebResourceResponseViewGetContentCompletedHandler;
+
+#endif /* __ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2WindowFeatures_FWD_DEFINED__
+#define __ICoreWebView2WindowFeatures_FWD_DEFINED__
+typedef interface ICoreWebView2WindowFeatures ICoreWebView2WindowFeatures;
+
+#endif /* __ICoreWebView2WindowFeatures_FWD_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionSettingCollectionView_FWD_DEFINED__
+#define __ICoreWebView2PermissionSettingCollectionView_FWD_DEFINED__
+typedef interface ICoreWebView2PermissionSettingCollectionView ICoreWebView2PermissionSettingCollectionView;
+
+#endif /* __ICoreWebView2PermissionSettingCollectionView_FWD_DEFINED__ */
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oaidl.h"
+#include "EventToken.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifndef __WebView2_LIBRARY_DEFINED__
+#define __WebView2_LIBRARY_DEFINED__
+
+ /* library WebView2 */
+ /* [version][uuid] */
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_BOUNDS_MODE
+ {
+ COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS = 0,
+ COREWEBVIEW2_BOUNDS_MODE_USE_RASTERIZATION_SCALE = (COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS + 1)
+ } COREWEBVIEW2_BOUNDS_MODE;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND
+ {
+ COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_NORMAL = 0,
+ COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_FAILED = (COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND_NORMAL + 1)
+ } COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_BROWSING_DATA_KINDS
+ {
+ COREWEBVIEW2_BROWSING_DATA_KINDS_FILE_SYSTEMS = 0x1,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_INDEXED_DB = 0x2,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_LOCAL_STORAGE = 0x4,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_WEB_SQL = 0x8,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_CACHE_STORAGE = 0x10,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_DOM_STORAGE = 0x20,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_COOKIES = 0x40,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_SITE = 0x80,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_DISK_CACHE = 0x100,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_DOWNLOAD_HISTORY = 0x200,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_GENERAL_AUTOFILL = 0x400,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_PASSWORD_AUTOSAVE = 0x800,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_BROWSING_HISTORY = 0x1000,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_SETTINGS = 0x2000,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_ALL_PROFILE = 0x4000,
+ COREWEBVIEW2_BROWSING_DATA_KINDS_SERVICE_WORKERS = 0x8000
+ } COREWEBVIEW2_BROWSING_DATA_KINDS;
+
+ DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_BROWSING_DATA_KINDS)
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT
+ {
+ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_PNG = 0,
+ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_JPEG = (COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT_PNG + 1)
+ } COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_CHANNEL_SEARCH_KIND
+ {
+ COREWEBVIEW2_CHANNEL_SEARCH_KIND_MOST_STABLE = 0,
+ COREWEBVIEW2_CHANNEL_SEARCH_KIND_LEAST_STABLE = (COREWEBVIEW2_CHANNEL_SEARCH_KIND_MOST_STABLE + 1)
+ } COREWEBVIEW2_CHANNEL_SEARCH_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_CLIENT_CERTIFICATE_KIND
+ {
+ COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_SMART_CARD = 0,
+ COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_PIN = (COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_SMART_CARD + 1),
+ COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_OTHER = (COREWEBVIEW2_CLIENT_CERTIFICATE_KIND_PIN + 1)
+ } COREWEBVIEW2_CLIENT_CERTIFICATE_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND
+ {
+ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_COMMAND = 0,
+ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_CHECK_BOX = (COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_COMMAND + 1),
+ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_RADIO = (COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_CHECK_BOX + 1),
+ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SEPARATOR = (COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_RADIO + 1),
+ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SUBMENU = (COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_SEPARATOR + 1)
+ } COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND
+ {
+ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_PAGE = 0,
+ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_IMAGE = (COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_PAGE + 1),
+ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_SELECTED_TEXT = (COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_IMAGE + 1),
+ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_AUDIO = (COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_SELECTED_TEXT + 1),
+ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_VIDEO = (COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_AUDIO + 1)
+ } COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_COOKIE_SAME_SITE_KIND
+ {
+ COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE = 0,
+ COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX = (COREWEBVIEW2_COOKIE_SAME_SITE_KIND_NONE + 1),
+ COREWEBVIEW2_COOKIE_SAME_SITE_KIND_STRICT = (COREWEBVIEW2_COOKIE_SAME_SITE_KIND_LAX + 1)
+ } COREWEBVIEW2_COOKIE_SAME_SITE_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT
+ {
+ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_LEFT = 0,
+ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_RIGHT = (COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_LEFT + 1),
+ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_LEFT = (COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_TOP_RIGHT + 1),
+ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_RIGHT = (COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT_BOTTOM_LEFT + 1)
+ } COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON
+ {
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NONE = 0,
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NONE + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_FAILED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NO_SPACE + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_NAME_TOO_LONG + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_MALICIOUS = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_LARGE + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_MALICIOUS + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED_BY_POLICY = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED_BY_POLICY + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_SECURITY_CHECK_FAILED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_TOO_SHORT + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_FILE_HASH_MISMATCH + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_TIMEOUT + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_DISCONNECTED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_SERVER_DOWN + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_NETWORK_INVALID_REQUEST + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_NO_RANGE + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CERTIFICATE_PROBLEM = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNAUTHORIZED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CERTIFICATE_PROBLEM + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNEXPECTED_RESPONSE = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_FORBIDDEN + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_UNEXPECTED_RESPONSE + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CONTENT_LENGTH_MISMATCH + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_SERVER_CROSS_ORIGIN_REDIRECT + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_CANCELED + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_PAUSED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_SHUTDOWN + 1),
+ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_DOWNLOAD_PROCESS_CRASHED = (COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON_USER_PAUSED + 1)
+ } COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_DOWNLOAD_STATE
+ {
+ COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS = 0,
+ COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED = (COREWEBVIEW2_DOWNLOAD_STATE_IN_PROGRESS + 1),
+ COREWEBVIEW2_DOWNLOAD_STATE_COMPLETED = (COREWEBVIEW2_DOWNLOAD_STATE_INTERRUPTED + 1)
+ } COREWEBVIEW2_DOWNLOAD_STATE;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_FAVICON_IMAGE_FORMAT
+ {
+ COREWEBVIEW2_FAVICON_IMAGE_FORMAT_PNG = 0,
+ COREWEBVIEW2_FAVICON_IMAGE_FORMAT_JPEG = (COREWEBVIEW2_FAVICON_IMAGE_FORMAT_PNG + 1)
+ } COREWEBVIEW2_FAVICON_IMAGE_FORMAT;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND
+ {
+ COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND_FILE = 0,
+ COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND_DIRECTORY = (COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND_FILE + 1)
+ } COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION
+ {
+ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION_READ_ONLY = 0,
+ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION_READ_WRITE = (COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION_READ_ONLY + 1)
+ } COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_FRAME_KIND
+ {
+ COREWEBVIEW2_FRAME_KIND_UNKNOWN = 0,
+ COREWEBVIEW2_FRAME_KIND_MAIN_FRAME = (COREWEBVIEW2_FRAME_KIND_UNKNOWN + 1),
+ COREWEBVIEW2_FRAME_KIND_IFRAME = (COREWEBVIEW2_FRAME_KIND_MAIN_FRAME + 1),
+ COREWEBVIEW2_FRAME_KIND_EMBED = (COREWEBVIEW2_FRAME_KIND_IFRAME + 1),
+ COREWEBVIEW2_FRAME_KIND_OBJECT = (COREWEBVIEW2_FRAME_KIND_EMBED + 1)
+ } COREWEBVIEW2_FRAME_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND
+ {
+ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY = 0,
+ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW = (COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY + 1),
+ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_DENY_CORS = (COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND_ALLOW + 1)
+ } COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_KEY_EVENT_KIND
+ {
+ COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN = 0,
+ COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP = (COREWEBVIEW2_KEY_EVENT_KIND_KEY_DOWN + 1),
+ COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN = (COREWEBVIEW2_KEY_EVENT_KIND_KEY_UP + 1),
+ COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_UP = (COREWEBVIEW2_KEY_EVENT_KIND_SYSTEM_KEY_DOWN + 1)
+ } COREWEBVIEW2_KEY_EVENT_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL
+ {
+ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL = 0,
+ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW = (COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL + 1)
+ } COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_MOUSE_EVENT_KIND
+ {
+ COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL = 526,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK = 515,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN = 513,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP = 514,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE = 675,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOUBLE_CLICK = 521,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOWN = 519,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_UP = 520,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE = 512,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOUBLE_CLICK = 518,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOWN = 516,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_UP = 517,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL = 522,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK = 525,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN = 523,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP = 524,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_DOWN = 164,
+ COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_UP = 165
+ } COREWEBVIEW2_MOUSE_EVENT_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS
+ {
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE = 0,
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON = 0x1,
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_RIGHT_BUTTON = 0x2,
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_SHIFT = 0x4,
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_CONTROL = 0x8,
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_MIDDLE_BUTTON = 0x10,
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON1 = 0x20,
+ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON2 = 0x40
+ } COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS;
+
+ DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS)
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_MOVE_FOCUS_REASON
+ {
+ COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC = 0,
+ COREWEBVIEW2_MOVE_FOCUS_REASON_NEXT = (COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC + 1),
+ COREWEBVIEW2_MOVE_FOCUS_REASON_PREVIOUS = (COREWEBVIEW2_MOVE_FOCUS_REASON_NEXT + 1)
+ } COREWEBVIEW2_MOVE_FOCUS_REASON;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_NAVIGATION_KIND
+ {
+ COREWEBVIEW2_NAVIGATION_KIND_RELOAD = 0,
+ COREWEBVIEW2_NAVIGATION_KIND_BACK_OR_FORWARD = (COREWEBVIEW2_NAVIGATION_KIND_RELOAD + 1),
+ COREWEBVIEW2_NAVIGATION_KIND_NEW_DOCUMENT = (COREWEBVIEW2_NAVIGATION_KIND_BACK_OR_FORWARD + 1)
+ } COREWEBVIEW2_NAVIGATION_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_NON_CLIENT_REGION_KIND
+ {
+ COREWEBVIEW2_NON_CLIENT_REGION_KIND_NOWHERE = 0,
+ COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLIENT = 1,
+ COREWEBVIEW2_NON_CLIENT_REGION_KIND_CAPTION = 2,
+ COREWEBVIEW2_NON_CLIENT_REGION_KIND_MINIMIZE = 8,
+ COREWEBVIEW2_NON_CLIENT_REGION_KIND_MAXIMIZE = 9,
+ COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLOSE = 20
+ } COREWEBVIEW2_NON_CLIENT_REGION_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PDF_TOOLBAR_ITEMS
+ {
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_NONE = 0,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE = 0x1,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PRINT = 0x2,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SAVE_AS = 0x4,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_IN = 0x8,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ZOOM_OUT = 0x10,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_ROTATE = 0x20,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FIT_PAGE = 0x40,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_LAYOUT = 0x80,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_BOOKMARKS = 0x100,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_PAGE_SELECTOR = 0x200,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_SEARCH = 0x400,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FULL_SCREEN = 0x800,
+ COREWEBVIEW2_PDF_TOOLBAR_ITEMS_MORE_SETTINGS = 0x1000
+ } COREWEBVIEW2_PDF_TOOLBAR_ITEMS;
+
+ DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_PDF_TOOLBAR_ITEMS)
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PERMISSION_KIND
+ {
+ COREWEBVIEW2_PERMISSION_KIND_UNKNOWN_PERMISSION = 0,
+ COREWEBVIEW2_PERMISSION_KIND_MICROPHONE = (COREWEBVIEW2_PERMISSION_KIND_UNKNOWN_PERMISSION + 1),
+ COREWEBVIEW2_PERMISSION_KIND_CAMERA = (COREWEBVIEW2_PERMISSION_KIND_MICROPHONE + 1),
+ COREWEBVIEW2_PERMISSION_KIND_GEOLOCATION = (COREWEBVIEW2_PERMISSION_KIND_CAMERA + 1),
+ COREWEBVIEW2_PERMISSION_KIND_NOTIFICATIONS = (COREWEBVIEW2_PERMISSION_KIND_GEOLOCATION + 1),
+ COREWEBVIEW2_PERMISSION_KIND_OTHER_SENSORS = (COREWEBVIEW2_PERMISSION_KIND_NOTIFICATIONS + 1),
+ COREWEBVIEW2_PERMISSION_KIND_CLIPBOARD_READ = (COREWEBVIEW2_PERMISSION_KIND_OTHER_SENSORS + 1),
+ COREWEBVIEW2_PERMISSION_KIND_MULTIPLE_AUTOMATIC_DOWNLOADS = (COREWEBVIEW2_PERMISSION_KIND_CLIPBOARD_READ + 1),
+ COREWEBVIEW2_PERMISSION_KIND_FILE_READ_WRITE = (COREWEBVIEW2_PERMISSION_KIND_MULTIPLE_AUTOMATIC_DOWNLOADS + 1),
+ COREWEBVIEW2_PERMISSION_KIND_AUTOPLAY = (COREWEBVIEW2_PERMISSION_KIND_FILE_READ_WRITE + 1),
+ COREWEBVIEW2_PERMISSION_KIND_LOCAL_FONTS = (COREWEBVIEW2_PERMISSION_KIND_AUTOPLAY + 1),
+ COREWEBVIEW2_PERMISSION_KIND_MIDI_SYSTEM_EXCLUSIVE_MESSAGES = (COREWEBVIEW2_PERMISSION_KIND_LOCAL_FONTS + 1),
+ COREWEBVIEW2_PERMISSION_KIND_WINDOW_MANAGEMENT = (COREWEBVIEW2_PERMISSION_KIND_MIDI_SYSTEM_EXCLUSIVE_MESSAGES + 1)
+ } COREWEBVIEW2_PERMISSION_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PERMISSION_STATE
+ {
+ COREWEBVIEW2_PERMISSION_STATE_DEFAULT = 0,
+ COREWEBVIEW2_PERMISSION_STATE_ALLOW = (COREWEBVIEW2_PERMISSION_STATE_DEFAULT + 1),
+ COREWEBVIEW2_PERMISSION_STATE_DENY = (COREWEBVIEW2_PERMISSION_STATE_ALLOW + 1)
+ } COREWEBVIEW2_PERMISSION_STATE;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_POINTER_EVENT_KIND
+ {
+ COREWEBVIEW2_POINTER_EVENT_KIND_ACTIVATE = 587,
+ COREWEBVIEW2_POINTER_EVENT_KIND_DOWN = 582,
+ COREWEBVIEW2_POINTER_EVENT_KIND_ENTER = 585,
+ COREWEBVIEW2_POINTER_EVENT_KIND_LEAVE = 586,
+ COREWEBVIEW2_POINTER_EVENT_KIND_UP = 583,
+ COREWEBVIEW2_POINTER_EVENT_KIND_UPDATE = 581
+ } COREWEBVIEW2_POINTER_EVENT_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PREFERRED_COLOR_SCHEME
+ {
+ COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO = 0,
+ COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT = (COREWEBVIEW2_PREFERRED_COLOR_SCHEME_AUTO + 1),
+ COREWEBVIEW2_PREFERRED_COLOR_SCHEME_DARK = (COREWEBVIEW2_PREFERRED_COLOR_SCHEME_LIGHT + 1)
+ } COREWEBVIEW2_PREFERRED_COLOR_SCHEME;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PRINT_COLLATION
+ {
+ COREWEBVIEW2_PRINT_COLLATION_DEFAULT = 0,
+ COREWEBVIEW2_PRINT_COLLATION_COLLATED = (COREWEBVIEW2_PRINT_COLLATION_DEFAULT + 1),
+ COREWEBVIEW2_PRINT_COLLATION_UNCOLLATED = (COREWEBVIEW2_PRINT_COLLATION_COLLATED + 1)
+ } COREWEBVIEW2_PRINT_COLLATION;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PRINT_COLOR_MODE
+ {
+ COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT = 0,
+ COREWEBVIEW2_PRINT_COLOR_MODE_COLOR = (COREWEBVIEW2_PRINT_COLOR_MODE_DEFAULT + 1),
+ COREWEBVIEW2_PRINT_COLOR_MODE_GRAYSCALE = (COREWEBVIEW2_PRINT_COLOR_MODE_COLOR + 1)
+ } COREWEBVIEW2_PRINT_COLOR_MODE;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PRINT_DIALOG_KIND
+ {
+ COREWEBVIEW2_PRINT_DIALOG_KIND_BROWSER = 0,
+ COREWEBVIEW2_PRINT_DIALOG_KIND_SYSTEM = (COREWEBVIEW2_PRINT_DIALOG_KIND_BROWSER + 1)
+ } COREWEBVIEW2_PRINT_DIALOG_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PRINT_DUPLEX
+ {
+ COREWEBVIEW2_PRINT_DUPLEX_DEFAULT = 0,
+ COREWEBVIEW2_PRINT_DUPLEX_ONE_SIDED = (COREWEBVIEW2_PRINT_DUPLEX_DEFAULT + 1),
+ COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_LONG_EDGE = (COREWEBVIEW2_PRINT_DUPLEX_ONE_SIDED + 1),
+ COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_SHORT_EDGE = (COREWEBVIEW2_PRINT_DUPLEX_TWO_SIDED_LONG_EDGE + 1)
+ } COREWEBVIEW2_PRINT_DUPLEX;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PRINT_MEDIA_SIZE
+ {
+ COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT = 0,
+ COREWEBVIEW2_PRINT_MEDIA_SIZE_CUSTOM = (COREWEBVIEW2_PRINT_MEDIA_SIZE_DEFAULT + 1)
+ } COREWEBVIEW2_PRINT_MEDIA_SIZE;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PRINT_ORIENTATION
+ {
+ COREWEBVIEW2_PRINT_ORIENTATION_PORTRAIT = 0,
+ COREWEBVIEW2_PRINT_ORIENTATION_LANDSCAPE = (COREWEBVIEW2_PRINT_ORIENTATION_PORTRAIT + 1)
+ } COREWEBVIEW2_PRINT_ORIENTATION;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PRINT_STATUS
+ {
+ COREWEBVIEW2_PRINT_STATUS_SUCCEEDED = 0,
+ COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE = (COREWEBVIEW2_PRINT_STATUS_SUCCEEDED + 1),
+ COREWEBVIEW2_PRINT_STATUS_OTHER_ERROR = (COREWEBVIEW2_PRINT_STATUS_PRINTER_UNAVAILABLE + 1)
+ } COREWEBVIEW2_PRINT_STATUS;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PROCESS_FAILED_KIND
+ {
+ COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED = 0,
+ COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_BROWSER_PROCESS_EXITED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE = (COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_EXITED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_RENDER_PROCESS_UNRESPONSIVE + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_UTILITY_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_FRAME_RENDER_PROCESS_EXITED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_SANDBOX_HELPER_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_UTILITY_PROCESS_EXITED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_GPU_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_SANDBOX_HELPER_PROCESS_EXITED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_PLUGIN_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_GPU_PROCESS_EXITED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_BROKER_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_PLUGIN_PROCESS_EXITED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_KIND_UNKNOWN_PROCESS_EXITED = (COREWEBVIEW2_PROCESS_FAILED_KIND_PPAPI_BROKER_PROCESS_EXITED + 1)
+ } COREWEBVIEW2_PROCESS_FAILED_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PROCESS_FAILED_REASON
+ {
+ COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED = 0,
+ COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE = (COREWEBVIEW2_PROCESS_FAILED_REASON_UNEXPECTED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_REASON_TERMINATED = (COREWEBVIEW2_PROCESS_FAILED_REASON_UNRESPONSIVE + 1),
+ COREWEBVIEW2_PROCESS_FAILED_REASON_CRASHED = (COREWEBVIEW2_PROCESS_FAILED_REASON_TERMINATED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_REASON_LAUNCH_FAILED = (COREWEBVIEW2_PROCESS_FAILED_REASON_CRASHED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_REASON_OUT_OF_MEMORY = (COREWEBVIEW2_PROCESS_FAILED_REASON_LAUNCH_FAILED + 1),
+ COREWEBVIEW2_PROCESS_FAILED_REASON_PROFILE_DELETED = (COREWEBVIEW2_PROCESS_FAILED_REASON_OUT_OF_MEMORY + 1)
+ } COREWEBVIEW2_PROCESS_FAILED_REASON;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_PROCESS_KIND
+ {
+ COREWEBVIEW2_PROCESS_KIND_BROWSER = 0,
+ COREWEBVIEW2_PROCESS_KIND_RENDERER = (COREWEBVIEW2_PROCESS_KIND_BROWSER + 1),
+ COREWEBVIEW2_PROCESS_KIND_UTILITY = (COREWEBVIEW2_PROCESS_KIND_RENDERER + 1),
+ COREWEBVIEW2_PROCESS_KIND_SANDBOX_HELPER = (COREWEBVIEW2_PROCESS_KIND_UTILITY + 1),
+ COREWEBVIEW2_PROCESS_KIND_GPU = (COREWEBVIEW2_PROCESS_KIND_SANDBOX_HELPER + 1),
+ COREWEBVIEW2_PROCESS_KIND_PPAPI_PLUGIN = (COREWEBVIEW2_PROCESS_KIND_GPU + 1),
+ COREWEBVIEW2_PROCESS_KIND_PPAPI_BROKER = (COREWEBVIEW2_PROCESS_KIND_PPAPI_PLUGIN + 1)
+ } COREWEBVIEW2_PROCESS_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_RELEASE_CHANNELS
+ {
+ COREWEBVIEW2_RELEASE_CHANNELS_NONE = 0,
+ COREWEBVIEW2_RELEASE_CHANNELS_STABLE = 0x1,
+ COREWEBVIEW2_RELEASE_CHANNELS_BETA = 0x2,
+ COREWEBVIEW2_RELEASE_CHANNELS_DEV = 0x4,
+ COREWEBVIEW2_RELEASE_CHANNELS_CANARY = 0x8
+ } COREWEBVIEW2_RELEASE_CHANNELS;
+
+ DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_RELEASE_CHANNELS)
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_SAVE_AS_KIND
+ {
+ COREWEBVIEW2_SAVE_AS_KIND_DEFAULT = 0,
+ COREWEBVIEW2_SAVE_AS_KIND_HTML_ONLY = (COREWEBVIEW2_SAVE_AS_KIND_DEFAULT + 1),
+ COREWEBVIEW2_SAVE_AS_KIND_SINGLE_FILE = (COREWEBVIEW2_SAVE_AS_KIND_HTML_ONLY + 1),
+ COREWEBVIEW2_SAVE_AS_KIND_COMPLETE = (COREWEBVIEW2_SAVE_AS_KIND_SINGLE_FILE + 1)
+ } COREWEBVIEW2_SAVE_AS_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_SAVE_AS_UI_RESULT
+ {
+ COREWEBVIEW2_SAVE_AS_UI_RESULT_SUCCESS = 0,
+ COREWEBVIEW2_SAVE_AS_UI_RESULT_INVALID_PATH = (COREWEBVIEW2_SAVE_AS_UI_RESULT_SUCCESS + 1),
+ COREWEBVIEW2_SAVE_AS_UI_RESULT_FILE_ALREADY_EXISTS = (COREWEBVIEW2_SAVE_AS_UI_RESULT_INVALID_PATH + 1),
+ COREWEBVIEW2_SAVE_AS_UI_RESULT_KIND_NOT_SUPPORTED = (COREWEBVIEW2_SAVE_AS_UI_RESULT_FILE_ALREADY_EXISTS + 1),
+ COREWEBVIEW2_SAVE_AS_UI_RESULT_CANCELLED = (COREWEBVIEW2_SAVE_AS_UI_RESULT_KIND_NOT_SUPPORTED + 1)
+ } COREWEBVIEW2_SAVE_AS_UI_RESULT;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_SCRIPT_DIALOG_KIND
+ {
+ COREWEBVIEW2_SCRIPT_DIALOG_KIND_ALERT = 0,
+ COREWEBVIEW2_SCRIPT_DIALOG_KIND_CONFIRM = (COREWEBVIEW2_SCRIPT_DIALOG_KIND_ALERT + 1),
+ COREWEBVIEW2_SCRIPT_DIALOG_KIND_PROMPT = (COREWEBVIEW2_SCRIPT_DIALOG_KIND_CONFIRM + 1),
+ COREWEBVIEW2_SCRIPT_DIALOG_KIND_BEFOREUNLOAD = (COREWEBVIEW2_SCRIPT_DIALOG_KIND_PROMPT + 1)
+ } COREWEBVIEW2_SCRIPT_DIALOG_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_SCROLLBAR_STYLE
+ {
+ COREWEBVIEW2_SCROLLBAR_STYLE_DEFAULT = 0,
+ COREWEBVIEW2_SCROLLBAR_STYLE_FLUENT_OVERLAY = (COREWEBVIEW2_SCROLLBAR_STYLE_DEFAULT + 1)
+ } COREWEBVIEW2_SCROLLBAR_STYLE;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION
+ {
+ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW = 0,
+ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_CANCEL = (COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_ALWAYS_ALLOW + 1),
+ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_DEFAULT = (COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION_CANCEL + 1)
+ } COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_SHARED_BUFFER_ACCESS
+ {
+ COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY = 0,
+ COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_WRITE = (COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY + 1)
+ } COREWEBVIEW2_SHARED_BUFFER_ACCESS;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_TEXT_DIRECTION_KIND
+ {
+ COREWEBVIEW2_TEXT_DIRECTION_KIND_DEFAULT = 0,
+ COREWEBVIEW2_TEXT_DIRECTION_KIND_LEFT_TO_RIGHT = (COREWEBVIEW2_TEXT_DIRECTION_KIND_DEFAULT + 1),
+ COREWEBVIEW2_TEXT_DIRECTION_KIND_RIGHT_TO_LEFT = (COREWEBVIEW2_TEXT_DIRECTION_KIND_LEFT_TO_RIGHT + 1)
+ } COREWEBVIEW2_TEXT_DIRECTION_KIND;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_TRACKING_PREVENTION_LEVEL
+ {
+ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE = 0,
+ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BASIC = (COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_NONE + 1),
+ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED = (COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BASIC + 1),
+ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_STRICT = (COREWEBVIEW2_TRACKING_PREVENTION_LEVEL_BALANCED + 1)
+ } COREWEBVIEW2_TRACKING_PREVENTION_LEVEL;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_WEB_ERROR_STATUS
+ {
+ COREWEBVIEW2_WEB_ERROR_STATUS_UNKNOWN = 0,
+ COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT = (COREWEBVIEW2_WEB_ERROR_STATUS_UNKNOWN + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED = (COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS = (COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED = (COREWEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID = (COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_SERVER_UNREACHABLE = (COREWEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_TIMEOUT = (COREWEBVIEW2_WEB_ERROR_STATUS_SERVER_UNREACHABLE + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_ERROR_HTTP_INVALID_SERVER_RESPONSE = (COREWEBVIEW2_WEB_ERROR_STATUS_TIMEOUT + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED = (COREWEBVIEW2_WEB_ERROR_STATUS_ERROR_HTTP_INVALID_SERVER_RESPONSE + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_RESET = (COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED = (COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_RESET + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT = (COREWEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED = (COREWEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED = (COREWEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED = (COREWEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR = (COREWEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED = (COREWEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR + 1),
+ COREWEBVIEW2_WEB_ERROR_STATUS_VALID_PROXY_AUTHENTICATION_REQUIRED = (COREWEBVIEW2_WEB_ERROR_STATUS_VALID_AUTHENTICATION_CREDENTIALS_REQUIRED + 1)
+ } COREWEBVIEW2_WEB_ERROR_STATUS;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_WEB_RESOURCE_CONTEXT
+ {
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL = 0,
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_STYLESHEET = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_DOCUMENT + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_STYLESHEET + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MEDIA = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_IMAGE + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FONT = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MEDIA + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SCRIPT = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FONT + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SCRIPT + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FETCH = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_TEXT_TRACK = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_FETCH + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_EVENT_SOURCE = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_TEXT_TRACK + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_WEBSOCKET = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_EVENT_SOURCE + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MANIFEST = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_WEBSOCKET + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SIGNED_EXCHANGE = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_MANIFEST + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_PING = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_SIGNED_EXCHANGE + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_CSP_VIOLATION_REPORT = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_PING + 1),
+ COREWEBVIEW2_WEB_RESOURCE_CONTEXT_OTHER = (COREWEBVIEW2_WEB_RESOURCE_CONTEXT_CSP_VIOLATION_REPORT + 1)
+ } COREWEBVIEW2_WEB_RESOURCE_CONTEXT;
+
+ typedef /* [v1_enum] */
+ enum COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS
+ {
+ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_NONE = 0,
+ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_DOCUMENT = 0x1,
+ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_SHARED_WORKER = 0x2,
+ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_SERVICE_WORKER = 0x4,
+ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS_ALL = 0xffffffff
+ } COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS;
+
+ DEFINE_ENUM_FLAG_OPERATORS(COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS)
+ typedef struct COREWEBVIEW2_COLOR
+ {
+ BYTE A;
+ BYTE R;
+ BYTE G;
+ BYTE B;
+ } COREWEBVIEW2_COLOR;
+
+ typedef struct COREWEBVIEW2_PHYSICAL_KEY_STATUS
+ {
+ UINT32 RepeatCount;
+ UINT32 ScanCode;
+ BOOL IsExtendedKey;
+ BOOL IsMenuKeyDown;
+ BOOL WasKeyDown;
+ BOOL IsKeyReleased;
+ } COREWEBVIEW2_PHYSICAL_KEY_STATUS;
+
+ STDAPI CreateCoreWebView2Environment(ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler *environmentCreatedHandler);
+ STDAPI CreateCoreWebView2EnvironmentWithOptions(PCWSTR browserExecutableFolder, PCWSTR userDataFolder, ICoreWebView2EnvironmentOptions *environmentOptions, ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler *environmentCreatedHandler);
+ STDAPI GetAvailableCoreWebView2BrowserVersionString(PCWSTR browserExecutableFolder, LPWSTR *versionInfo);
+ STDAPI CompareBrowserVersions(PCWSTR version1, PCWSTR version2, int *result);
+ STDAPI GetAvailableCoreWebView2BrowserVersionStringWithOptions(PCWSTR browserExecutableFolder, ICoreWebView2EnvironmentOptions *environmentOptions, LPWSTR *versionInfo);
+
+ EXTERN_C const IID LIBID_WebView2;
+
+#ifndef __ICoreWebView2_INTERFACE_DEFINED__
+#define __ICoreWebView2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2 = {0x76eceacb, 0x0462, 0x4d94, {0xac, 0x83, 0x42, 0x3a, 0x67, 0x93, 0x77, 0x5e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("76eceacb-0462-4d94-ac83-423a6793775e")
+ ICoreWebView2 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Settings(
+ /* [retval][out] */ ICoreWebView2Settings * *settings) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Source(
+ /* [retval][out] */ LPWSTR * uri) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Navigate(
+ /* [in] */ LPCWSTR uri) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE NavigateToString(
+ /* [in] */ LPCWSTR htmlContent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_NavigationStarting(
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NavigationStarting(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_ContentLoading(
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ContentLoading(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_SourceChanged(
+ /* [in] */ ICoreWebView2SourceChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_SourceChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_HistoryChanged(
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_HistoryChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_NavigationCompleted(
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NavigationCompleted(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_FrameNavigationStarting(
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_FrameNavigationStarting(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_FrameNavigationCompleted(
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_FrameNavigationCompleted(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_ScriptDialogOpening(
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ScriptDialogOpening(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_PermissionRequested(
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_PermissionRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_ProcessFailed(
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ProcessFailed(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddScriptToExecuteOnDocumentCreated(
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveScriptToExecuteOnDocumentCreated(
+ /* [in] */ LPCWSTR id) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ExecuteScript(
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CapturePreview(
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream * imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reload(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostWebMessageAsJson(
+ /* [in] */ LPCWSTR webMessageAsJson) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostWebMessageAsString(
+ /* [in] */ LPCWSTR webMessageAsString) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_WebMessageReceived(
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler * handler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_WebMessageReceived(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CallDevToolsProtocolMethod(
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler * handler) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BrowserProcessId(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CanGoBack(
+ /* [retval][out] */ BOOL * canGoBack) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CanGoForward(
+ /* [retval][out] */ BOOL * canGoForward) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GoBack(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GoForward(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDevToolsProtocolEventReceiver(
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver * *receiver) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stop(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_NewWindowRequested(
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NewWindowRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_DocumentTitleChanged(
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_DocumentTitleChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DocumentTitle(
+ /* [retval][out] */ LPWSTR * title) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddHostObjectToScript(
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT * object) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveHostObjectFromScript(
+ /* [in] */ LPCWSTR name) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenDevToolsWindow(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_ContainsFullScreenElementChanged(
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ContainsFullScreenElementChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ContainsFullScreenElement(
+ /* [retval][out] */ BOOL * containsFullScreenElement) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_WebResourceRequested(
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_WebResourceRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddWebResourceRequestedFilter(
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveWebResourceRequestedFilter(
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_WindowCloseRequested(
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_WindowCloseRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2Vtbl;
+
+ interface ICoreWebView2
+ {
+ CONST_VTBL struct ICoreWebView2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContainsFullScreenElementChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ContainsFullScreenElementChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContainsFullScreenElementChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContainsFullScreenElementChangedEventHandler = {0xe45d98b1, 0xafef, 0x45be, {0x8b, 0xaf, 0x6c, 0x77, 0x28, 0x86, 0x7f, 0x73}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e45d98b1-afef-45be-8baf-6c7728867f73")
+ ICoreWebView2ContainsFullScreenElementChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContainsFullScreenElementChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContainsFullScreenElementChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContainsFullScreenElementChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContainsFullScreenElementChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContainsFullScreenElementChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ContainsFullScreenElementChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2ContainsFullScreenElementChangedEventHandlerVtbl;
+
+ interface ICoreWebView2ContainsFullScreenElementChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ContainsFullScreenElementChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContainsFullScreenElementChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContainsFullScreenElementChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContainsFullScreenElementChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContainsFullScreenElementChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContainsFullScreenElementChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContentLoadingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ContentLoadingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContentLoadingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContentLoadingEventHandler = {0x364471e7, 0xf2be, 0x4910, {0xbd, 0xba, 0xd7, 0x20, 0x77, 0xd5, 0x1c, 0x4b}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("364471e7-f2be-4910-bdba-d72077d51c4b")
+ ICoreWebView2ContentLoadingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2ContentLoadingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContentLoadingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContentLoadingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContentLoadingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContentLoadingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContentLoadingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ContentLoadingEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2ContentLoadingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2ContentLoadingEventHandlerVtbl;
+
+ interface ICoreWebView2ContentLoadingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ContentLoadingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContentLoadingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContentLoadingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContentLoadingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContentLoadingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContentLoadingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DocumentTitleChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2DocumentTitleChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DocumentTitleChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DocumentTitleChangedEventHandler = {0xf5f2b923, 0x953e, 0x4042, {0x9f, 0x95, 0xf3, 0xa1, 0x18, 0xe1, 0xaf, 0xd4}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f5f2b923-953e-4042-9f95-f3a118e1afd4")
+ ICoreWebView2DocumentTitleChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DocumentTitleChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DocumentTitleChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DocumentTitleChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DocumentTitleChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DocumentTitleChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2DocumentTitleChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2DocumentTitleChangedEventHandlerVtbl;
+
+ interface ICoreWebView2DocumentTitleChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2DocumentTitleChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DocumentTitleChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DocumentTitleChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DocumentTitleChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DocumentTitleChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DocumentTitleChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2HistoryChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2HistoryChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2HistoryChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2HistoryChangedEventHandler = {0xc79a420c, 0xefd9, 0x4058, {0x92, 0x95, 0x3e, 0x8b, 0x4b, 0xca, 0xb6, 0x45}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c79a420c-efd9-4058-9295-3e8b4bcab645")
+ ICoreWebView2HistoryChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2HistoryChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2HistoryChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2HistoryChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2HistoryChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HistoryChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2HistoryChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2HistoryChangedEventHandlerVtbl;
+
+ interface ICoreWebView2HistoryChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2HistoryChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2HistoryChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2HistoryChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2HistoryChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2HistoryChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2HistoryChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationCompletedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2NavigationCompletedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NavigationCompletedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NavigationCompletedEventHandler = {0xd33a35bf, 0x1c49, 0x4f98, {0x93, 0xab, 0x00, 0x6e, 0x05, 0x33, 0xfe, 0x1c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d33a35bf-1c49-4f98-93ab-006e0533fe1c")
+ ICoreWebView2NavigationCompletedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2NavigationCompletedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NavigationCompletedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NavigationCompletedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NavigationCompletedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NavigationCompletedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2NavigationCompletedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2NavigationCompletedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2NavigationCompletedEventHandlerVtbl;
+
+ interface ICoreWebView2NavigationCompletedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2NavigationCompletedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NavigationCompletedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NavigationCompletedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NavigationCompletedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NavigationCompletedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NavigationCompletedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2NavigationStartingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NavigationStartingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NavigationStartingEventHandler = {0x9adbe429, 0xf36d, 0x432b, {0x9d, 0xdc, 0xf8, 0x88, 0x1f, 0xbd, 0x76, 0xe3}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9adbe429-f36d-432b-9ddc-f8881fbd76e3")
+ ICoreWebView2NavigationStartingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2NavigationStartingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NavigationStartingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NavigationStartingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NavigationStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NavigationStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2NavigationStartingEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2NavigationStartingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2NavigationStartingEventHandlerVtbl;
+
+ interface ICoreWebView2NavigationStartingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2NavigationStartingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NavigationStartingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NavigationStartingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NavigationStartingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NavigationStartingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NavigationStartingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NewWindowRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NewWindowRequestedEventHandler = {0xd4c185fe, 0xc81c, 0x4989, {0x97, 0xaf, 0x2d, 0x3f, 0xa7, 0xab, 0x56, 0x51}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d4c185fe-c81c-4989-97af-2d3fa7ab5651")
+ ICoreWebView2NewWindowRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NewWindowRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NewWindowRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NewWindowRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NewWindowRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2NewWindowRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2NewWindowRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2NewWindowRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2NewWindowRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NewWindowRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NewWindowRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NewWindowRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NewWindowRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NewWindowRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PermissionRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PermissionRequestedEventHandler = {0x15e1c6a3, 0xc72a, 0x4df3, {0x91, 0xd7, 0xd0, 0x97, 0xfb, 0xec, 0x6b, 0xfd}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("15e1c6a3-c72a-4df3-91d7-d097fbec6bfd")
+ ICoreWebView2PermissionRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2PermissionRequestedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PermissionRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PermissionRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PermissionRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PermissionRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2PermissionRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2PermissionRequestedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2PermissionRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2PermissionRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2PermissionRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PermissionRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PermissionRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PermissionRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PermissionRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PermissionRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessFailedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessFailedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessFailedEventHandler = {0x79e0aea4, 0x990b, 0x42d9, {0xaa, 0x1d, 0x0f, 0xcc, 0x2e, 0x5b, 0xc7, 0xf1}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("79e0aea4-990b-42d9-aa1d-0fcc2e5bc7f1")
+ ICoreWebView2ProcessFailedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2ProcessFailedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessFailedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessFailedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessFailedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessFailedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ProcessFailedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2ProcessFailedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessFailedEventHandlerVtbl;
+
+ interface ICoreWebView2ProcessFailedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ProcessFailedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessFailedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessFailedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessFailedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessFailedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessFailedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ScriptDialogOpeningEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ScriptDialogOpeningEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ScriptDialogOpeningEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ScriptDialogOpeningEventHandler = {0xef381bf9, 0xafa8, 0x4e37, {0x91, 0xc4, 0x8a, 0xc4, 0x85, 0x24, 0xbd, 0xfb}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ef381bf9-afa8-4e37-91c4-8ac48524bdfb")
+ ICoreWebView2ScriptDialogOpeningEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ScriptDialogOpeningEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ScriptDialogOpeningEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ScriptDialogOpeningEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ScriptDialogOpeningEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ScriptDialogOpeningEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2ScriptDialogOpeningEventHandlerVtbl;
+
+ interface ICoreWebView2ScriptDialogOpeningEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ScriptDialogOpeningEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ScriptDialogOpeningEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ScriptDialogOpeningEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ScriptDialogOpeningEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ScriptDialogOpeningEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ScriptDialogOpeningEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SourceChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2SourceChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SourceChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SourceChangedEventHandler = {0x3c067f9f, 0x5388, 0x4772, {0x8b, 0x48, 0x79, 0xf7, 0xef, 0x1a, 0xb3, 0x7c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3c067f9f-5388-4772-8b48-79f7ef1ab37c")
+ ICoreWebView2SourceChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2SourceChangedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SourceChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SourceChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SourceChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SourceChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SourceChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2SourceChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2SourceChangedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2SourceChangedEventHandlerVtbl;
+
+ interface ICoreWebView2SourceChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2SourceChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SourceChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SourceChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SourceChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SourceChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SourceChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebMessageReceivedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2WebMessageReceivedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebMessageReceivedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebMessageReceivedEventHandler = {0x57213f19, 0x00e6, 0x49fa, {0x8e, 0x07, 0x89, 0x8e, 0xa0, 0x1e, 0xcb, 0xd2}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("57213f19-00e6-49fa-8e07-898ea01ecbd2")
+ ICoreWebView2WebMessageReceivedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebMessageReceivedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebMessageReceivedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebMessageReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebMessageReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2WebMessageReceivedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2WebMessageReceivedEventHandlerVtbl;
+
+ interface ICoreWebView2WebMessageReceivedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2WebMessageReceivedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebMessageReceivedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebMessageReceivedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebMessageReceivedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebMessageReceivedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebMessageReceivedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceRequestedEventHandler = {0xab00b74c, 0x15f1, 0x4646, {0x80, 0xe8, 0xe7, 0x63, 0x41, 0xd2, 0x5d, 0x71}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ab00b74c-15f1-4646-80e8-e76341d25d71")
+ ICoreWebView2WebResourceRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2WebResourceRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2WebResourceRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WindowCloseRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2WindowCloseRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WindowCloseRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WindowCloseRequestedEventHandler = {0x5c19e9e0, 0x092f, 0x486b, {0xaf, 0xfa, 0xca, 0x82, 0x31, 0x91, 0x30, 0x39}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5c19e9e0-092f-486b-affa-ca8231913039")
+ ICoreWebView2WindowCloseRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WindowCloseRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WindowCloseRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WindowCloseRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WindowCloseRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowCloseRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2WindowCloseRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2WindowCloseRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2WindowCloseRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2WindowCloseRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WindowCloseRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WindowCloseRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WindowCloseRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WindowCloseRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WindowCloseRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler = {0xb99369f3, 0x9b11, 0x47b5, {0xbc, 0x6f, 0x8e, 0x78, 0x95, 0xfc, 0xea, 0x17}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b99369f3-9b11-47b5-bc6f-8e7895fcea17")
+ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ LPCWSTR result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ LPCWSTR result);
+
+ END_INTERFACE
+ } ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandlerVtbl;
+
+ interface ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ExecuteScriptCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ExecuteScriptCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ExecuteScriptCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ExecuteScriptCompletedHandler = {0x49511172, 0xcc67, 0x4bca, {0x99, 0x23, 0x13, 0x71, 0x12, 0xf4, 0xc4, 0xcc}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("49511172-cc67-4bca-9923-137112f4c4cc")
+ ICoreWebView2ExecuteScriptCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ LPCWSTR result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ExecuteScriptCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ExecuteScriptCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ExecuteScriptCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ExecuteScriptCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ExecuteScriptCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ExecuteScriptCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ LPCWSTR result);
+
+ END_INTERFACE
+ } ICoreWebView2ExecuteScriptCompletedHandlerVtbl;
+
+ interface ICoreWebView2ExecuteScriptCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2ExecuteScriptCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ExecuteScriptCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ExecuteScriptCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ExecuteScriptCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ExecuteScriptCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ExecuteScriptCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CapturePreviewCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2CapturePreviewCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CapturePreviewCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CapturePreviewCompletedHandler = {0x697e05e9, 0x3d8f, 0x45fa, {0x96, 0xf4, 0x8f, 0xfe, 0x1e, 0xde, 0xda, 0xf5}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("697e05e9-3d8f-45fa-96f4-8ffe1ededaf5")
+ ICoreWebView2CapturePreviewCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CapturePreviewCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CapturePreviewCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CapturePreviewCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CapturePreviewCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CapturePreviewCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2CapturePreviewCompletedHandler *This,
+ /* [in] */ HRESULT errorCode);
+
+ END_INTERFACE
+ } ICoreWebView2CapturePreviewCompletedHandlerVtbl;
+
+ interface ICoreWebView2CapturePreviewCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2CapturePreviewCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CapturePreviewCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CapturePreviewCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CapturePreviewCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CapturePreviewCompletedHandler_Invoke(This, errorCode) \
+ ((This)->lpVtbl->Invoke(This, errorCode))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CapturePreviewCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CallDevToolsProtocolMethodCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CallDevToolsProtocolMethodCompletedHandler = {0x5c4889f0, 0x5ef6, 0x4c5a, {0x95, 0x2c, 0xd8, 0xf1, 0xb9, 0x2d, 0x05, 0x74}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5c4889f0-5ef6-4c5a-952c-d8f1b92d0574")
+ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ LPCWSTR result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CallDevToolsProtocolMethodCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CallDevToolsProtocolMethodCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ LPCWSTR result);
+
+ END_INTERFACE
+ } ICoreWebView2CallDevToolsProtocolMethodCompletedHandlerVtbl;
+
+ interface ICoreWebView2CallDevToolsProtocolMethodCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2CallDevToolsProtocolMethodCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CallDevToolsProtocolMethodCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_2_INTERFACE_DEFINED__
+#define __ICoreWebView2_2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_2 = {0x9E8F0CF8, 0xE670, 0x4B5E, {0xB2, 0xBC, 0x73, 0xE0, 0x61, 0xE3, 0x18, 0x4C}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9E8F0CF8-E670-4B5E-B2BC-73E061E3184C")
+ ICoreWebView2_2 : public ICoreWebView2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_WebResourceResponseReceived(
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_WebResourceResponseReceived(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE NavigateWithWebResourceRequest(
+ /* [in] */ ICoreWebView2WebResourceRequest * request) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_DOMContentLoaded(
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_DOMContentLoaded(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CookieManager(
+ /* [retval][out] */ ICoreWebView2CookieManager * *cookieManager) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Environment(
+ /* [retval][out] */ ICoreWebView2Environment * *environment) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_2 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_2 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_2 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_2 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_2 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_2 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ END_INTERFACE
+ } ICoreWebView2_2Vtbl;
+
+ interface ICoreWebView2_2
+ {
+ CONST_VTBL struct ICoreWebView2_2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_2_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_2_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_2_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_2_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_2_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_2_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_2_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_2_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_2_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_2_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_2_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_2_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_2_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_2_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_2_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_2_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_2_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_2_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_2_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_2_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_2_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_2_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_2_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_2_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_2_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_2_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_2_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_2_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_2_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_2_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_2_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_2_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_2_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_2_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_2_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_2_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_2_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_2_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_2_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_2_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_2_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_2_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_2_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_2_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_2_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_2_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_2_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_2_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_2_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DOMContentLoadedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2DOMContentLoadedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DOMContentLoadedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DOMContentLoadedEventHandler = {0x4bac7e9c, 0x199e, 0x49ed, {0x87, 0xed, 0x24, 0x93, 0x03, 0xac, 0xf0, 0x19}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4bac7e9c-199e-49ed-87ed-249303acf019")
+ ICoreWebView2DOMContentLoadedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DOMContentLoadedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DOMContentLoadedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DOMContentLoadedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DOMContentLoadedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DOMContentLoadedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2DOMContentLoadedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2DOMContentLoadedEventHandlerVtbl;
+
+ interface ICoreWebView2DOMContentLoadedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2DOMContentLoadedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DOMContentLoadedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DOMContentLoadedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DOMContentLoadedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DOMContentLoadedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DOMContentLoadedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseReceivedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceResponseReceivedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceResponseReceivedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceResponseReceivedEventHandler = {0x7de9898a, 0x24f5, 0x40c3, {0xa2, 0xde, 0xd4, 0xf4, 0x58, 0xe6, 0x98, 0x28}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7de9898a-24f5-40c3-a2de-d4f458e69828")
+ ICoreWebView2WebResourceResponseReceivedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceResponseReceivedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceResponseReceivedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceResponseReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceResponseReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseReceivedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2WebResourceResponseReceivedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceResponseReceivedEventHandlerVtbl;
+
+ interface ICoreWebView2WebResourceResponseReceivedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceResponseReceivedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceResponseReceivedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceResponseReceivedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceResponseReceivedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceResponseReceivedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceResponseReceivedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_3_INTERFACE_DEFINED__
+#define __ICoreWebView2_3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_3 = {0xA0D6DF20, 0x3B92, 0x416D, {0xAA, 0x0C, 0x43, 0x7A, 0x9C, 0x72, 0x78, 0x57}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("A0D6DF20-3B92-416D-AA0C-437A9C727857")
+ ICoreWebView2_3 : public ICoreWebView2_2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE TrySuspend(
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Resume(void) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsSuspended(
+ /* [retval][out] */ BOOL * isSuspended) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVirtualHostNameToFolderMapping(
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearVirtualHostNameToFolderMapping(
+ /* [in] */ LPCWSTR hostName) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_3 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_3 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_3 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_3 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_3 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_3 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ END_INTERFACE
+ } ICoreWebView2_3Vtbl;
+
+ interface ICoreWebView2_3
+ {
+ CONST_VTBL struct ICoreWebView2_3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_3_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_3_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_3_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_3_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_3_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_3_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_3_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_3_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_3_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_3_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_3_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_3_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_3_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_3_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_3_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_3_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_3_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_3_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_3_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_3_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_3_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_3_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_3_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_3_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_3_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_3_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_3_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_3_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_3_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_3_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_3_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_3_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_3_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_3_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_3_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_3_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_3_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_3_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_3_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_3_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_3_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_3_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_3_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_3_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_3_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_3_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_3_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_3_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_3_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_3_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_3_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_3_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_3_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_3_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2TrySuspendCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2TrySuspendCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2TrySuspendCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2TrySuspendCompletedHandler = {0x00f206a7, 0x9d17, 0x4605, {0x91, 0xf6, 0x4e, 0x8e, 0x4d, 0xe1, 0x92, 0xe3}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("00f206a7-9d17-4605-91f6-4e8e4de192e3")
+ ICoreWebView2TrySuspendCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ BOOL result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2TrySuspendCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2TrySuspendCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2TrySuspendCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2TrySuspendCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2TrySuspendCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2TrySuspendCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ BOOL result);
+
+ END_INTERFACE
+ } ICoreWebView2TrySuspendCompletedHandlerVtbl;
+
+ interface ICoreWebView2TrySuspendCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2TrySuspendCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2TrySuspendCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2TrySuspendCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2TrySuspendCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2TrySuspendCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2TrySuspendCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_4_INTERFACE_DEFINED__
+#define __ICoreWebView2_4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_4 = {0x20d02d59, 0x6df2, 0x42dc, {0xbd, 0x06, 0xf9, 0x8a, 0x69, 0x4b, 0x13, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("20d02d59-6df2-42dc-bd06-f98a694b1302")
+ ICoreWebView2_4 : public ICoreWebView2_3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_FrameCreated(
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_FrameCreated(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_DownloadStarting(
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_DownloadStarting(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_4 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_4 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_4 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_4 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_4 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_4 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_4Vtbl;
+
+ interface ICoreWebView2_4
+ {
+ CONST_VTBL struct ICoreWebView2_4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_4_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_4_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_4_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_4_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_4_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_4_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_4_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_4_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_4_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_4_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_4_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_4_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_4_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_4_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_4_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_4_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_4_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_4_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_4_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_4_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_4_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_4_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_4_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_4_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_4_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_4_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_4_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_4_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_4_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_4_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_4_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_4_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_4_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_4_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_4_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_4_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_4_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_4_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_4_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_4_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_4_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_4_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_4_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_4_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_4_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_4_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_4_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_4_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_4_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_4_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_4_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_4_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_4_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_4_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_4_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_4_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DownloadStartingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2DownloadStartingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DownloadStartingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DownloadStartingEventHandler = {0xefedc989, 0xc396, 0x41ca, {0x83, 0xf7, 0x07, 0xf8, 0x45, 0xa5, 0x57, 0x24}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("efedc989-c396-41ca-83f7-07f845a55724")
+ ICoreWebView2DownloadStartingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2DownloadStartingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DownloadStartingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DownloadStartingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DownloadStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DownloadStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2DownloadStartingEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2DownloadStartingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2DownloadStartingEventHandlerVtbl;
+
+ interface ICoreWebView2DownloadStartingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2DownloadStartingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DownloadStartingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DownloadStartingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DownloadStartingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DownloadStartingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DownloadStartingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameCreatedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameCreatedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameCreatedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameCreatedEventHandler = {0x38059770, 0x9baa, 0x11eb, {0xa8, 0xb3, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("38059770-9baa-11eb-a8b3-0242ac130003")
+ ICoreWebView2FrameCreatedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2FrameCreatedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameCreatedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameCreatedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameCreatedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameCreatedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameCreatedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameCreatedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2FrameCreatedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameCreatedEventHandlerVtbl;
+
+ interface ICoreWebView2FrameCreatedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameCreatedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameCreatedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameCreatedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameCreatedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameCreatedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameCreatedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_5_INTERFACE_DEFINED__
+#define __ICoreWebView2_5_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_5 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_5 = {0xbedb11b8, 0xd63c, 0x11eb, {0xb8, 0xbc, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bedb11b8-d63c-11eb-b8bc-0242ac130003")
+ ICoreWebView2_5 : public ICoreWebView2_4
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_ClientCertificateRequested(
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ClientCertificateRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_5 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_5 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_5 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_5 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_5 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_5 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_5Vtbl;
+
+ interface ICoreWebView2_5
+ {
+ CONST_VTBL struct ICoreWebView2_5Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_5_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_5_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_5_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_5_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_5_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_5_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_5_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_5_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_5_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_5_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_5_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_5_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_5_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_5_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_5_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_5_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_5_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_5_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_5_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_5_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_5_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_5_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_5_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_5_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_5_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_5_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_5_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_5_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_5_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_5_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_5_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_5_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_5_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_5_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_5_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_5_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_5_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_5_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_5_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_5_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_5_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_5_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_5_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_5_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_5_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_5_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_5_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_5_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_5_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_5_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_5_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_5_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_5_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_5_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_5_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_5_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_5_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_5_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_5_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_5_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_5_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificateRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ClientCertificateRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ClientCertificateRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ClientCertificateRequestedEventHandler = {0xd7175ba2, 0xbcc3, 0x11eb, {0x85, 0x29, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d7175ba2-bcc3-11eb-8529-0242ac130003")
+ ICoreWebView2ClientCertificateRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ClientCertificateRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ClientCertificateRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ClientCertificateRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ClientCertificateRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ClientCertificateRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2ClientCertificateRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2ClientCertificateRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ClientCertificateRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ClientCertificateRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ClientCertificateRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ClientCertificateRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ClientCertificateRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ClientCertificateRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_6_INTERFACE_DEFINED__
+#define __ICoreWebView2_6_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_6 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_6 = {0x499aadac, 0xd92c, 0x4589, {0x8a, 0x75, 0x11, 0x1b, 0xfc, 0x16, 0x77, 0x95}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("499aadac-d92c-4589-8a75-111bfc167795")
+ ICoreWebView2_6 : public ICoreWebView2_5
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OpenTaskManagerWindow(void) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_6 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_6 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_6 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_6 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_6 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_6 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_6 *This);
+
+ END_INTERFACE
+ } ICoreWebView2_6Vtbl;
+
+ interface ICoreWebView2_6
+ {
+ CONST_VTBL struct ICoreWebView2_6Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_6_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_6_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_6_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_6_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_6_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_6_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_6_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_6_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_6_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_6_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_6_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_6_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_6_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_6_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_6_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_6_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_6_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_6_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_6_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_6_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_6_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_6_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_6_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_6_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_6_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_6_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_6_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_6_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_6_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_6_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_6_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_6_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_6_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_6_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_6_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_6_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_6_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_6_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_6_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_6_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_6_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_6_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_6_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_6_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_6_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_6_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_6_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_6_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_6_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_6_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_6_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_6_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_6_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_6_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_6_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_6_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_6_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_6_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_6_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_6_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_6_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_6_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_7_INTERFACE_DEFINED__
+#define __ICoreWebView2_7_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_7 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_7 = {0x79c24d83, 0x09a3, 0x45ae, {0x94, 0x18, 0x48, 0x7f, 0x32, 0xa5, 0x87, 0x40}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("79c24d83-09a3-45ae-9418-487f32a58740")
+ ICoreWebView2_7 : public ICoreWebView2_6
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PrintToPdf(
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings * printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_7 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_7 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_7 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_7 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_7 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_7 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2_7Vtbl;
+
+ interface ICoreWebView2_7
+ {
+ CONST_VTBL struct ICoreWebView2_7Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_7_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_7_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_7_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_7_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_7_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_7_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_7_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_7_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_7_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_7_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_7_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_7_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_7_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_7_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_7_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_7_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_7_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_7_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_7_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_7_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_7_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_7_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_7_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_7_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_7_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_7_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_7_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_7_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_7_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_7_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_7_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_7_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_7_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_7_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_7_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_7_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_7_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_7_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_7_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_7_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_7_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_7_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_7_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_7_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_7_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_7_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_7_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_7_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_7_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_7_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_7_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_7_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_7_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_7_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_7_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_7_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_7_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_7_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_7_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_7_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_7_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_7_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_7_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintToPdfCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2PrintToPdfCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PrintToPdfCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PrintToPdfCompletedHandler = {0xccf1ef04, 0xfd8e, 0x4d5f, {0xb2, 0xde, 0x09, 0x83, 0xe4, 0x1b, 0x8c, 0x36}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ccf1ef04-fd8e-4d5f-b2de-0983e41b8c36")
+ ICoreWebView2PrintToPdfCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ BOOL result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PrintToPdfCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PrintToPdfCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PrintToPdfCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PrintToPdfCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintToPdfCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2PrintToPdfCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ BOOL result);
+
+ END_INTERFACE
+ } ICoreWebView2PrintToPdfCompletedHandlerVtbl;
+
+ interface ICoreWebView2PrintToPdfCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2PrintToPdfCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PrintToPdfCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PrintToPdfCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PrintToPdfCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PrintToPdfCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PrintToPdfCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_8_INTERFACE_DEFINED__
+#define __ICoreWebView2_8_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_8 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_8 = {0xE9632730, 0x6E1E, 0x43AB, {0xB7, 0xB8, 0x7B, 0x2C, 0x9E, 0x62, 0xE0, 0x94}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("E9632730-6E1E-43AB-B7B8-7B2C9E62E094")
+ ICoreWebView2_8 : public ICoreWebView2_7
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_IsMutedChanged(
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_IsMutedChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsMuted(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsMuted(
+ /* [in] */ BOOL value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_IsDocumentPlayingAudioChanged(
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_IsDocumentPlayingAudioChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsDocumentPlayingAudio(
+ /* [retval][out] */ BOOL * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_8Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_8 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_8 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_8 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_8 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_8 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ END_INTERFACE
+ } ICoreWebView2_8Vtbl;
+
+ interface ICoreWebView2_8
+ {
+ CONST_VTBL struct ICoreWebView2_8Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_8_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_8_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_8_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_8_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_8_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_8_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_8_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_8_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_8_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_8_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_8_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_8_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_8_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_8_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_8_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_8_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_8_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_8_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_8_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_8_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_8_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_8_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_8_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_8_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_8_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_8_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_8_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_8_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_8_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_8_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_8_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_8_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_8_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_8_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_8_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_8_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_8_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_8_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_8_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_8_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_8_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_8_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_8_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_8_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_8_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_8_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_8_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_8_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_8_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_8_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_8_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_8_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_8_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_8_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_8_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_8_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_8_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_8_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_8_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_8_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_8_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_8_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_8_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_8_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_8_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_8_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_8_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_8_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2IsDocumentPlayingAudioChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2IsDocumentPlayingAudioChangedEventHandler = {0x5def109a, 0x2f4b, 0x49fa, {0xb7, 0xf6, 0x11, 0xc3, 0x9e, 0x51, 0x33, 0x28}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5def109a-2f4b-49fa-b7f6-11c39e513328")
+ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2IsDocumentPlayingAudioChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2IsDocumentPlayingAudioChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2IsDocumentPlayingAudioChangedEventHandlerVtbl;
+
+ interface ICoreWebView2IsDocumentPlayingAudioChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2IsDocumentPlayingAudioChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2IsDocumentPlayingAudioChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2IsMutedChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2IsMutedChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2IsMutedChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2IsMutedChangedEventHandler = {0x57d90347, 0xcd0e, 0x4952, {0xa4, 0xa2, 0x74, 0x83, 0xa2, 0x75, 0x6f, 0x08}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("57d90347-cd0e-4952-a4a2-7483a2756f08")
+ ICoreWebView2IsMutedChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2IsMutedChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2IsMutedChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2IsMutedChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2IsMutedChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2IsMutedChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2IsMutedChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2IsMutedChangedEventHandlerVtbl;
+
+ interface ICoreWebView2IsMutedChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2IsMutedChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2IsMutedChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2IsMutedChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2IsMutedChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2IsMutedChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2IsMutedChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_9_INTERFACE_DEFINED__
+#define __ICoreWebView2_9_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_9 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_9 = {0x4d7b2eab, 0x9fdc, 0x468d, {0xb9, 0x98, 0xa9, 0x26, 0x0b, 0x5e, 0xd6, 0x51}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4d7b2eab-9fdc-468d-b998-a9260b5ed651")
+ ICoreWebView2_9 : public ICoreWebView2_8
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_IsDefaultDownloadDialogOpenChanged(
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler * handler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_IsDefaultDownloadDialogOpenChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsDefaultDownloadDialogOpen(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenDefaultDownloadDialog(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CloseDefaultDownloadDialog(void) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DefaultDownloadDialogCornerAlignment(
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_DefaultDownloadDialogCornerAlignment(
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DefaultDownloadDialogMargin(
+ /* [retval][out] */ POINT * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_DefaultDownloadDialogMargin(
+ /* [in] */ POINT value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_9Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_9 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_9 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_9 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_9 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_9 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_9 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_9 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_9 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_9 *This,
+ /* [in] */ POINT value);
+
+ END_INTERFACE
+ } ICoreWebView2_9Vtbl;
+
+ interface ICoreWebView2_9
+ {
+ CONST_VTBL struct ICoreWebView2_9Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_9_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_9_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_9_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_9_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_9_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_9_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_9_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_9_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_9_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_9_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_9_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_9_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_9_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_9_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_9_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_9_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_9_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_9_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_9_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_9_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_9_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_9_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_9_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_9_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_9_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_9_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_9_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_9_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_9_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_9_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_9_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_9_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_9_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_9_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_9_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_9_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_9_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_9_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_9_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_9_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_9_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_9_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_9_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_9_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_9_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_9_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_9_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_9_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_9_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_9_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_9_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_9_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_9_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_9_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_9_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_9_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_9_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_9_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_9_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_9_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_9_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_9_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_9_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_9_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_9_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_9_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_9_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_9_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_9_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_9_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_9_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_9_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_9_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_9_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_9_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_9_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_9_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler = {0x3117da26, 0xae13, 0x438d, {0xbd, 0x46, 0xed, 0xbe, 0xb2, 0xc4, 0xce, 0x81}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3117da26-ae13-438d-bd46-edbeb2c4ce81")
+ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandlerVtbl;
+
+ interface ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_10_INTERFACE_DEFINED__
+#define __ICoreWebView2_10_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_10 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_10 = {0xb1690564, 0x6f5a, 0x4983, {0x8e, 0x48, 0x31, 0xd1, 0x14, 0x3f, 0xec, 0xdb}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b1690564-6f5a-4983-8e48-31d1143fecdb")
+ ICoreWebView2_10 : public ICoreWebView2_9
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_BasicAuthenticationRequested(
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_BasicAuthenticationRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_10Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_10 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_10 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_10 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_10 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_10 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_10 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_10 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_10 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_10 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_10Vtbl;
+
+ interface ICoreWebView2_10
+ {
+ CONST_VTBL struct ICoreWebView2_10Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_10_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_10_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_10_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_10_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_10_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_10_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_10_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_10_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_10_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_10_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_10_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_10_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_10_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_10_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_10_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_10_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_10_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_10_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_10_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_10_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_10_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_10_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_10_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_10_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_10_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_10_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_10_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_10_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_10_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_10_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_10_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_10_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_10_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_10_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_10_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_10_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_10_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_10_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_10_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_10_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_10_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_10_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_10_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_10_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_10_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_10_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_10_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_10_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_10_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_10_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_10_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_10_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_10_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_10_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_10_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_10_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_10_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_10_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_10_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_10_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_10_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_10_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_10_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_10_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_10_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_10_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_10_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_10_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_10_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_10_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_10_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_10_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_10_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_10_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_10_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_10_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_10_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_10_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BasicAuthenticationRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2BasicAuthenticationRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BasicAuthenticationRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BasicAuthenticationRequestedEventHandler = {0x58b4d6c2, 0x18d4, 0x497e, {0xb3, 0x9b, 0x9a, 0x96, 0x53, 0x3f, 0xa2, 0x78}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("58b4d6c2-18d4-497e-b39b-9a96533fa278")
+ ICoreWebView2BasicAuthenticationRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BasicAuthenticationRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BasicAuthenticationRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BasicAuthenticationRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BasicAuthenticationRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2BasicAuthenticationRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2BasicAuthenticationRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2BasicAuthenticationRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2BasicAuthenticationRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BasicAuthenticationRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BasicAuthenticationRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_11_INTERFACE_DEFINED__
+#define __ICoreWebView2_11_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_11 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_11 = {0x0be78e56, 0xc193, 0x4051, {0xb9, 0x43, 0x23, 0xb4, 0x60, 0xc0, 0x8b, 0xdb}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0be78e56-c193-4051-b943-23b460c08bdb")
+ ICoreWebView2_11 : public ICoreWebView2_10
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CallDevToolsProtocolMethodForSession(
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_ContextMenuRequested(
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ContextMenuRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_11Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_11 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_11 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_11 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_11 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_11 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_11 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_11 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_11 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_11 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_11Vtbl;
+
+ interface ICoreWebView2_11
+ {
+ CONST_VTBL struct ICoreWebView2_11Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_11_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_11_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_11_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_11_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_11_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_11_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_11_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_11_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_11_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_11_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_11_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_11_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_11_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_11_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_11_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_11_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_11_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_11_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_11_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_11_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_11_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_11_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_11_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_11_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_11_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_11_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_11_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_11_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_11_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_11_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_11_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_11_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_11_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_11_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_11_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_11_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_11_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_11_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_11_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_11_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_11_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_11_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_11_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_11_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_11_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_11_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_11_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_11_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_11_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_11_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_11_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_11_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_11_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_11_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_11_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_11_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_11_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_11_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_11_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_11_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_11_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_11_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_11_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_11_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_11_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_11_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_11_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_11_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_11_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_11_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_11_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_11_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_11_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_11_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_11_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_11_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_11_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_11_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_11_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_11_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ContextMenuRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContextMenuRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContextMenuRequestedEventHandler = {0x04d3fe1d, 0xab87, 0x42fb, {0xa8, 0x98, 0xda, 0x24, 0x1d, 0x35, 0xb6, 0x3c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("04d3fe1d-ab87-42fb-a898-da241d35b63c")
+ ICoreWebView2ContextMenuRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContextMenuRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContextMenuRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContextMenuRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContextMenuRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ContextMenuRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2ContextMenuRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2ContextMenuRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ContextMenuRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContextMenuRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContextMenuRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContextMenuRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContextMenuRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContextMenuRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_12_INTERFACE_DEFINED__
+#define __ICoreWebView2_12_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_12 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_12 = {0x35D69927, 0xBCFA, 0x4566, {0x93, 0x49, 0x6B, 0x3E, 0x0D, 0x15, 0x4C, 0xAC}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("35D69927-BCFA-4566-9349-6B3E0D154CAC")
+ ICoreWebView2_12 : public ICoreWebView2_11
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_StatusBarTextChanged(
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_StatusBarTextChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_StatusBarText(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_12Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_12 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_12 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_12 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_12 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_12 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_12 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_12 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_12 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_12 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2_12Vtbl;
+
+ interface ICoreWebView2_12
+ {
+ CONST_VTBL struct ICoreWebView2_12Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_12_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_12_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_12_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_12_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_12_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_12_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_12_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_12_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_12_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_12_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_12_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_12_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_12_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_12_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_12_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_12_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_12_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_12_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_12_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_12_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_12_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_12_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_12_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_12_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_12_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_12_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_12_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_12_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_12_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_12_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_12_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_12_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_12_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_12_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_12_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_12_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_12_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_12_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_12_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_12_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_12_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_12_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_12_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_12_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_12_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_12_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_12_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_12_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_12_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_12_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_12_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_12_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_12_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_12_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_12_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_12_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_12_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_12_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_12_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_12_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_12_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_12_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_12_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_12_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_12_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_12_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_12_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_12_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_12_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_12_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_12_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_12_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_12_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_12_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_12_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_12_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_12_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_12_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_12_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_12_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_12_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_12_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2StatusBarTextChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2StatusBarTextChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2StatusBarTextChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2StatusBarTextChangedEventHandler = {0xa5e3b0d0, 0x10df, 0x4156, {0xbf, 0xad, 0x3b, 0x43, 0x86, 0x7a, 0xca, 0xc6}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a5e3b0d0-10df-4156-bfad-3b43867acac6")
+ ICoreWebView2StatusBarTextChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2StatusBarTextChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2StatusBarTextChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2StatusBarTextChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2StatusBarTextChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2StatusBarTextChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2StatusBarTextChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2StatusBarTextChangedEventHandlerVtbl;
+
+ interface ICoreWebView2StatusBarTextChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2StatusBarTextChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2StatusBarTextChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2StatusBarTextChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2StatusBarTextChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2StatusBarTextChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2StatusBarTextChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_13_INTERFACE_DEFINED__
+#define __ICoreWebView2_13_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_13 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_13 = {0xf75f09a8, 0x667e, 0x4983, {0x88, 0xd6, 0xc8, 0x77, 0x3f, 0x31, 0x5e, 0x84}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f75f09a8-667e-4983-88d6-c8773f315e84")
+ ICoreWebView2_13 : public ICoreWebView2_12
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Profile(
+ /* [retval][out] */ ICoreWebView2Profile * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_13Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_13 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_13 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_13 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_13 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_13 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_13 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_13 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_13 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_13 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ END_INTERFACE
+ } ICoreWebView2_13Vtbl;
+
+ interface ICoreWebView2_13
+ {
+ CONST_VTBL struct ICoreWebView2_13Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_13_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_13_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_13_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_13_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_13_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_13_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_13_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_13_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_13_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_13_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_13_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_13_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_13_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_13_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_13_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_13_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_13_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_13_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_13_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_13_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_13_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_13_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_13_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_13_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_13_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_13_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_13_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_13_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_13_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_13_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_13_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_13_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_13_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_13_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_13_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_13_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_13_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_13_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_13_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_13_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_13_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_13_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_13_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_13_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_13_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_13_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_13_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_13_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_13_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_13_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_13_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_13_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_13_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_13_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_13_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_13_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_13_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_13_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_13_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_13_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_13_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_13_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_13_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_13_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_13_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_13_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_13_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_13_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_13_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_13_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_13_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_13_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_13_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_13_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_13_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_13_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_13_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_13_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_13_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_13_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_13_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_13_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_13_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_14_INTERFACE_DEFINED__
+#define __ICoreWebView2_14_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_14 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_14 = {0x6daa4f10, 0x4a90, 0x4753, {0x88, 0x98, 0x77, 0xc5, 0xdf, 0x53, 0x41, 0x65}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6daa4f10-4a90-4753-8898-77c5df534165")
+ ICoreWebView2_14 : public ICoreWebView2_13
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_ServerCertificateErrorDetected(
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ServerCertificateErrorDetected(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearServerCertificateErrorActions(
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_14Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_14 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_14 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_14 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_14 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_14 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_14 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_14 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_14 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_14 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_14 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2_14Vtbl;
+
+ interface ICoreWebView2_14
+ {
+ CONST_VTBL struct ICoreWebView2_14Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_14_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_14_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_14_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_14_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_14_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_14_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_14_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_14_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_14_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_14_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_14_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_14_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_14_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_14_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_14_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_14_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_14_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_14_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_14_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_14_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_14_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_14_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_14_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_14_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_14_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_14_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_14_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_14_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_14_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_14_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_14_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_14_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_14_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_14_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_14_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_14_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_14_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_14_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_14_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_14_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_14_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_14_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_14_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_14_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_14_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_14_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_14_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_14_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_14_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_14_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_14_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_14_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_14_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_14_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_14_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_14_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_14_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_14_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_14_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_14_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_14_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_14_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_14_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_14_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_14_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_14_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_14_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_14_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_14_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_14_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_14_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_14_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_14_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_14_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_14_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_14_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_14_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_14_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_14_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_14_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_14_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_14_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_14_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_14_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_14_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ServerCertificateErrorDetectedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ServerCertificateErrorDetectedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ServerCertificateErrorDetectedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ServerCertificateErrorDetectedEventHandler = {0x969b3a26, 0xd85e, 0x4795, {0x81, 0x99, 0xfe, 0xf5, 0x73, 0x44, 0xda, 0x22}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("969b3a26-d85e-4795-8199-fef57344da22")
+ ICoreWebView2ServerCertificateErrorDetectedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ServerCertificateErrorDetectedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ServerCertificateErrorDetectedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ServerCertificateErrorDetectedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ServerCertificateErrorDetectedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ServerCertificateErrorDetectedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ServerCertificateErrorDetectedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2ServerCertificateErrorDetectedEventHandlerVtbl;
+
+ interface ICoreWebView2ServerCertificateErrorDetectedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ServerCertificateErrorDetectedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ServerCertificateErrorDetectedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler = {0x3b40aac6, 0xacfe, 0x4ffd, {0x82, 0x11, 0xf6, 0x07, 0xb9, 0x6e, 0x2d, 0x5b}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3b40aac6-acfe-4ffd-8211-f607b96e2d5b")
+ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ClearServerCertificateErrorActionsCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *This,
+ /* [in] */ HRESULT errorCode);
+
+ END_INTERFACE
+ } ICoreWebView2ClearServerCertificateErrorActionsCompletedHandlerVtbl;
+
+ interface ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2ClearServerCertificateErrorActionsCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_Invoke(This, errorCode) \
+ ((This)->lpVtbl->Invoke(This, errorCode))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_15_INTERFACE_DEFINED__
+#define __ICoreWebView2_15_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_15 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_15 = {0x517B2D1D, 0x7DAE, 0x4A66, {0xA4, 0xF4, 0x10, 0x35, 0x2F, 0xFB, 0x95, 0x18}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("517B2D1D-7DAE-4A66-A4F4-10352FFB9518")
+ ICoreWebView2_15 : public ICoreWebView2_14
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_FaviconChanged(
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_FaviconChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FaviconUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFavicon(
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler * completedHandler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_15Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_15 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_15 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_15 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_15 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_15 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_15 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_15 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_15 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_15 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_15 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_15 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_15 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ END_INTERFACE
+ } ICoreWebView2_15Vtbl;
+
+ interface ICoreWebView2_15
+ {
+ CONST_VTBL struct ICoreWebView2_15Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_15_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_15_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_15_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_15_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_15_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_15_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_15_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_15_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_15_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_15_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_15_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_15_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_15_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_15_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_15_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_15_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_15_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_15_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_15_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_15_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_15_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_15_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_15_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_15_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_15_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_15_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_15_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_15_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_15_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_15_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_15_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_15_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_15_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_15_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_15_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_15_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_15_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_15_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_15_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_15_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_15_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_15_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_15_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_15_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_15_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_15_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_15_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_15_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_15_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_15_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_15_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_15_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_15_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_15_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_15_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_15_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_15_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_15_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_15_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_15_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_15_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_15_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_15_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_15_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_15_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_15_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_15_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_15_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_15_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_15_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_15_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_15_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_15_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_15_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_15_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_15_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_15_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_15_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_15_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_15_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_15_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_15_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_15_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_15_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_15_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_15_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_15_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_15_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FaviconChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FaviconChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FaviconChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FaviconChangedEventHandler = {0x2913da94, 0x833d, 0x4de0, {0x8d, 0xca, 0x90, 0x0f, 0xc5, 0x24, 0xa1, 0xa4}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2913da94-833d-4de0-8dca-900fc524a1a4")
+ ICoreWebView2FaviconChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FaviconChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FaviconChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FaviconChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FaviconChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FaviconChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FaviconChangedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2FaviconChangedEventHandlerVtbl;
+
+ interface ICoreWebView2FaviconChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FaviconChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FaviconChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FaviconChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FaviconChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FaviconChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FaviconChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2GetFaviconCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2GetFaviconCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2GetFaviconCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2GetFaviconCompletedHandler = {0xa2508329, 0x7da8, 0x49d7, {0x8c, 0x05, 0xfa, 0x12, 0x5e, 0x4a, 0xee, 0x8d}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a2508329-7da8-49d7-8c05-fa125e4aee8d")
+ ICoreWebView2GetFaviconCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ IStream * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2GetFaviconCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2GetFaviconCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2GetFaviconCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2GetFaviconCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2GetFaviconCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2GetFaviconCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ IStream *result);
+
+ END_INTERFACE
+ } ICoreWebView2GetFaviconCompletedHandlerVtbl;
+
+ interface ICoreWebView2GetFaviconCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2GetFaviconCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2GetFaviconCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2GetFaviconCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2GetFaviconCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2GetFaviconCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2GetFaviconCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_16_INTERFACE_DEFINED__
+#define __ICoreWebView2_16_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_16 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_16 = {0x0EB34DC9, 0x9F91, 0x41E1, {0x86, 0x39, 0x95, 0xCD, 0x59, 0x43, 0x90, 0x6B}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0EB34DC9-9F91-41E1-8639-95CD5943906B")
+ ICoreWebView2_16 : public ICoreWebView2_15
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Print(
+ /* [in] */ ICoreWebView2PrintSettings * printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShowPrintUI(
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PrintToPdfStream(
+ /* [in] */ ICoreWebView2PrintSettings * printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_16Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_16 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_16 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_16 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_16 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_16 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_16 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_16 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_16 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_16 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_16 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_16 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_16 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_16 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_16 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2_16Vtbl;
+
+ interface ICoreWebView2_16
+ {
+ CONST_VTBL struct ICoreWebView2_16Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_16_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_16_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_16_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_16_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_16_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_16_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_16_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_16_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_16_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_16_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_16_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_16_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_16_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_16_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_16_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_16_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_16_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_16_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_16_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_16_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_16_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_16_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_16_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_16_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_16_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_16_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_16_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_16_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_16_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_16_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_16_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_16_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_16_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_16_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_16_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_16_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_16_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_16_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_16_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_16_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_16_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_16_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_16_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_16_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_16_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_16_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_16_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_16_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_16_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_16_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_16_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_16_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_16_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_16_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_16_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_16_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_16_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_16_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_16_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_16_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_16_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_16_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_16_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_16_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_16_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_16_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_16_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_16_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_16_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_16_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_16_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_16_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_16_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_16_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_16_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_16_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_16_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_16_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_16_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_16_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_16_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_16_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_16_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_16_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_16_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_16_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_16_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_16_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_16_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_16_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_16_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2PrintCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PrintCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PrintCompletedHandler = {0x8fd80075, 0xed08, 0x42db, {0x85, 0x70, 0xf5, 0xd1, 0x49, 0x77, 0x46, 0x1e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8fd80075-ed08-42db-8570-f5d14977461e")
+ ICoreWebView2PrintCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ COREWEBVIEW2_PRINT_STATUS result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PrintCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PrintCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PrintCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PrintCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2PrintCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ COREWEBVIEW2_PRINT_STATUS result);
+
+ END_INTERFACE
+ } ICoreWebView2PrintCompletedHandlerVtbl;
+
+ interface ICoreWebView2PrintCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2PrintCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PrintCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PrintCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PrintCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PrintCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PrintCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintToPdfStreamCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2PrintToPdfStreamCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PrintToPdfStreamCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PrintToPdfStreamCompletedHandler = {0x4c9f8229, 0x8f93, 0x444f, {0xa7, 0x11, 0x2c, 0x0d, 0xfd, 0x63, 0x59, 0xd5}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4c9f8229-8f93-444f-a711-2c0dfd6359d5")
+ ICoreWebView2PrintToPdfStreamCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ IStream * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PrintToPdfStreamCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PrintToPdfStreamCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PrintToPdfStreamCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PrintToPdfStreamCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintToPdfStreamCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2PrintToPdfStreamCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ IStream *result);
+
+ END_INTERFACE
+ } ICoreWebView2PrintToPdfStreamCompletedHandlerVtbl;
+
+ interface ICoreWebView2PrintToPdfStreamCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2PrintToPdfStreamCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PrintToPdfStreamCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PrintToPdfStreamCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PrintToPdfStreamCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PrintToPdfStreamCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PrintToPdfStreamCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_17_INTERFACE_DEFINED__
+#define __ICoreWebView2_17_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_17 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_17 = {0x702e75d4, 0xfd44, 0x434d, {0x9d, 0x70, 0x1a, 0x68, 0xa6, 0xb1, 0x19, 0x2a}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("702e75d4-fd44-434d-9d70-1a68a6b1192a")
+ ICoreWebView2_17 : public ICoreWebView2_16
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PostSharedBufferToScript(
+ /* [in] */ ICoreWebView2SharedBuffer * sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_17Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_17 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_17 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_17 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_17 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_17 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_17 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_17 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_17 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_17 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_17 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_17 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_17 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_17 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_17 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ END_INTERFACE
+ } ICoreWebView2_17Vtbl;
+
+ interface ICoreWebView2_17
+ {
+ CONST_VTBL struct ICoreWebView2_17Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_17_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_17_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_17_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_17_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_17_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_17_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_17_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_17_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_17_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_17_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_17_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_17_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_17_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_17_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_17_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_17_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_17_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_17_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_17_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_17_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_17_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_17_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_17_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_17_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_17_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_17_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_17_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_17_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_17_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_17_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_17_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_17_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_17_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_17_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_17_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_17_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_17_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_17_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_17_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_17_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_17_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_17_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_17_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_17_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_17_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_17_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_17_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_17_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_17_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_17_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_17_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_17_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_17_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_17_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_17_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_17_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_17_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_17_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_17_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_17_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_17_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_17_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_17_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_17_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_17_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_17_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_17_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_17_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_17_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_17_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_17_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_17_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_17_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_17_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_17_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_17_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_17_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_17_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_17_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_17_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_17_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_17_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_17_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_17_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_17_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_17_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_17_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_17_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_17_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_17_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_17_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_17_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_18_INTERFACE_DEFINED__
+#define __ICoreWebView2_18_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_18 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_18 = {0x7a626017, 0x28be, 0x49b2, {0xb8, 0x65, 0x3b, 0xa2, 0xb3, 0x52, 0x2d, 0x90}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7a626017-28be-49b2-b865-3ba2b3522d90")
+ ICoreWebView2_18 : public ICoreWebView2_17
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_LaunchingExternalUriScheme(
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_LaunchingExternalUriScheme(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_18Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_18 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_18 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_18 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_18 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_18 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_18 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_18 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_18 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_18 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_18 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_18 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_18 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_18 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_18 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_18Vtbl;
+
+ interface ICoreWebView2_18
+ {
+ CONST_VTBL struct ICoreWebView2_18Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_18_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_18_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_18_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_18_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_18_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_18_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_18_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_18_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_18_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_18_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_18_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_18_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_18_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_18_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_18_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_18_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_18_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_18_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_18_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_18_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_18_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_18_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_18_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_18_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_18_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_18_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_18_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_18_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_18_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_18_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_18_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_18_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_18_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_18_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_18_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_18_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_18_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_18_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_18_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_18_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_18_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_18_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_18_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_18_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_18_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_18_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_18_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_18_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_18_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_18_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_18_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_18_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_18_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_18_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_18_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_18_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_18_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_18_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_18_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_18_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_18_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_18_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_18_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_18_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_18_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_18_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_18_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_18_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_18_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_18_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_18_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_18_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_18_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_18_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_18_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_18_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_18_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_18_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_18_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_18_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_18_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_18_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_18_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_18_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_18_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_18_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_18_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_18_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_18_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_18_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_18_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_18_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_18_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2LaunchingExternalUriSchemeEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2LaunchingExternalUriSchemeEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2LaunchingExternalUriSchemeEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2LaunchingExternalUriSchemeEventHandler = {0x74f712e0, 0x8165, 0x43a9, {0xa1, 0x3f, 0x0c, 0xce, 0x59, 0x7e, 0x75, 0xdf}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("74f712e0-8165-43a9-a13f-0cce597e75df")
+ ICoreWebView2LaunchingExternalUriSchemeEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2LaunchingExternalUriSchemeEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2LaunchingExternalUriSchemeEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2LaunchingExternalUriSchemeEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2LaunchingExternalUriSchemeEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2LaunchingExternalUriSchemeEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2LaunchingExternalUriSchemeEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2LaunchingExternalUriSchemeEventHandlerVtbl;
+
+ interface ICoreWebView2LaunchingExternalUriSchemeEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2LaunchingExternalUriSchemeEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2LaunchingExternalUriSchemeEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_19_INTERFACE_DEFINED__
+#define __ICoreWebView2_19_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_19 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_19 = {0x6921f954, 0x79b0, 0x437f, {0xa9, 0x97, 0xc8, 0x58, 0x11, 0x89, 0x7c, 0x68}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6921f954-79b0-437f-a997-c85811897c68")
+ ICoreWebView2_19 : public ICoreWebView2_18
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MemoryUsageTargetLevel(
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_MemoryUsageTargetLevel(
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_19Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_19 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_19 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_19 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_19 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_19 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_19 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_19 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_19 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_19 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_19 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_19 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_19 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_19 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_19 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_19 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ END_INTERFACE
+ } ICoreWebView2_19Vtbl;
+
+ interface ICoreWebView2_19
+ {
+ CONST_VTBL struct ICoreWebView2_19Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_19_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_19_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_19_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_19_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_19_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_19_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_19_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_19_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_19_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_19_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_19_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_19_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_19_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_19_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_19_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_19_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_19_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_19_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_19_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_19_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_19_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_19_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_19_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_19_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_19_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_19_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_19_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_19_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_19_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_19_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_19_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_19_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_19_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_19_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_19_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_19_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_19_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_19_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_19_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_19_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_19_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_19_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_19_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_19_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_19_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_19_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_19_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_19_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_19_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_19_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_19_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_19_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_19_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_19_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_19_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_19_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_19_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_19_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_19_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_19_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_19_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_19_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_19_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_19_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_19_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_19_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_19_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_19_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_19_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_19_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_19_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_19_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_19_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_19_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_19_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_19_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_19_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_19_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_19_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_19_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_19_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_19_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_19_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_19_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_19_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_19_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_19_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_19_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_19_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_19_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_19_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_19_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_19_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_19_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_19_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_20_INTERFACE_DEFINED__
+#define __ICoreWebView2_20_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_20 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_20 = {0xb4bc1926, 0x7305, 0x11ee, {0xb9, 0x62, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b4bc1926-7305-11ee-b962-0242ac120002")
+ ICoreWebView2_20 : public ICoreWebView2_19
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FrameId(
+ /* [retval][out] */ UINT32 * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_20Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_20 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_20 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_20 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_20 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_20 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_20 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_20 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_20 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_20 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_20 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_20 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_20 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_20 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_20 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_20 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ END_INTERFACE
+ } ICoreWebView2_20Vtbl;
+
+ interface ICoreWebView2_20
+ {
+ CONST_VTBL struct ICoreWebView2_20Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_20_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_20_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_20_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_20_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_20_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_20_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_20_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_20_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_20_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_20_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_20_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_20_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_20_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_20_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_20_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_20_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_20_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_20_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_20_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_20_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_20_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_20_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_20_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_20_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_20_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_20_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_20_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_20_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_20_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_20_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_20_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_20_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_20_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_20_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_20_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_20_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_20_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_20_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_20_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_20_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_20_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_20_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_20_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_20_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_20_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_20_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_20_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_20_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_20_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_20_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_20_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_20_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_20_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_20_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_20_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_20_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_20_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_20_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_20_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_20_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_20_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_20_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_20_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_20_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_20_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_20_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_20_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_20_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_20_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_20_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_20_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_20_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_20_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_20_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_20_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_20_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_20_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_20_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_20_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_20_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_20_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_20_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_20_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_20_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_20_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_20_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_20_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_20_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_20_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_20_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_20_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_20_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_20_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_20_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_20_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_20_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_21_INTERFACE_DEFINED__
+#define __ICoreWebView2_21_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_21 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_21 = {0xc4980dea, 0x587b, 0x43b9, {0x81, 0x43, 0x3e, 0xf3, 0xbf, 0x55, 0x2d, 0x95}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c4980dea-587b-43b9-8143-3ef3bf552d95")
+ ICoreWebView2_21 : public ICoreWebView2_20
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ExecuteScriptWithResult(
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_21Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_21 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_21 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_21 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_21 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_21 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_21 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_21 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_21 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_21 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_21 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_21 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_21 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_21 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_21 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_21, ExecuteScriptWithResult)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScriptWithResult)(
+ ICoreWebView2_21 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2_21Vtbl;
+
+ interface ICoreWebView2_21
+ {
+ CONST_VTBL struct ICoreWebView2_21Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_21_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_21_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_21_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_21_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_21_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_21_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_21_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_21_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_21_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_21_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_21_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_21_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_21_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_21_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_21_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_21_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_21_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_21_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_21_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_21_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_21_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_21_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_21_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_21_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_21_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_21_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_21_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_21_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_21_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_21_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_21_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_21_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_21_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_21_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_21_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_21_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_21_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_21_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_21_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_21_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_21_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_21_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_21_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_21_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_21_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_21_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_21_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_21_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_21_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_21_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_21_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_21_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_21_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_21_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_21_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_21_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_21_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_21_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_21_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_21_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_21_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_21_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_21_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_21_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_21_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_21_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_21_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_21_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_21_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_21_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_21_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_21_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_21_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_21_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_21_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_21_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_21_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_21_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_21_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_21_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_21_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_21_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_21_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_21_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_21_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_21_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_21_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_21_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_21_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_21_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_21_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_21_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_21_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_21_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_21_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2_21_ExecuteScriptWithResult(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScriptWithResult(This, javaScript, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_21_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ExecuteScriptWithResultCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ExecuteScriptWithResultCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ExecuteScriptWithResultCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ExecuteScriptWithResultCompletedHandler = {0x1bb5317b, 0x8238, 0x4c67, {0xa7, 0xff, 0xba, 0xf6, 0x55, 0x8f, 0x28, 0x9d}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1bb5317b-8238-4c67-a7ff-baf6558f289d")
+ ICoreWebView2ExecuteScriptWithResultCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2ExecuteScriptResult * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ExecuteScriptWithResultCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ExecuteScriptWithResultCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ExecuteScriptWithResultCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ExecuteScriptWithResultCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ExecuteScriptWithResultCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ExecuteScriptWithResultCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2ExecuteScriptResult *result);
+
+ END_INTERFACE
+ } ICoreWebView2ExecuteScriptWithResultCompletedHandlerVtbl;
+
+ interface ICoreWebView2ExecuteScriptWithResultCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2ExecuteScriptWithResultCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ExecuteScriptWithResultCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ExecuteScriptWithResultCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ExecuteScriptWithResultCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ExecuteScriptWithResultCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ExecuteScriptWithResultCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_22_INTERFACE_DEFINED__
+#define __ICoreWebView2_22_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_22 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_22 = {0xdb75dfc7, 0xa857, 0x4632, {0xa3, 0x98, 0x69, 0x69, 0xdd, 0xe2, 0x6c, 0x0a}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("db75dfc7-a857-4632-a398-6969dde26c0a")
+ ICoreWebView2_22 : public ICoreWebView2_21
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AddWebResourceRequestedFilterWithRequestSourceKinds(
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveWebResourceRequestedFilterWithRequestSourceKinds(
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_22Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_22 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_22 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_22 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_22 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_22 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_22 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_22 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_22 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_22 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_22 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_22 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_22 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_22 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_22 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_21, ExecuteScriptWithResult)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScriptWithResult)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, AddWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, RemoveWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_22 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ END_INTERFACE
+ } ICoreWebView2_22Vtbl;
+
+ interface ICoreWebView2_22
+ {
+ CONST_VTBL struct ICoreWebView2_22Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_22_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_22_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_22_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_22_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_22_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_22_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_22_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_22_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_22_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_22_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_22_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_22_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_22_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_22_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_22_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_22_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_22_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_22_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_22_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_22_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_22_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_22_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_22_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_22_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_22_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_22_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_22_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_22_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_22_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_22_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_22_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_22_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_22_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_22_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_22_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_22_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_22_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_22_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_22_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_22_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_22_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_22_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_22_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_22_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_22_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_22_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_22_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_22_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_22_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_22_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_22_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_22_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_22_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_22_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_22_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_22_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_22_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_22_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_22_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_22_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_22_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_22_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_22_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_22_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_22_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_22_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_22_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_22_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_22_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_22_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_22_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_22_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_22_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_22_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_22_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_22_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_22_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_22_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_22_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_22_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_22_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_22_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_22_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_22_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_22_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_22_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_22_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_22_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_22_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_22_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_22_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_22_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_22_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_22_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_22_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2_22_ExecuteScriptWithResult(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScriptWithResult(This, javaScript, handler))
+
+#define ICoreWebView2_22_AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_22_RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_22_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_23_INTERFACE_DEFINED__
+#define __ICoreWebView2_23_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_23 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_23 = {0x508f0db5, 0x90c4, 0x5872, {0x90, 0xa7, 0x26, 0x7a, 0x91, 0x37, 0x75, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("508f0db5-90c4-5872-90a7-267a91377502")
+ ICoreWebView2_23 : public ICoreWebView2_22
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PostWebMessageAsJsonWithAdditionalObjects(
+ /* [in] */ LPCWSTR webMessageAsJson,
+ /* [in] */ ICoreWebView2ObjectCollectionView * additionalObjects) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_23Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_23 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_23 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_23 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_23 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_23 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_23 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_23 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_23 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_23 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_23 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_23 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_23 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_23 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_23 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_21, ExecuteScriptWithResult)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScriptWithResult)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, AddWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, RemoveWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_23, PostWebMessageAsJsonWithAdditionalObjects)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJsonWithAdditionalObjects)(
+ ICoreWebView2_23 *This,
+ /* [in] */ LPCWSTR webMessageAsJson,
+ /* [in] */ ICoreWebView2ObjectCollectionView *additionalObjects);
+
+ END_INTERFACE
+ } ICoreWebView2_23Vtbl;
+
+ interface ICoreWebView2_23
+ {
+ CONST_VTBL struct ICoreWebView2_23Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_23_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_23_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_23_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_23_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_23_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_23_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_23_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_23_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_23_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_23_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_23_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_23_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_23_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_23_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_23_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_23_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_23_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_23_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_23_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_23_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_23_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_23_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_23_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_23_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_23_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_23_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_23_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_23_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_23_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_23_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_23_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_23_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_23_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_23_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_23_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_23_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_23_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_23_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_23_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_23_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_23_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_23_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_23_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_23_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_23_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_23_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_23_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_23_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_23_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_23_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_23_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_23_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_23_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_23_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_23_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_23_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_23_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_23_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_23_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_23_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_23_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_23_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_23_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_23_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_23_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_23_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_23_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_23_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_23_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_23_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_23_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_23_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_23_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_23_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_23_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_23_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_23_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_23_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_23_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_23_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_23_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_23_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_23_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_23_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_23_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_23_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_23_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_23_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_23_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_23_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_23_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_23_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_23_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_23_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_23_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2_23_ExecuteScriptWithResult(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScriptWithResult(This, javaScript, handler))
+
+#define ICoreWebView2_23_AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_23_RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_23_PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects) \
+ ((This)->lpVtbl->PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_23_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_24_INTERFACE_DEFINED__
+#define __ICoreWebView2_24_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_24 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_24 = {0x39a7ad55, 0x4287, 0x5cc1, {0x88, 0xa1, 0xc6, 0xf4, 0x58, 0x59, 0x38, 0x24}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("39a7ad55-4287-5cc1-88a1-c6f458593824")
+ ICoreWebView2_24 : public ICoreWebView2_23
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_NotificationReceived(
+ /* [in] */ ICoreWebView2NotificationReceivedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NotificationReceived(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_24Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_24 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_24 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_24 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_24 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_24 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_24 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_24 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_24 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_24 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_24 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_24 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_24 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_21, ExecuteScriptWithResult)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScriptWithResult)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, AddWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, RemoveWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_23, PostWebMessageAsJsonWithAdditionalObjects)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJsonWithAdditionalObjects)(
+ ICoreWebView2_24 *This,
+ /* [in] */ LPCWSTR webMessageAsJson,
+ /* [in] */ ICoreWebView2ObjectCollectionView *additionalObjects);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, add_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *add_NotificationReceived)(
+ ICoreWebView2_24 *This,
+ /* [in] */ ICoreWebView2NotificationReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, remove_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_NotificationReceived)(
+ ICoreWebView2_24 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_24Vtbl;
+
+ interface ICoreWebView2_24
+ {
+ CONST_VTBL struct ICoreWebView2_24Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_24_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_24_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_24_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_24_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_24_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_24_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_24_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_24_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_24_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_24_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_24_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_24_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_24_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_24_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_24_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_24_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_24_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_24_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_24_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_24_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_24_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_24_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_24_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_24_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_24_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_24_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_24_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_24_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_24_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_24_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_24_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_24_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_24_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_24_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_24_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_24_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_24_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_24_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_24_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_24_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_24_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_24_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_24_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_24_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_24_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_24_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_24_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_24_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_24_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_24_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_24_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_24_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_24_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_24_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_24_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_24_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_24_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_24_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_24_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_24_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_24_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_24_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_24_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_24_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_24_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_24_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_24_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_24_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_24_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_24_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_24_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_24_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_24_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_24_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_24_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_24_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_24_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_24_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_24_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_24_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_24_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_24_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_24_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_24_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_24_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_24_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_24_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_24_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_24_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_24_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_24_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_24_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_24_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_24_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2_24_ExecuteScriptWithResult(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScriptWithResult(This, javaScript, handler))
+
+#define ICoreWebView2_24_AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_24_RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_24_PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects) \
+ ((This)->lpVtbl->PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects))
+
+#define ICoreWebView2_24_add_NotificationReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NotificationReceived(This, eventHandler, token))
+
+#define ICoreWebView2_24_remove_NotificationReceived(This, token) \
+ ((This)->lpVtbl->remove_NotificationReceived(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2_24_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NotificationReceivedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2NotificationReceivedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NotificationReceivedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NotificationReceivedEventHandler = {0x89c5d598, 0x8788, 0x423b, {0xbe, 0x97, 0xe6, 0xe0, 0x1c, 0x0f, 0x9e, 0xe3}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("89c5d598-8788-423b-be97-e6e01c0f9ee3")
+ ICoreWebView2NotificationReceivedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2NotificationReceivedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NotificationReceivedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NotificationReceivedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NotificationReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NotificationReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NotificationReceivedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2NotificationReceivedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2NotificationReceivedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2NotificationReceivedEventHandlerVtbl;
+
+ interface ICoreWebView2NotificationReceivedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2NotificationReceivedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NotificationReceivedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NotificationReceivedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NotificationReceivedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NotificationReceivedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NotificationReceivedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_25_INTERFACE_DEFINED__
+#define __ICoreWebView2_25_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_25 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_25 = {0xb5a86092, 0xdf50, 0x5b4f, {0xa1, 0x7b, 0x6c, 0x8f, 0x8b, 0x40, 0xb7, 0x71}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b5a86092-df50-5b4f-a17b-6c8f8b40b771")
+ ICoreWebView2_25 : public ICoreWebView2_24
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_SaveAsUIShowing(
+ /* [in] */ ICoreWebView2SaveAsUIShowingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_SaveAsUIShowing(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShowSaveAsUI(
+ /* [in] */ ICoreWebView2ShowSaveAsUICompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_25Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_25 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_25 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_25 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_25 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_25 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_25 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_25 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_25 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_25 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_25 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_25 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_25 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_21, ExecuteScriptWithResult)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScriptWithResult)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, AddWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, RemoveWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_23, PostWebMessageAsJsonWithAdditionalObjects)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJsonWithAdditionalObjects)(
+ ICoreWebView2_25 *This,
+ /* [in] */ LPCWSTR webMessageAsJson,
+ /* [in] */ ICoreWebView2ObjectCollectionView *additionalObjects);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, add_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *add_NotificationReceived)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2NotificationReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, remove_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_NotificationReceived)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, add_SaveAsUIShowing)
+ HRESULT(STDMETHODCALLTYPE *add_SaveAsUIShowing)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2SaveAsUIShowingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, remove_SaveAsUIShowing)
+ HRESULT(STDMETHODCALLTYPE *remove_SaveAsUIShowing)(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, ShowSaveAsUI)
+ HRESULT(STDMETHODCALLTYPE *ShowSaveAsUI)(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ShowSaveAsUICompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2_25Vtbl;
+
+ interface ICoreWebView2_25
+ {
+ CONST_VTBL struct ICoreWebView2_25Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_25_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_25_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_25_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_25_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_25_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_25_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_25_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_25_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_25_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_25_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_25_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_25_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_25_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_25_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_25_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_25_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_25_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_25_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_25_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_25_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_25_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_25_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_25_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_25_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_25_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_25_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_25_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_25_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_25_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_25_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_25_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_25_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_25_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_25_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_25_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_25_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_25_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_25_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_25_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_25_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_25_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_25_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_25_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_25_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_25_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_25_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_25_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_25_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_25_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_25_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_25_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_25_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_25_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_25_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_25_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_25_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_25_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_25_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_25_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_25_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_25_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_25_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_25_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_25_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_25_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_25_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_25_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_25_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_25_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_25_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_25_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_25_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_25_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_25_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_25_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_25_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_25_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_25_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_25_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_25_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_25_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_25_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_25_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_25_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_25_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_25_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_25_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_25_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_25_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_25_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_25_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_25_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_25_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_25_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2_25_ExecuteScriptWithResult(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScriptWithResult(This, javaScript, handler))
+
+#define ICoreWebView2_25_AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_25_RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_25_PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects) \
+ ((This)->lpVtbl->PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects))
+
+#define ICoreWebView2_25_add_NotificationReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NotificationReceived(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_NotificationReceived(This, token) \
+ ((This)->lpVtbl->remove_NotificationReceived(This, token))
+
+#define ICoreWebView2_25_add_SaveAsUIShowing(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SaveAsUIShowing(This, eventHandler, token))
+
+#define ICoreWebView2_25_remove_SaveAsUIShowing(This, token) \
+ ((This)->lpVtbl->remove_SaveAsUIShowing(This, token))
+
+#define ICoreWebView2_25_ShowSaveAsUI(This, handler) \
+ ((This)->lpVtbl->ShowSaveAsUI(This, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+ HRESULT STDMETHODCALLTYPE ICoreWebView2_25_add_SaveAsUIShowing_Proxy(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2SaveAsUIShowingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ void __RPC_STUB ICoreWebView2_25_add_SaveAsUIShowing_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+ HRESULT STDMETHODCALLTYPE ICoreWebView2_25_remove_SaveAsUIShowing_Proxy(
+ ICoreWebView2_25 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ void __RPC_STUB ICoreWebView2_25_remove_SaveAsUIShowing_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+ HRESULT STDMETHODCALLTYPE ICoreWebView2_25_ShowSaveAsUI_Proxy(
+ ICoreWebView2_25 *This,
+ /* [in] */ ICoreWebView2ShowSaveAsUICompletedHandler *handler);
+
+ void __RPC_STUB ICoreWebView2_25_ShowSaveAsUI_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+#endif /* __ICoreWebView2_25_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveAsUIShowingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2SaveAsUIShowingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SaveAsUIShowingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SaveAsUIShowingEventHandler = {0x6baa177e, 0x3a2e, 0x5ccf, {0x9a, 0x13, 0xfa, 0xd6, 0x76, 0xcd, 0x05, 0x22}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6baa177e-3a2e-5ccf-9a13-fad676cd0522")
+ ICoreWebView2SaveAsUIShowingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2SaveAsUIShowingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SaveAsUIShowingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SaveAsUIShowingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SaveAsUIShowingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SaveAsUIShowingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2SaveAsUIShowingEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2SaveAsUIShowingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2SaveAsUIShowingEventHandlerVtbl;
+
+ interface ICoreWebView2SaveAsUIShowingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2SaveAsUIShowingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SaveAsUIShowingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SaveAsUIShowingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SaveAsUIShowingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SaveAsUIShowingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SaveAsUIShowingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ShowSaveAsUICompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ShowSaveAsUICompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ShowSaveAsUICompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ShowSaveAsUICompletedHandler = {0xe24b07e3, 0x8169, 0x5c34, {0x99, 0x4a, 0x7f, 0x64, 0x78, 0x94, 0x6a, 0x3c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e24b07e3-8169-5c34-994a-7f6478946a3c")
+ ICoreWebView2ShowSaveAsUICompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ COREWEBVIEW2_SAVE_AS_UI_RESULT result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ShowSaveAsUICompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ShowSaveAsUICompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ShowSaveAsUICompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ShowSaveAsUICompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ShowSaveAsUICompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ShowSaveAsUICompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ COREWEBVIEW2_SAVE_AS_UI_RESULT result);
+
+ END_INTERFACE
+ } ICoreWebView2ShowSaveAsUICompletedHandlerVtbl;
+
+ interface ICoreWebView2ShowSaveAsUICompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2ShowSaveAsUICompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ShowSaveAsUICompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ShowSaveAsUICompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ShowSaveAsUICompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ShowSaveAsUICompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ShowSaveAsUICompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_26_INTERFACE_DEFINED__
+#define __ICoreWebView2_26_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_26 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_26 = {0x806268b8, 0xf897, 0x5685, {0x88, 0xe5, 0xc4, 0x5f, 0xca, 0x0b, 0x1a, 0x48}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("806268b8-f897-5685-88e5-c45fca0b1a48")
+ ICoreWebView2_26 : public ICoreWebView2_25
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_SaveFileSecurityCheckStarting(
+ /* [in] */ ICoreWebView2SaveFileSecurityCheckStartingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_SaveFileSecurityCheckStarting(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_26Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_26 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_26 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_26 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_26 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_26 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_26 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_26 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_26 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_26 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_26 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_26 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_26 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_21, ExecuteScriptWithResult)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScriptWithResult)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, AddWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, RemoveWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_23, PostWebMessageAsJsonWithAdditionalObjects)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJsonWithAdditionalObjects)(
+ ICoreWebView2_26 *This,
+ /* [in] */ LPCWSTR webMessageAsJson,
+ /* [in] */ ICoreWebView2ObjectCollectionView *additionalObjects);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, add_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *add_NotificationReceived)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2NotificationReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, remove_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_NotificationReceived)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, add_SaveAsUIShowing)
+ HRESULT(STDMETHODCALLTYPE *add_SaveAsUIShowing)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2SaveAsUIShowingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, remove_SaveAsUIShowing)
+ HRESULT(STDMETHODCALLTYPE *remove_SaveAsUIShowing)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, ShowSaveAsUI)
+ HRESULT(STDMETHODCALLTYPE *ShowSaveAsUI)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2ShowSaveAsUICompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_26, add_SaveFileSecurityCheckStarting)
+ HRESULT(STDMETHODCALLTYPE *add_SaveFileSecurityCheckStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2SaveFileSecurityCheckStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_26, remove_SaveFileSecurityCheckStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_SaveFileSecurityCheckStarting)(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_26Vtbl;
+
+ interface ICoreWebView2_26
+ {
+ CONST_VTBL struct ICoreWebView2_26Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_26_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_26_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_26_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_26_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_26_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_26_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_26_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_26_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_26_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_26_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_26_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_26_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_26_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_26_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_26_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_26_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_26_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_26_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_26_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_26_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_26_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_26_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_26_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_26_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_26_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_26_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_26_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_26_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_26_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_26_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_26_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_26_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_26_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_26_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_26_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_26_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_26_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_26_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_26_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_26_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_26_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_26_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_26_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_26_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_26_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_26_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_26_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_26_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_26_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_26_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_26_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_26_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_26_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_26_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_26_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_26_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_26_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_26_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_26_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_26_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_26_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_26_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_26_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_26_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_26_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_26_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_26_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_26_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_26_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_26_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_26_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_26_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_26_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_26_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_26_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_26_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_26_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_26_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_26_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_26_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_26_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_26_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_26_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_26_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_26_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_26_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_26_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_26_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_26_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_26_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_26_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_26_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_26_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_26_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2_26_ExecuteScriptWithResult(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScriptWithResult(This, javaScript, handler))
+
+#define ICoreWebView2_26_AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_26_RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_26_PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects) \
+ ((This)->lpVtbl->PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects))
+
+#define ICoreWebView2_26_add_NotificationReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NotificationReceived(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_NotificationReceived(This, token) \
+ ((This)->lpVtbl->remove_NotificationReceived(This, token))
+
+#define ICoreWebView2_26_add_SaveAsUIShowing(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SaveAsUIShowing(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_SaveAsUIShowing(This, token) \
+ ((This)->lpVtbl->remove_SaveAsUIShowing(This, token))
+
+#define ICoreWebView2_26_ShowSaveAsUI(This, handler) \
+ ((This)->lpVtbl->ShowSaveAsUI(This, handler))
+
+#define ICoreWebView2_26_add_SaveFileSecurityCheckStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SaveFileSecurityCheckStarting(This, eventHandler, token))
+
+#define ICoreWebView2_26_remove_SaveFileSecurityCheckStarting(This, token) \
+ ((This)->lpVtbl->remove_SaveFileSecurityCheckStarting(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+ HRESULT STDMETHODCALLTYPE ICoreWebView2_26_add_SaveFileSecurityCheckStarting_Proxy(
+ ICoreWebView2_26 *This,
+ /* [in] */ ICoreWebView2SaveFileSecurityCheckStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ void __RPC_STUB ICoreWebView2_26_add_SaveFileSecurityCheckStarting_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+ HRESULT STDMETHODCALLTYPE ICoreWebView2_26_remove_SaveFileSecurityCheckStarting_Proxy(
+ ICoreWebView2_26 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ void __RPC_STUB ICoreWebView2_26_remove_SaveFileSecurityCheckStarting_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+#endif /* __ICoreWebView2_26_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveFileSecurityCheckStartingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2SaveFileSecurityCheckStartingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SaveFileSecurityCheckStartingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SaveFileSecurityCheckStartingEventHandler = {0x7899576c, 0x19e3, 0x57c8, {0xb7, 0xd1, 0x55, 0x80, 0x82, 0x92, 0xde, 0x57}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7899576c-19e3-57c8-b7d1-55808292de57")
+ ICoreWebView2SaveFileSecurityCheckStartingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2SaveFileSecurityCheckStartingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SaveFileSecurityCheckStartingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2SaveFileSecurityCheckStartingEventHandlerVtbl;
+
+ interface ICoreWebView2SaveFileSecurityCheckStartingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2SaveFileSecurityCheckStartingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SaveFileSecurityCheckStartingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2_27_INTERFACE_DEFINED__
+#define __ICoreWebView2_27_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2_27 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2_27 = {0x00fbe33b, 0x8c07, 0x517c, {0xaa, 0x23, 0x0d, 0xdd, 0x4b, 0x5f, 0x6f, 0xa0}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("00fbe33b-8c07-517c-aa23-0ddd4b5f6fa0")
+ ICoreWebView2_27 : public ICoreWebView2_26
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_ScreenCaptureStarting(
+ /* [in] */ ICoreWebView2ScreenCaptureStartingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ScreenCaptureStarting(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2_27Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2_27 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Settings)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Settings)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ ICoreWebView2Settings **settings);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Navigate)
+ HRESULT(STDMETHODCALLTYPE *Navigate)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, NavigateToString)
+ HRESULT(STDMETHODCALLTYPE *NavigateToString)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR htmlContent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *add_SourceChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2SourceChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_SourceChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_SourceChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *add_HistoryChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2HistoryChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_HistoryChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_HistoryChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2NavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_FrameNavigationCompleted)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2NavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_FrameNavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameNavigationCompleted)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *add_ScriptDialogOpening)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ScriptDialogOpeningEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ScriptDialogOpening)
+ HRESULT(STDMETHODCALLTYPE *remove_ScriptDialogOpening)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2PermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessFailed)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ProcessFailedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ProcessFailed)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessFailed)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *AddScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveScriptToExecuteOnDocumentCreated)
+ HRESULT(STDMETHODCALLTYPE *RemoveScriptToExecuteOnDocumentCreated)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CapturePreview)
+ HRESULT(STDMETHODCALLTYPE *CapturePreview)(
+ ICoreWebView2_27 *This,
+ /* [in] */ COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT imageFormat,
+ /* [in] */ IStream *imageStream,
+ /* [in] */ ICoreWebView2CapturePreviewCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Reload)
+ HRESULT(STDMETHODCALLTYPE *Reload)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, CallDevToolsProtocolMethod)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethod)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoBack)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoBack)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ BOOL *canGoBack);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_CanGoForward)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanGoForward)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ BOOL *canGoForward);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoBack)
+ HRESULT(STDMETHODCALLTYPE *GoBack)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GoForward)
+ HRESULT(STDMETHODCALLTYPE *GoForward)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, GetDevToolsProtocolEventReceiver)
+ HRESULT(STDMETHODCALLTYPE *GetDevToolsProtocolEventReceiver)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR eventName,
+ /* [retval][out] */ ICoreWebView2DevToolsProtocolEventReceiver **receiver);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, Stop)
+ HRESULT(STDMETHODCALLTYPE *Stop)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *add_NewWindowRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2NewWindowRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_NewWindowRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_NewWindowRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_DocumentTitleChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2DocumentTitleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_DocumentTitleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_DocumentTitleChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_DocumentTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentTitle)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ LPWSTR *title);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddHostObjectToScript)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScript)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, OpenDevToolsWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenDevToolsWindow)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ContainsFullScreenElementChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ContainsFullScreenElementChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_ContainsFullScreenElementChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ContainsFullScreenElementChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, get_ContainsFullScreenElement)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContainsFullScreenElement)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ BOOL *containsFullScreenElement);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2WebResourceRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WebResourceRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, AddWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilter)(
+ ICoreWebView2_27 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, RemoveWebResourceRequestedFilter)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilter)(
+ ICoreWebView2_27 *This,
+ /* [in] */ const LPCWSTR uri,
+ /* [in] */ const COREWEBVIEW2_WEB_RESOURCE_CONTEXT resourceContext);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, add_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_WindowCloseRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2WindowCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2, remove_WindowCloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_WindowCloseRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebResourceResponseReceived)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2WebResourceResponseReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_WebResourceResponseReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebResourceResponseReceived)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, NavigateWithWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *NavigateWithWebResourceRequest)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2WebResourceRequest *request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **cookieManager);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_2, get_Environment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Environment)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ ICoreWebView2Environment **environment);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, TrySuspend)
+ HRESULT(STDMETHODCALLTYPE *TrySuspend)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2TrySuspendCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, get_IsSuspended)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuspended)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ BOOL *isSuspended);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, SetVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *SetVirtualHostNameToFolderMapping)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR hostName,
+ /* [in] */ LPCWSTR folderPath,
+ /* [in] */ COREWEBVIEW2_HOST_RESOURCE_ACCESS_KIND accessKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_3, ClearVirtualHostNameToFolderMapping)
+ HRESULT(STDMETHODCALLTYPE *ClearVirtualHostNameToFolderMapping)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR hostName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2FrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, add_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *add_DownloadStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2DownloadStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_4, remove_DownloadStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_DownloadStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, add_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ClientCertificateRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ClientCertificateRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_5, remove_ClientCertificateRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ClientCertificateRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_6, OpenTaskManagerWindow)
+ HRESULT(STDMETHODCALLTYPE *OpenTaskManagerWindow)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_7, PrintToPdf)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdf)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR ResultFilePath,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsMutedChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2IsMutedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsMutedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsMutedChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsMuted)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsMuted)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, put_IsMuted)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsMuted)(
+ ICoreWebView2_27 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, add_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2IsDocumentPlayingAudioChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, remove_IsDocumentPlayingAudioChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDocumentPlayingAudioChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_8, get_IsDocumentPlayingAudio)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDocumentPlayingAudio)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, add_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *add_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2IsDefaultDownloadDialogOpenChangedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, remove_IsDefaultDownloadDialogOpenChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_IsDefaultDownloadDialogOpenChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_IsDefaultDownloadDialogOpen)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsDefaultDownloadDialogOpen)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, OpenDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *OpenDefaultDownloadDialog)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, CloseDefaultDownloadDialog)
+ HRESULT(STDMETHODCALLTYPE *CloseDefaultDownloadDialog)(
+ ICoreWebView2_27 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogCornerAlignment)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogCornerAlignment)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogCornerAlignment)(
+ ICoreWebView2_27 *This,
+ /* [in] */ COREWEBVIEW2_DEFAULT_DOWNLOAD_DIALOG_CORNER_ALIGNMENT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, get_DefaultDownloadDialogMargin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadDialogMargin)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_9, put_DefaultDownloadDialogMargin)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadDialogMargin)(
+ ICoreWebView2_27 *This,
+ /* [in] */ POINT value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, add_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *add_BasicAuthenticationRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2BasicAuthenticationRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_10, remove_BasicAuthenticationRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_BasicAuthenticationRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, CallDevToolsProtocolMethodForSession)
+ HRESULT(STDMETHODCALLTYPE *CallDevToolsProtocolMethodForSession)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR sessionId,
+ /* [in] */ LPCWSTR methodName,
+ /* [in] */ LPCWSTR parametersAsJson,
+ /* [in] */ ICoreWebView2CallDevToolsProtocolMethodCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, add_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *add_ContextMenuRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ContextMenuRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_11, remove_ContextMenuRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_ContextMenuRequested)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, add_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StatusBarTextChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2StatusBarTextChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, remove_StatusBarTextChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StatusBarTextChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_12, get_StatusBarText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusBarText)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_13, get_Profile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Profile)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ ICoreWebView2Profile **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, add_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *add_ServerCertificateErrorDetected)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ServerCertificateErrorDetectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, remove_ServerCertificateErrorDetected)
+ HRESULT(STDMETHODCALLTYPE *remove_ServerCertificateErrorDetected)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_14, ClearServerCertificateErrorActions)
+ HRESULT(STDMETHODCALLTYPE *ClearServerCertificateErrorActions)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ClearServerCertificateErrorActionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, add_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *add_FaviconChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2FaviconChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, remove_FaviconChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_FaviconChanged)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, get_FaviconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FaviconUri)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_15, GetFavicon)
+ HRESULT(STDMETHODCALLTYPE *GetFavicon)(
+ ICoreWebView2_27 *This,
+ /* [in] */ COREWEBVIEW2_FAVICON_IMAGE_FORMAT format,
+ /* [in] */ ICoreWebView2GetFaviconCompletedHandler *completedHandler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, Print)
+ HRESULT(STDMETHODCALLTYPE *Print)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, ShowPrintUI)
+ HRESULT(STDMETHODCALLTYPE *ShowPrintUI)(
+ ICoreWebView2_27 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DIALOG_KIND printDialogKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_16, PrintToPdfStream)
+ HRESULT(STDMETHODCALLTYPE *PrintToPdfStream)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2PrintSettings *printSettings,
+ /* [in] */ ICoreWebView2PrintToPdfStreamCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_17, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, add_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *add_LaunchingExternalUriScheme)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2LaunchingExternalUriSchemeEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_18, remove_LaunchingExternalUriScheme)
+ HRESULT(STDMETHODCALLTYPE *remove_LaunchingExternalUriScheme)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, get_MemoryUsageTargetLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MemoryUsageTargetLevel)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_19, put_MemoryUsageTargetLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MemoryUsageTargetLevel)(
+ ICoreWebView2_27 *This,
+ /* [in] */ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_20, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2_27 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_21, ExecuteScriptWithResult)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScriptWithResult)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptWithResultCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, AddWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *AddWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_22, RemoveWebResourceRequestedFilterWithRequestSourceKinds)
+ HRESULT(STDMETHODCALLTYPE *RemoveWebResourceRequestedFilterWithRequestSourceKinds)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT ResourceContext,
+ /* [in] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS requestSourceKinds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_23, PostWebMessageAsJsonWithAdditionalObjects)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJsonWithAdditionalObjects)(
+ ICoreWebView2_27 *This,
+ /* [in] */ LPCWSTR webMessageAsJson,
+ /* [in] */ ICoreWebView2ObjectCollectionView *additionalObjects);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, add_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *add_NotificationReceived)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2NotificationReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_24, remove_NotificationReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_NotificationReceived)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, add_SaveAsUIShowing)
+ HRESULT(STDMETHODCALLTYPE *add_SaveAsUIShowing)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2SaveAsUIShowingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, remove_SaveAsUIShowing)
+ HRESULT(STDMETHODCALLTYPE *remove_SaveAsUIShowing)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_25, ShowSaveAsUI)
+ HRESULT(STDMETHODCALLTYPE *ShowSaveAsUI)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ShowSaveAsUICompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_26, add_SaveFileSecurityCheckStarting)
+ HRESULT(STDMETHODCALLTYPE *add_SaveFileSecurityCheckStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2SaveFileSecurityCheckStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_26, remove_SaveFileSecurityCheckStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_SaveFileSecurityCheckStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_27, add_ScreenCaptureStarting)
+ HRESULT(STDMETHODCALLTYPE *add_ScreenCaptureStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ScreenCaptureStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2_27, remove_ScreenCaptureStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_ScreenCaptureStarting)(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2_27Vtbl;
+
+ interface ICoreWebView2_27
+ {
+ CONST_VTBL struct ICoreWebView2_27Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2_27_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2_27_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2_27_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2_27_get_Settings(This, settings) \
+ ((This)->lpVtbl->get_Settings(This, settings))
+
+#define ICoreWebView2_27_get_Source(This, uri) \
+ ((This)->lpVtbl->get_Source(This, uri))
+
+#define ICoreWebView2_27_Navigate(This, uri) \
+ ((This)->lpVtbl->Navigate(This, uri))
+
+#define ICoreWebView2_27_NavigateToString(This, htmlContent) \
+ ((This)->lpVtbl->NavigateToString(This, htmlContent))
+
+#define ICoreWebView2_27_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2_27_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2_27_add_SourceChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SourceChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_SourceChanged(This, token) \
+ ((This)->lpVtbl->remove_SourceChanged(This, token))
+
+#define ICoreWebView2_27_add_HistoryChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_HistoryChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_HistoryChanged(This, token) \
+ ((This)->lpVtbl->remove_HistoryChanged(This, token))
+
+#define ICoreWebView2_27_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2_27_add_FrameNavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_FrameNavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationStarting(This, token))
+
+#define ICoreWebView2_27_add_FrameNavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameNavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_FrameNavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_FrameNavigationCompleted(This, token))
+
+#define ICoreWebView2_27_add_ScriptDialogOpening(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScriptDialogOpening(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ScriptDialogOpening(This, token) \
+ ((This)->lpVtbl->remove_ScriptDialogOpening(This, token))
+
+#define ICoreWebView2_27_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2_27_add_ProcessFailed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessFailed(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ProcessFailed(This, token) \
+ ((This)->lpVtbl->remove_ProcessFailed(This, token))
+
+#define ICoreWebView2_27_AddScriptToExecuteOnDocumentCreated(This, javaScript, handler) \
+ ((This)->lpVtbl->AddScriptToExecuteOnDocumentCreated(This, javaScript, handler))
+
+#define ICoreWebView2_27_RemoveScriptToExecuteOnDocumentCreated(This, id) \
+ ((This)->lpVtbl->RemoveScriptToExecuteOnDocumentCreated(This, id))
+
+#define ICoreWebView2_27_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2_27_CapturePreview(This, imageFormat, imageStream, handler) \
+ ((This)->lpVtbl->CapturePreview(This, imageFormat, imageStream, handler))
+
+#define ICoreWebView2_27_Reload(This) \
+ ((This)->lpVtbl->Reload(This))
+
+#define ICoreWebView2_27_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2_27_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2_27_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2_27_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2_27_CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethod(This, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_27_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#define ICoreWebView2_27_get_CanGoBack(This, canGoBack) \
+ ((This)->lpVtbl->get_CanGoBack(This, canGoBack))
+
+#define ICoreWebView2_27_get_CanGoForward(This, canGoForward) \
+ ((This)->lpVtbl->get_CanGoForward(This, canGoForward))
+
+#define ICoreWebView2_27_GoBack(This) \
+ ((This)->lpVtbl->GoBack(This))
+
+#define ICoreWebView2_27_GoForward(This) \
+ ((This)->lpVtbl->GoForward(This))
+
+#define ICoreWebView2_27_GetDevToolsProtocolEventReceiver(This, eventName, receiver) \
+ ((This)->lpVtbl->GetDevToolsProtocolEventReceiver(This, eventName, receiver))
+
+#define ICoreWebView2_27_Stop(This) \
+ ((This)->lpVtbl->Stop(This))
+
+#define ICoreWebView2_27_add_NewWindowRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewWindowRequested(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_NewWindowRequested(This, token) \
+ ((This)->lpVtbl->remove_NewWindowRequested(This, token))
+
+#define ICoreWebView2_27_add_DocumentTitleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DocumentTitleChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_DocumentTitleChanged(This, token) \
+ ((This)->lpVtbl->remove_DocumentTitleChanged(This, token))
+
+#define ICoreWebView2_27_get_DocumentTitle(This, title) \
+ ((This)->lpVtbl->get_DocumentTitle(This, title))
+
+#define ICoreWebView2_27_AddHostObjectToScript(This, name, object) \
+ ((This)->lpVtbl->AddHostObjectToScript(This, name, object))
+
+#define ICoreWebView2_27_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2_27_OpenDevToolsWindow(This) \
+ ((This)->lpVtbl->OpenDevToolsWindow(This))
+
+#define ICoreWebView2_27_add_ContainsFullScreenElementChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContainsFullScreenElementChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ContainsFullScreenElementChanged(This, token) \
+ ((This)->lpVtbl->remove_ContainsFullScreenElementChanged(This, token))
+
+#define ICoreWebView2_27_get_ContainsFullScreenElement(This, containsFullScreenElement) \
+ ((This)->lpVtbl->get_ContainsFullScreenElement(This, containsFullScreenElement))
+
+#define ICoreWebView2_27_add_WebResourceRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceRequested(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_WebResourceRequested(This, token) \
+ ((This)->lpVtbl->remove_WebResourceRequested(This, token))
+
+#define ICoreWebView2_27_AddWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_27_RemoveWebResourceRequestedFilter(This, uri, resourceContext) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilter(This, uri, resourceContext))
+
+#define ICoreWebView2_27_add_WindowCloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WindowCloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_WindowCloseRequested(This, token) \
+ ((This)->lpVtbl->remove_WindowCloseRequested(This, token))
+
+#define ICoreWebView2_27_add_WebResourceResponseReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_WebResourceResponseReceived(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_WebResourceResponseReceived(This, token) \
+ ((This)->lpVtbl->remove_WebResourceResponseReceived(This, token))
+
+#define ICoreWebView2_27_NavigateWithWebResourceRequest(This, request) \
+ ((This)->lpVtbl->NavigateWithWebResourceRequest(This, request))
+
+#define ICoreWebView2_27_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2_27_get_CookieManager(This, cookieManager) \
+ ((This)->lpVtbl->get_CookieManager(This, cookieManager))
+
+#define ICoreWebView2_27_get_Environment(This, environment) \
+ ((This)->lpVtbl->get_Environment(This, environment))
+
+#define ICoreWebView2_27_TrySuspend(This, handler) \
+ ((This)->lpVtbl->TrySuspend(This, handler))
+
+#define ICoreWebView2_27_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2_27_get_IsSuspended(This, isSuspended) \
+ ((This)->lpVtbl->get_IsSuspended(This, isSuspended))
+
+#define ICoreWebView2_27_SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind) \
+ ((This)->lpVtbl->SetVirtualHostNameToFolderMapping(This, hostName, folderPath, accessKind))
+
+#define ICoreWebView2_27_ClearVirtualHostNameToFolderMapping(This, hostName) \
+ ((This)->lpVtbl->ClearVirtualHostNameToFolderMapping(This, hostName))
+
+#define ICoreWebView2_27_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#define ICoreWebView2_27_add_DownloadStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DownloadStarting(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_DownloadStarting(This, token) \
+ ((This)->lpVtbl->remove_DownloadStarting(This, token))
+
+#define ICoreWebView2_27_add_ClientCertificateRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ClientCertificateRequested(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ClientCertificateRequested(This, token) \
+ ((This)->lpVtbl->remove_ClientCertificateRequested(This, token))
+
+#define ICoreWebView2_27_OpenTaskManagerWindow(This) \
+ ((This)->lpVtbl->OpenTaskManagerWindow(This))
+
+#define ICoreWebView2_27_PrintToPdf(This, ResultFilePath, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdf(This, ResultFilePath, printSettings, handler))
+
+#define ICoreWebView2_27_add_IsMutedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsMutedChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_IsMutedChanged(This, token) \
+ ((This)->lpVtbl->remove_IsMutedChanged(This, token))
+
+#define ICoreWebView2_27_get_IsMuted(This, value) \
+ ((This)->lpVtbl->get_IsMuted(This, value))
+
+#define ICoreWebView2_27_put_IsMuted(This, value) \
+ ((This)->lpVtbl->put_IsMuted(This, value))
+
+#define ICoreWebView2_27_add_IsDocumentPlayingAudioChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_IsDocumentPlayingAudioChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_IsDocumentPlayingAudioChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDocumentPlayingAudioChanged(This, token))
+
+#define ICoreWebView2_27_get_IsDocumentPlayingAudio(This, value) \
+ ((This)->lpVtbl->get_IsDocumentPlayingAudio(This, value))
+
+#define ICoreWebView2_27_add_IsDefaultDownloadDialogOpenChanged(This, handler, token) \
+ ((This)->lpVtbl->add_IsDefaultDownloadDialogOpenChanged(This, handler, token))
+
+#define ICoreWebView2_27_remove_IsDefaultDownloadDialogOpenChanged(This, token) \
+ ((This)->lpVtbl->remove_IsDefaultDownloadDialogOpenChanged(This, token))
+
+#define ICoreWebView2_27_get_IsDefaultDownloadDialogOpen(This, value) \
+ ((This)->lpVtbl->get_IsDefaultDownloadDialogOpen(This, value))
+
+#define ICoreWebView2_27_OpenDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->OpenDefaultDownloadDialog(This))
+
+#define ICoreWebView2_27_CloseDefaultDownloadDialog(This) \
+ ((This)->lpVtbl->CloseDefaultDownloadDialog(This))
+
+#define ICoreWebView2_27_get_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_27_put_DefaultDownloadDialogCornerAlignment(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogCornerAlignment(This, value))
+
+#define ICoreWebView2_27_get_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_27_put_DefaultDownloadDialogMargin(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadDialogMargin(This, value))
+
+#define ICoreWebView2_27_add_BasicAuthenticationRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BasicAuthenticationRequested(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_BasicAuthenticationRequested(This, token) \
+ ((This)->lpVtbl->remove_BasicAuthenticationRequested(This, token))
+
+#define ICoreWebView2_27_CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler) \
+ ((This)->lpVtbl->CallDevToolsProtocolMethodForSession(This, sessionId, methodName, parametersAsJson, handler))
+
+#define ICoreWebView2_27_add_ContextMenuRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContextMenuRequested(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ContextMenuRequested(This, token) \
+ ((This)->lpVtbl->remove_ContextMenuRequested(This, token))
+
+#define ICoreWebView2_27_add_StatusBarTextChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StatusBarTextChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_StatusBarTextChanged(This, token) \
+ ((This)->lpVtbl->remove_StatusBarTextChanged(This, token))
+
+#define ICoreWebView2_27_get_StatusBarText(This, value) \
+ ((This)->lpVtbl->get_StatusBarText(This, value))
+
+#define ICoreWebView2_27_get_Profile(This, value) \
+ ((This)->lpVtbl->get_Profile(This, value))
+
+#define ICoreWebView2_27_add_ServerCertificateErrorDetected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ServerCertificateErrorDetected(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ServerCertificateErrorDetected(This, token) \
+ ((This)->lpVtbl->remove_ServerCertificateErrorDetected(This, token))
+
+#define ICoreWebView2_27_ClearServerCertificateErrorActions(This, handler) \
+ ((This)->lpVtbl->ClearServerCertificateErrorActions(This, handler))
+
+#define ICoreWebView2_27_add_FaviconChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FaviconChanged(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_FaviconChanged(This, token) \
+ ((This)->lpVtbl->remove_FaviconChanged(This, token))
+
+#define ICoreWebView2_27_get_FaviconUri(This, value) \
+ ((This)->lpVtbl->get_FaviconUri(This, value))
+
+#define ICoreWebView2_27_GetFavicon(This, format, completedHandler) \
+ ((This)->lpVtbl->GetFavicon(This, format, completedHandler))
+
+#define ICoreWebView2_27_Print(This, printSettings, handler) \
+ ((This)->lpVtbl->Print(This, printSettings, handler))
+
+#define ICoreWebView2_27_ShowPrintUI(This, printDialogKind) \
+ ((This)->lpVtbl->ShowPrintUI(This, printDialogKind))
+
+#define ICoreWebView2_27_PrintToPdfStream(This, printSettings, handler) \
+ ((This)->lpVtbl->PrintToPdfStream(This, printSettings, handler))
+
+#define ICoreWebView2_27_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2_27_add_LaunchingExternalUriScheme(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LaunchingExternalUriScheme(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_LaunchingExternalUriScheme(This, token) \
+ ((This)->lpVtbl->remove_LaunchingExternalUriScheme(This, token))
+
+#define ICoreWebView2_27_get_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->get_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_27_put_MemoryUsageTargetLevel(This, value) \
+ ((This)->lpVtbl->put_MemoryUsageTargetLevel(This, value))
+
+#define ICoreWebView2_27_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2_27_ExecuteScriptWithResult(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScriptWithResult(This, javaScript, handler))
+
+#define ICoreWebView2_27_AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->AddWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_27_RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds) \
+ ((This)->lpVtbl->RemoveWebResourceRequestedFilterWithRequestSourceKinds(This, uri, ResourceContext, requestSourceKinds))
+
+#define ICoreWebView2_27_PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects) \
+ ((This)->lpVtbl->PostWebMessageAsJsonWithAdditionalObjects(This, webMessageAsJson, additionalObjects))
+
+#define ICoreWebView2_27_add_NotificationReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NotificationReceived(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_NotificationReceived(This, token) \
+ ((This)->lpVtbl->remove_NotificationReceived(This, token))
+
+#define ICoreWebView2_27_add_SaveAsUIShowing(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SaveAsUIShowing(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_SaveAsUIShowing(This, token) \
+ ((This)->lpVtbl->remove_SaveAsUIShowing(This, token))
+
+#define ICoreWebView2_27_ShowSaveAsUI(This, handler) \
+ ((This)->lpVtbl->ShowSaveAsUI(This, handler))
+
+#define ICoreWebView2_27_add_SaveFileSecurityCheckStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_SaveFileSecurityCheckStarting(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_SaveFileSecurityCheckStarting(This, token) \
+ ((This)->lpVtbl->remove_SaveFileSecurityCheckStarting(This, token))
+
+#define ICoreWebView2_27_add_ScreenCaptureStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScreenCaptureStarting(This, eventHandler, token))
+
+#define ICoreWebView2_27_remove_ScreenCaptureStarting(This, token) \
+ ((This)->lpVtbl->remove_ScreenCaptureStarting(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+ HRESULT STDMETHODCALLTYPE ICoreWebView2_27_add_ScreenCaptureStarting_Proxy(
+ ICoreWebView2_27 *This,
+ /* [in] */ ICoreWebView2ScreenCaptureStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ void __RPC_STUB ICoreWebView2_27_add_ScreenCaptureStarting_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+ HRESULT STDMETHODCALLTYPE ICoreWebView2_27_remove_ScreenCaptureStarting_Proxy(
+ ICoreWebView2_27 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ void __RPC_STUB ICoreWebView2_27_remove_ScreenCaptureStarting_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+#endif /* __ICoreWebView2_27_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ScreenCaptureStartingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ScreenCaptureStartingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ScreenCaptureStartingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ScreenCaptureStartingEventHandler = {0xe24ff05a, 0x1db5, 0x59d9, {0x89, 0xf3, 0x3c, 0x86, 0x42, 0x68, 0xdb, 0x4a}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e24ff05a-1db5-59d9-89f3-3c864268db4a")
+ ICoreWebView2ScreenCaptureStartingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2ScreenCaptureStartingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ScreenCaptureStartingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ScreenCaptureStartingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ScreenCaptureStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ScreenCaptureStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScreenCaptureStartingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ScreenCaptureStartingEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2ScreenCaptureStartingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2ScreenCaptureStartingEventHandlerVtbl;
+
+ interface ICoreWebView2ScreenCaptureStartingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ScreenCaptureStartingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ScreenCaptureStartingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ScreenCaptureStartingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ScreenCaptureStartingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ScreenCaptureStartingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ScreenCaptureStartingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2AcceleratorKeyPressedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2AcceleratorKeyPressedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2AcceleratorKeyPressedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2AcceleratorKeyPressedEventArgs = {0x9f760f8a, 0xfb79, 0x42be, {0x99, 0x90, 0x7b, 0x56, 0x90, 0x0f, 0xa9, 0xc7}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9f760f8a-fb79-42be-9990-7b56900fa9c7")
+ ICoreWebView2AcceleratorKeyPressedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_KeyEventKind(
+ /* [retval][out] */ COREWEBVIEW2_KEY_EVENT_KIND * keyEventKind) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_VirtualKey(
+ /* [retval][out] */ UINT * virtualKey) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_KeyEventLParam(
+ /* [retval][out] */ INT * lParam) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PhysicalKeyStatus(
+ /* [retval][out] */ COREWEBVIEW2_PHYSICAL_KEY_STATUS * physicalKeyStatus) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * handled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL handled) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2AcceleratorKeyPressedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_KeyEventKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_KeyEventKind)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_KEY_EVENT_KIND *keyEventKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_VirtualKey)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_VirtualKey)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This,
+ /* [retval][out] */ UINT *virtualKey);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_KeyEventLParam)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_KeyEventLParam)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This,
+ /* [retval][out] */ INT *lParam);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_PhysicalKeyStatus)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PhysicalKeyStatus)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_PHYSICAL_KEY_STATUS *physicalKeyStatus);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This,
+ /* [retval][out] */ BOOL *handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs *This,
+ /* [in] */ BOOL handled);
+
+ END_INTERFACE
+ } ICoreWebView2AcceleratorKeyPressedEventArgsVtbl;
+
+ interface ICoreWebView2AcceleratorKeyPressedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2AcceleratorKeyPressedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_get_KeyEventKind(This, keyEventKind) \
+ ((This)->lpVtbl->get_KeyEventKind(This, keyEventKind))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_get_VirtualKey(This, virtualKey) \
+ ((This)->lpVtbl->get_VirtualKey(This, virtualKey))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_get_KeyEventLParam(This, lParam) \
+ ((This)->lpVtbl->get_KeyEventLParam(This, lParam))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_get_PhysicalKeyStatus(This, physicalKeyStatus) \
+ ((This)->lpVtbl->get_PhysicalKeyStatus(This, physicalKeyStatus))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_get_Handled(This, handled) \
+ ((This)->lpVtbl->get_Handled(This, handled))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs_put_Handled(This, handled) \
+ ((This)->lpVtbl->put_Handled(This, handled))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2AcceleratorKeyPressedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2AcceleratorKeyPressedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2AcceleratorKeyPressedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2AcceleratorKeyPressedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2AcceleratorKeyPressedEventArgs2 = {0x03b2c8c8, 0x7799, 0x4e34, {0xbd, 0x66, 0xed, 0x26, 0xaa, 0x85, 0xf2, 0xbf}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("03b2c8c8-7799-4e34-bd66-ed26aa85f2bf")
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 : public ICoreWebView2AcceleratorKeyPressedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsBrowserAcceleratorKeyEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsBrowserAcceleratorKeyEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2AcceleratorKeyPressedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_KeyEventKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_KeyEventKind)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_KEY_EVENT_KIND *keyEventKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_VirtualKey)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_VirtualKey)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [retval][out] */ UINT *virtualKey);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_KeyEventLParam)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_KeyEventLParam)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [retval][out] */ INT *lParam);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_PhysicalKeyStatus)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PhysicalKeyStatus)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PHYSICAL_KEY_STATUS *physicalKeyStatus);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [retval][out] */ BOOL *handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [in] */ BOOL handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs2, get_IsBrowserAcceleratorKeyEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBrowserAcceleratorKeyEnabled)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventArgs2, put_IsBrowserAcceleratorKeyEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBrowserAcceleratorKeyEnabled)(
+ ICoreWebView2AcceleratorKeyPressedEventArgs2 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2AcceleratorKeyPressedEventArgs2Vtbl;
+
+ interface ICoreWebView2AcceleratorKeyPressedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2AcceleratorKeyPressedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_get_KeyEventKind(This, keyEventKind) \
+ ((This)->lpVtbl->get_KeyEventKind(This, keyEventKind))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_get_VirtualKey(This, virtualKey) \
+ ((This)->lpVtbl->get_VirtualKey(This, virtualKey))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_get_KeyEventLParam(This, lParam) \
+ ((This)->lpVtbl->get_KeyEventLParam(This, lParam))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_get_PhysicalKeyStatus(This, physicalKeyStatus) \
+ ((This)->lpVtbl->get_PhysicalKeyStatus(This, physicalKeyStatus))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_get_Handled(This, handled) \
+ ((This)->lpVtbl->get_Handled(This, handled))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_put_Handled(This, handled) \
+ ((This)->lpVtbl->put_Handled(This, handled))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_get_IsBrowserAcceleratorKeyEnabled(This, value) \
+ ((This)->lpVtbl->get_IsBrowserAcceleratorKeyEnabled(This, value))
+
+#define ICoreWebView2AcceleratorKeyPressedEventArgs2_put_IsBrowserAcceleratorKeyEnabled(This, value) \
+ ((This)->lpVtbl->put_IsBrowserAcceleratorKeyEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2AcceleratorKeyPressedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BasicAuthenticationRequestedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2BasicAuthenticationRequestedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BasicAuthenticationRequestedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BasicAuthenticationRequestedEventArgs = {0xef05516f, 0xd897, 0x4f9e, {0xb6, 0x72, 0xd8, 0xe2, 0x30, 0x7a, 0x3f, 0xb0}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ef05516f-d897-4f9e-b672-d8e2307a3fb0")
+ ICoreWebView2BasicAuthenticationRequestedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Challenge(
+ /* [retval][out] */ LPWSTR * challenge) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Response(
+ /* [retval][out] */ ICoreWebView2BasicAuthenticationResponse * *response) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cancel(
+ /* [retval][out] */ BOOL * cancel) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Cancel(
+ /* [in] */ BOOL cancel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BasicAuthenticationRequestedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationRequestedEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationRequestedEventArgs, get_Challenge)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Challenge)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This,
+ /* [retval][out] */ LPWSTR *challenge);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationRequestedEventArgs, get_Response)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Response)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2BasicAuthenticationResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationRequestedEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationRequestedEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This,
+ /* [in] */ BOOL cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2BasicAuthenticationRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2BasicAuthenticationRequestedEventArgsVtbl;
+
+ interface ICoreWebView2BasicAuthenticationRequestedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2BasicAuthenticationRequestedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_get_Uri(This, value) \
+ ((This)->lpVtbl->get_Uri(This, value))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_get_Challenge(This, challenge) \
+ ((This)->lpVtbl->get_Challenge(This, challenge))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_get_Response(This, response) \
+ ((This)->lpVtbl->get_Response(This, response))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_get_Cancel(This, cancel) \
+ ((This)->lpVtbl->get_Cancel(This, cancel))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_put_Cancel(This, cancel) \
+ ((This)->lpVtbl->put_Cancel(This, cancel))
+
+#define ICoreWebView2BasicAuthenticationRequestedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BasicAuthenticationRequestedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BasicAuthenticationResponse_INTERFACE_DEFINED__
+#define __ICoreWebView2BasicAuthenticationResponse_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BasicAuthenticationResponse */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BasicAuthenticationResponse = {0x07023f7d, 0x2d77, 0x4d67, {0x90, 0x40, 0x6e, 0x7d, 0x42, 0x8c, 0x6a, 0x40}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("07023f7d-2d77-4d67-9040-6e7d428c6a40")
+ ICoreWebView2BasicAuthenticationResponse : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_UserName(
+ /* [retval][out] */ LPWSTR * userName) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_UserName(
+ /* [in] */ LPCWSTR userName) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Password(
+ /* [retval][out] */ LPWSTR * password) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Password(
+ /* [in] */ LPCWSTR password) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BasicAuthenticationResponseVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BasicAuthenticationResponse *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BasicAuthenticationResponse *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BasicAuthenticationResponse *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationResponse, get_UserName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserName)(
+ ICoreWebView2BasicAuthenticationResponse *This,
+ /* [retval][out] */ LPWSTR *userName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationResponse, put_UserName)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserName)(
+ ICoreWebView2BasicAuthenticationResponse *This,
+ /* [in] */ LPCWSTR userName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationResponse, get_Password)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Password)(
+ ICoreWebView2BasicAuthenticationResponse *This,
+ /* [retval][out] */ LPWSTR *password);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BasicAuthenticationResponse, put_Password)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Password)(
+ ICoreWebView2BasicAuthenticationResponse *This,
+ /* [in] */ LPCWSTR password);
+
+ END_INTERFACE
+ } ICoreWebView2BasicAuthenticationResponseVtbl;
+
+ interface ICoreWebView2BasicAuthenticationResponse
+ {
+ CONST_VTBL struct ICoreWebView2BasicAuthenticationResponseVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BasicAuthenticationResponse_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BasicAuthenticationResponse_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BasicAuthenticationResponse_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BasicAuthenticationResponse_get_UserName(This, userName) \
+ ((This)->lpVtbl->get_UserName(This, userName))
+
+#define ICoreWebView2BasicAuthenticationResponse_put_UserName(This, userName) \
+ ((This)->lpVtbl->put_UserName(This, userName))
+
+#define ICoreWebView2BasicAuthenticationResponse_get_Password(This, password) \
+ ((This)->lpVtbl->get_Password(This, password))
+
+#define ICoreWebView2BasicAuthenticationResponse_put_Password(This, password) \
+ ((This)->lpVtbl->put_Password(This, password))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BasicAuthenticationResponse_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtension_INTERFACE_DEFINED__
+#define __ICoreWebView2BrowserExtension_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BrowserExtension */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BrowserExtension = {0x7EF7FFA0, 0xFAC5, 0x462C, {0xB1, 0x89, 0x3D, 0x9E, 0xDB, 0xE5, 0x75, 0xDA}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7EF7FFA0-FAC5-462C-B189-3D9EDBE575DA")
+ ICoreWebView2BrowserExtension : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Id(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Name(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Remove(
+ /* [in] */ ICoreWebView2BrowserExtensionRemoveCompletedHandler * handler) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enable(
+ /* [in] */ BOOL isEnabled,
+ /* [in] */ ICoreWebView2BrowserExtensionEnableCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BrowserExtensionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BrowserExtension *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BrowserExtension *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BrowserExtension *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtension, get_Id)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Id)(
+ ICoreWebView2BrowserExtension *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtension, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2BrowserExtension *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtension, Remove)
+ HRESULT(STDMETHODCALLTYPE *Remove)(
+ ICoreWebView2BrowserExtension *This,
+ /* [in] */ ICoreWebView2BrowserExtensionRemoveCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtension, get_IsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsEnabled)(
+ ICoreWebView2BrowserExtension *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtension, Enable)
+ HRESULT(STDMETHODCALLTYPE *Enable)(
+ ICoreWebView2BrowserExtension *This,
+ /* [in] */ BOOL isEnabled,
+ /* [in] */ ICoreWebView2BrowserExtensionEnableCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2BrowserExtensionVtbl;
+
+ interface ICoreWebView2BrowserExtension
+ {
+ CONST_VTBL struct ICoreWebView2BrowserExtensionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BrowserExtension_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BrowserExtension_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BrowserExtension_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BrowserExtension_get_Id(This, value) \
+ ((This)->lpVtbl->get_Id(This, value))
+
+#define ICoreWebView2BrowserExtension_get_Name(This, value) \
+ ((This)->lpVtbl->get_Name(This, value))
+
+#define ICoreWebView2BrowserExtension_Remove(This, handler) \
+ ((This)->lpVtbl->Remove(This, handler))
+
+#define ICoreWebView2BrowserExtension_get_IsEnabled(This, value) \
+ ((This)->lpVtbl->get_IsEnabled(This, value))
+
+#define ICoreWebView2BrowserExtension_Enable(This, isEnabled, handler) \
+ ((This)->lpVtbl->Enable(This, isEnabled, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BrowserExtension_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtensionRemoveCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2BrowserExtensionRemoveCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BrowserExtensionRemoveCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BrowserExtensionRemoveCompletedHandler = {0x8e41909a, 0x9b18, 0x4bb1, {0x8c, 0xdf, 0x93, 0x0f, 0x46, 0x7a, 0x50, 0xbe}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8e41909a-9b18-4bb1-8cdf-930f467a50be")
+ ICoreWebView2BrowserExtensionRemoveCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BrowserExtensionRemoveCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BrowserExtensionRemoveCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BrowserExtensionRemoveCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BrowserExtensionRemoveCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtensionRemoveCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2BrowserExtensionRemoveCompletedHandler *This,
+ /* [in] */ HRESULT errorCode);
+
+ END_INTERFACE
+ } ICoreWebView2BrowserExtensionRemoveCompletedHandlerVtbl;
+
+ interface ICoreWebView2BrowserExtensionRemoveCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2BrowserExtensionRemoveCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BrowserExtensionRemoveCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BrowserExtensionRemoveCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BrowserExtensionRemoveCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BrowserExtensionRemoveCompletedHandler_Invoke(This, errorCode) \
+ ((This)->lpVtbl->Invoke(This, errorCode))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BrowserExtensionRemoveCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtensionEnableCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2BrowserExtensionEnableCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BrowserExtensionEnableCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BrowserExtensionEnableCompletedHandler = {0x30c186ce, 0x7fad, 0x421f, {0xa3, 0xbc, 0xa8, 0xea, 0xf0, 0x71, 0xdd, 0xb8}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("30c186ce-7fad-421f-a3bc-a8eaf071ddb8")
+ ICoreWebView2BrowserExtensionEnableCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BrowserExtensionEnableCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BrowserExtensionEnableCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BrowserExtensionEnableCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BrowserExtensionEnableCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtensionEnableCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2BrowserExtensionEnableCompletedHandler *This,
+ /* [in] */ HRESULT errorCode);
+
+ END_INTERFACE
+ } ICoreWebView2BrowserExtensionEnableCompletedHandlerVtbl;
+
+ interface ICoreWebView2BrowserExtensionEnableCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2BrowserExtensionEnableCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BrowserExtensionEnableCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BrowserExtensionEnableCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BrowserExtensionEnableCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BrowserExtensionEnableCompletedHandler_Invoke(This, errorCode) \
+ ((This)->lpVtbl->Invoke(This, errorCode))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BrowserExtensionEnableCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserProcessExitedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2BrowserProcessExitedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BrowserProcessExitedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BrowserProcessExitedEventArgs = {0x1f00663f, 0xaf8c, 0x4782, {0x9c, 0xdd, 0xdd, 0x01, 0xc5, 0x2e, 0x34, 0xcb}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1f00663f-af8c-4782-9cdd-dd01c52e34cb")
+ ICoreWebView2BrowserProcessExitedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BrowserProcessExitKind(
+ /* [retval][out] */ COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BrowserProcessId(
+ /* [retval][out] */ UINT32 * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BrowserProcessExitedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BrowserProcessExitedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BrowserProcessExitedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BrowserProcessExitedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserProcessExitedEventArgs, get_BrowserProcessExitKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessExitKind)(
+ ICoreWebView2BrowserProcessExitedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_BROWSER_PROCESS_EXIT_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserProcessExitedEventArgs, get_BrowserProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserProcessId)(
+ ICoreWebView2BrowserProcessExitedEventArgs *This,
+ /* [retval][out] */ UINT32 *value);
+
+ END_INTERFACE
+ } ICoreWebView2BrowserProcessExitedEventArgsVtbl;
+
+ interface ICoreWebView2BrowserProcessExitedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2BrowserProcessExitedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BrowserProcessExitedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BrowserProcessExitedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BrowserProcessExitedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BrowserProcessExitedEventArgs_get_BrowserProcessExitKind(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessExitKind(This, value))
+
+#define ICoreWebView2BrowserProcessExitedEventArgs_get_BrowserProcessId(This, value) \
+ ((This)->lpVtbl->get_BrowserProcessId(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BrowserProcessExitedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Certificate_INTERFACE_DEFINED__
+#define __ICoreWebView2Certificate_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Certificate */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Certificate = {0xC5FB2FCE, 0x1CAC, 0x4AEE, {0x9C, 0x79, 0x5E, 0xD0, 0x36, 0x2E, 0xAA, 0xE0}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("C5FB2FCE-1CAC-4AEE-9C79-5ED0362EAAE0")
+ ICoreWebView2Certificate : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Subject(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Issuer(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ValidFrom(
+ /* [retval][out] */ double *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ValidTo(
+ /* [retval][out] */ double *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DerEncodedSerialNumber(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DisplayName(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ToPemEncoding(
+ /* [retval][out] */ LPWSTR * pemEncodedData) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PemEncodedIssuerCertificateChain(
+ /* [retval][out] */ ICoreWebView2StringCollection * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CertificateVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Certificate *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Certificate *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Certificate *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, get_Subject)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Subject)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, get_Issuer)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Issuer)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, get_ValidFrom)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ValidFrom)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ double *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, get_ValidTo)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ValidTo)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ double *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, get_DerEncodedSerialNumber)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DerEncodedSerialNumber)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, get_DisplayName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DisplayName)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, ToPemEncoding)
+ HRESULT(STDMETHODCALLTYPE *ToPemEncoding)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ LPWSTR *pemEncodedData);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Certificate, get_PemEncodedIssuerCertificateChain)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PemEncodedIssuerCertificateChain)(
+ ICoreWebView2Certificate *This,
+ /* [retval][out] */ ICoreWebView2StringCollection **value);
+
+ END_INTERFACE
+ } ICoreWebView2CertificateVtbl;
+
+ interface ICoreWebView2Certificate
+ {
+ CONST_VTBL struct ICoreWebView2CertificateVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Certificate_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Certificate_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Certificate_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Certificate_get_Subject(This, value) \
+ ((This)->lpVtbl->get_Subject(This, value))
+
+#define ICoreWebView2Certificate_get_Issuer(This, value) \
+ ((This)->lpVtbl->get_Issuer(This, value))
+
+#define ICoreWebView2Certificate_get_ValidFrom(This, value) \
+ ((This)->lpVtbl->get_ValidFrom(This, value))
+
+#define ICoreWebView2Certificate_get_ValidTo(This, value) \
+ ((This)->lpVtbl->get_ValidTo(This, value))
+
+#define ICoreWebView2Certificate_get_DerEncodedSerialNumber(This, value) \
+ ((This)->lpVtbl->get_DerEncodedSerialNumber(This, value))
+
+#define ICoreWebView2Certificate_get_DisplayName(This, value) \
+ ((This)->lpVtbl->get_DisplayName(This, value))
+
+#define ICoreWebView2Certificate_ToPemEncoding(This, pemEncodedData) \
+ ((This)->lpVtbl->ToPemEncoding(This, pemEncodedData))
+
+#define ICoreWebView2Certificate_get_PemEncodedIssuerCertificateChain(This, value) \
+ ((This)->lpVtbl->get_PemEncodedIssuerCertificateChain(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Certificate_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificate_INTERFACE_DEFINED__
+#define __ICoreWebView2ClientCertificate_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ClientCertificate */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ClientCertificate = {0xe7188076, 0xbcc3, 0x11eb, {0x85, 0x29, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e7188076-bcc3-11eb-8529-0242ac130003")
+ ICoreWebView2ClientCertificate : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Subject(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Issuer(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ValidFrom(
+ /* [retval][out] */ double *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ValidTo(
+ /* [retval][out] */ double *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DerEncodedSerialNumber(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DisplayName(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ToPemEncoding(
+ /* [retval][out] */ LPWSTR * pemEncodedData) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PemEncodedIssuerCertificateChain(
+ /* [retval][out] */ ICoreWebView2StringCollection * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Kind(
+ /* [retval][out] */ COREWEBVIEW2_CLIENT_CERTIFICATE_KIND * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ClientCertificateVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ClientCertificate *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ClientCertificate *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ClientCertificate *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_Subject)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Subject)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_Issuer)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Issuer)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_ValidFrom)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ValidFrom)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ double *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_ValidTo)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ValidTo)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ double *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_DerEncodedSerialNumber)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DerEncodedSerialNumber)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_DisplayName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DisplayName)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, ToPemEncoding)
+ HRESULT(STDMETHODCALLTYPE *ToPemEncoding)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ LPWSTR *pemEncodedData);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_PemEncodedIssuerCertificateChain)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PemEncodedIssuerCertificateChain)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ ICoreWebView2StringCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificate, get_Kind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Kind)(
+ ICoreWebView2ClientCertificate *This,
+ /* [retval][out] */ COREWEBVIEW2_CLIENT_CERTIFICATE_KIND *value);
+
+ END_INTERFACE
+ } ICoreWebView2ClientCertificateVtbl;
+
+ interface ICoreWebView2ClientCertificate
+ {
+ CONST_VTBL struct ICoreWebView2ClientCertificateVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ClientCertificate_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ClientCertificate_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ClientCertificate_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ClientCertificate_get_Subject(This, value) \
+ ((This)->lpVtbl->get_Subject(This, value))
+
+#define ICoreWebView2ClientCertificate_get_Issuer(This, value) \
+ ((This)->lpVtbl->get_Issuer(This, value))
+
+#define ICoreWebView2ClientCertificate_get_ValidFrom(This, value) \
+ ((This)->lpVtbl->get_ValidFrom(This, value))
+
+#define ICoreWebView2ClientCertificate_get_ValidTo(This, value) \
+ ((This)->lpVtbl->get_ValidTo(This, value))
+
+#define ICoreWebView2ClientCertificate_get_DerEncodedSerialNumber(This, value) \
+ ((This)->lpVtbl->get_DerEncodedSerialNumber(This, value))
+
+#define ICoreWebView2ClientCertificate_get_DisplayName(This, value) \
+ ((This)->lpVtbl->get_DisplayName(This, value))
+
+#define ICoreWebView2ClientCertificate_ToPemEncoding(This, pemEncodedData) \
+ ((This)->lpVtbl->ToPemEncoding(This, pemEncodedData))
+
+#define ICoreWebView2ClientCertificate_get_PemEncodedIssuerCertificateChain(This, value) \
+ ((This)->lpVtbl->get_PemEncodedIssuerCertificateChain(This, value))
+
+#define ICoreWebView2ClientCertificate_get_Kind(This, value) \
+ ((This)->lpVtbl->get_Kind(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ClientCertificate_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificateRequestedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2ClientCertificateRequestedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ClientCertificateRequestedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ClientCertificateRequestedEventArgs = {0xbc59db28, 0xbcc3, 0x11eb, {0x85, 0x29, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bc59db28-bcc3-11eb-8529-0242ac130003")
+ ICoreWebView2ClientCertificateRequestedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Host(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Port(
+ /* [retval][out] */ int *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsProxy(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AllowedCertificateAuthorities(
+ /* [retval][out] */ ICoreWebView2StringCollection * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MutuallyTrustedCertificates(
+ /* [retval][out] */ ICoreWebView2ClientCertificateCollection * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SelectedCertificate(
+ /* [retval][out] */ ICoreWebView2ClientCertificate * *value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_SelectedCertificate(
+ /* [in] */ ICoreWebView2ClientCertificate * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cancel(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Cancel(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ClientCertificateRequestedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_Host)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Host)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_Port)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Port)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ int *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_IsProxy)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsProxy)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_AllowedCertificateAuthorities)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AllowedCertificateAuthorities)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2StringCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_MutuallyTrustedCertificates)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MutuallyTrustedCertificates)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2ClientCertificateCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_SelectedCertificate)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SelectedCertificate)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2ClientCertificate **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, put_SelectedCertificate)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_SelectedCertificate)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [in] */ ICoreWebView2ClientCertificate *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2ClientCertificateRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2ClientCertificateRequestedEventArgsVtbl;
+
+ interface ICoreWebView2ClientCertificateRequestedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2ClientCertificateRequestedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_Host(This, value) \
+ ((This)->lpVtbl->get_Host(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_Port(This, value) \
+ ((This)->lpVtbl->get_Port(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_IsProxy(This, value) \
+ ((This)->lpVtbl->get_IsProxy(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_AllowedCertificateAuthorities(This, value) \
+ ((This)->lpVtbl->get_AllowedCertificateAuthorities(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_MutuallyTrustedCertificates(This, value) \
+ ((This)->lpVtbl->get_MutuallyTrustedCertificates(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_SelectedCertificate(This, value) \
+ ((This)->lpVtbl->get_SelectedCertificate(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_put_SelectedCertificate(This, value) \
+ ((This)->lpVtbl->put_SelectedCertificate(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_Cancel(This, value) \
+ ((This)->lpVtbl->get_Cancel(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_put_Cancel(This, value) \
+ ((This)->lpVtbl->put_Cancel(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_get_Handled(This, value) \
+ ((This)->lpVtbl->get_Handled(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_put_Handled(This, value) \
+ ((This)->lpVtbl->put_Handled(This, value))
+
+#define ICoreWebView2ClientCertificateRequestedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ClientCertificateRequestedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2StringCollection_INTERFACE_DEFINED__
+#define __ICoreWebView2StringCollection_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2StringCollection */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2StringCollection = {0xf41f3f8a, 0xbcc3, 0x11eb, {0x85, 0x29, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f41f3f8a-bcc3-11eb-8529-0242ac130003")
+ ICoreWebView2StringCollection : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2StringCollectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2StringCollection *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2StringCollection *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2StringCollection *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2StringCollection, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2StringCollection *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2StringCollection, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2StringCollection *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2StringCollectionVtbl;
+
+ interface ICoreWebView2StringCollection
+ {
+ CONST_VTBL struct ICoreWebView2StringCollectionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2StringCollection_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2StringCollection_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2StringCollection_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2StringCollection_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2StringCollection_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2StringCollection_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ClientCertificateCollection_INTERFACE_DEFINED__
+#define __ICoreWebView2ClientCertificateCollection_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ClientCertificateCollection */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ClientCertificateCollection = {0xef5674d2, 0xbcc3, 0x11eb, {0x85, 0x29, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ef5674d2-bcc3-11eb-8529-0242ac130003")
+ ICoreWebView2ClientCertificateCollection : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ClientCertificate * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ClientCertificateCollectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ClientCertificateCollection *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ClientCertificateCollection *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ClientCertificateCollection *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateCollection, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2ClientCertificateCollection *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClientCertificateCollection, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2ClientCertificateCollection *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ClientCertificate **value);
+
+ END_INTERFACE
+ } ICoreWebView2ClientCertificateCollectionVtbl;
+
+ interface ICoreWebView2ClientCertificateCollection
+ {
+ CONST_VTBL struct ICoreWebView2ClientCertificateCollectionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ClientCertificateCollection_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ClientCertificateCollection_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ClientCertificateCollection_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ClientCertificateCollection_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2ClientCertificateCollection_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ClientCertificateCollection_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController_INTERFACE_DEFINED__
+#define __ICoreWebView2CompositionController_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CompositionController */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CompositionController = {0x3df9b733, 0xb9ae, 0x4a15, {0x86, 0xb4, 0xeb, 0x9e, 0xe9, 0x82, 0x64, 0x69}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3df9b733-b9ae-4a15-86b4-eb9ee9826469")
+ ICoreWebView2CompositionController : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_RootVisualTarget(
+ /* [retval][out] */ IUnknown * *target) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_RootVisualTarget(
+ /* [in] */ IUnknown * target) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendMouseInput(
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_KIND eventKind,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS virtualKeys,
+ /* [in] */ UINT32 mouseData,
+ /* [in] */ POINT point) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendPointerInput(
+ /* [in] */ COREWEBVIEW2_POINTER_EVENT_KIND eventKind,
+ /* [in] */ ICoreWebView2PointerInfo * pointerInfo) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cursor(
+ /* [retval][out] */ HCURSOR * cursor) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SystemCursorId(
+ /* [retval][out] */ UINT32 * systemCursorId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_CursorChanged(
+ /* [in] */ ICoreWebView2CursorChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_CursorChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CompositionControllerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CompositionController *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CompositionController *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CompositionController *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_RootVisualTarget)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RootVisualTarget)(
+ ICoreWebView2CompositionController *This,
+ /* [retval][out] */ IUnknown **target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, put_RootVisualTarget)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_RootVisualTarget)(
+ ICoreWebView2CompositionController *This,
+ /* [in] */ IUnknown *target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendMouseInput)
+ HRESULT(STDMETHODCALLTYPE *SendMouseInput)(
+ ICoreWebView2CompositionController *This,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_KIND eventKind,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS virtualKeys,
+ /* [in] */ UINT32 mouseData,
+ /* [in] */ POINT point);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendPointerInput)
+ HRESULT(STDMETHODCALLTYPE *SendPointerInput)(
+ ICoreWebView2CompositionController *This,
+ /* [in] */ COREWEBVIEW2_POINTER_EVENT_KIND eventKind,
+ /* [in] */ ICoreWebView2PointerInfo *pointerInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_Cursor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cursor)(
+ ICoreWebView2CompositionController *This,
+ /* [retval][out] */ HCURSOR *cursor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_SystemCursorId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SystemCursorId)(
+ ICoreWebView2CompositionController *This,
+ /* [retval][out] */ UINT32 *systemCursorId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, add_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_CursorChanged)(
+ ICoreWebView2CompositionController *This,
+ /* [in] */ ICoreWebView2CursorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, remove_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_CursorChanged)(
+ ICoreWebView2CompositionController *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2CompositionControllerVtbl;
+
+ interface ICoreWebView2CompositionController
+ {
+ CONST_VTBL struct ICoreWebView2CompositionControllerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CompositionController_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CompositionController_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CompositionController_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CompositionController_get_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->get_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController_put_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->put_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController_SendMouseInput(This, eventKind, virtualKeys, mouseData, point) \
+ ((This)->lpVtbl->SendMouseInput(This, eventKind, virtualKeys, mouseData, point))
+
+#define ICoreWebView2CompositionController_SendPointerInput(This, eventKind, pointerInfo) \
+ ((This)->lpVtbl->SendPointerInput(This, eventKind, pointerInfo))
+
+#define ICoreWebView2CompositionController_get_Cursor(This, cursor) \
+ ((This)->lpVtbl->get_Cursor(This, cursor))
+
+#define ICoreWebView2CompositionController_get_SystemCursorId(This, systemCursorId) \
+ ((This)->lpVtbl->get_SystemCursorId(This, systemCursorId))
+
+#define ICoreWebView2CompositionController_add_CursorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_CursorChanged(This, eventHandler, token))
+
+#define ICoreWebView2CompositionController_remove_CursorChanged(This, token) \
+ ((This)->lpVtbl->remove_CursorChanged(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CompositionController_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CursorChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2CursorChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CursorChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CursorChangedEventHandler = {0x9da43ccc, 0x26e1, 0x4dad, {0xb5, 0x6c, 0xd8, 0x96, 0x1c, 0x94, 0xc5, 0x71}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9da43ccc-26e1-4dad-b56c-d8961c94c571")
+ ICoreWebView2CursorChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2CompositionController * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CursorChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CursorChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CursorChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CursorChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CursorChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2CursorChangedEventHandler *This,
+ /* [in] */ ICoreWebView2CompositionController *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2CursorChangedEventHandlerVtbl;
+
+ interface ICoreWebView2CursorChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2CursorChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CursorChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CursorChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CursorChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CursorChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CursorChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController2_INTERFACE_DEFINED__
+#define __ICoreWebView2CompositionController2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CompositionController2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CompositionController2 = {0x0b6a3d24, 0x49cb, 0x4806, {0xba, 0x20, 0xb5, 0xe0, 0x73, 0x4a, 0x7b, 0x26}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0b6a3d24-49cb-4806-ba20-b5e0734a7b26")
+ ICoreWebView2CompositionController2 : public ICoreWebView2CompositionController
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AutomationProvider(
+ /* [retval][out] */ IUnknown * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CompositionController2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CompositionController2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CompositionController2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CompositionController2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_RootVisualTarget)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RootVisualTarget)(
+ ICoreWebView2CompositionController2 *This,
+ /* [retval][out] */ IUnknown **target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, put_RootVisualTarget)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_RootVisualTarget)(
+ ICoreWebView2CompositionController2 *This,
+ /* [in] */ IUnknown *target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendMouseInput)
+ HRESULT(STDMETHODCALLTYPE *SendMouseInput)(
+ ICoreWebView2CompositionController2 *This,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_KIND eventKind,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS virtualKeys,
+ /* [in] */ UINT32 mouseData,
+ /* [in] */ POINT point);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendPointerInput)
+ HRESULT(STDMETHODCALLTYPE *SendPointerInput)(
+ ICoreWebView2CompositionController2 *This,
+ /* [in] */ COREWEBVIEW2_POINTER_EVENT_KIND eventKind,
+ /* [in] */ ICoreWebView2PointerInfo *pointerInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_Cursor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cursor)(
+ ICoreWebView2CompositionController2 *This,
+ /* [retval][out] */ HCURSOR *cursor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_SystemCursorId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SystemCursorId)(
+ ICoreWebView2CompositionController2 *This,
+ /* [retval][out] */ UINT32 *systemCursorId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, add_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_CursorChanged)(
+ ICoreWebView2CompositionController2 *This,
+ /* [in] */ ICoreWebView2CursorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, remove_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_CursorChanged)(
+ ICoreWebView2CompositionController2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController2, get_AutomationProvider)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AutomationProvider)(
+ ICoreWebView2CompositionController2 *This,
+ /* [retval][out] */ IUnknown **value);
+
+ END_INTERFACE
+ } ICoreWebView2CompositionController2Vtbl;
+
+ interface ICoreWebView2CompositionController2
+ {
+ CONST_VTBL struct ICoreWebView2CompositionController2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CompositionController2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CompositionController2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CompositionController2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CompositionController2_get_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->get_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController2_put_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->put_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController2_SendMouseInput(This, eventKind, virtualKeys, mouseData, point) \
+ ((This)->lpVtbl->SendMouseInput(This, eventKind, virtualKeys, mouseData, point))
+
+#define ICoreWebView2CompositionController2_SendPointerInput(This, eventKind, pointerInfo) \
+ ((This)->lpVtbl->SendPointerInput(This, eventKind, pointerInfo))
+
+#define ICoreWebView2CompositionController2_get_Cursor(This, cursor) \
+ ((This)->lpVtbl->get_Cursor(This, cursor))
+
+#define ICoreWebView2CompositionController2_get_SystemCursorId(This, systemCursorId) \
+ ((This)->lpVtbl->get_SystemCursorId(This, systemCursorId))
+
+#define ICoreWebView2CompositionController2_add_CursorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_CursorChanged(This, eventHandler, token))
+
+#define ICoreWebView2CompositionController2_remove_CursorChanged(This, token) \
+ ((This)->lpVtbl->remove_CursorChanged(This, token))
+
+#define ICoreWebView2CompositionController2_get_AutomationProvider(This, value) \
+ ((This)->lpVtbl->get_AutomationProvider(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CompositionController2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController3_INTERFACE_DEFINED__
+#define __ICoreWebView2CompositionController3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CompositionController3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CompositionController3 = {0x9570570e, 0x4d76, 0x4361, {0x9e, 0xe1, 0xf0, 0x4d, 0x0d, 0xbd, 0xfb, 0x1e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9570570e-4d76-4361-9ee1-f04d0dbdfb1e")
+ ICoreWebView2CompositionController3 : public ICoreWebView2CompositionController2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DragEnter(
+ /* [in] */ IDataObject * dataObject,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD * effect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DragLeave(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DragOver(
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD * effect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Drop(
+ /* [in] */ IDataObject * dataObject,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD * effect) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CompositionController3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CompositionController3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CompositionController3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_RootVisualTarget)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RootVisualTarget)(
+ ICoreWebView2CompositionController3 *This,
+ /* [retval][out] */ IUnknown **target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, put_RootVisualTarget)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_RootVisualTarget)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ IUnknown *target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendMouseInput)
+ HRESULT(STDMETHODCALLTYPE *SendMouseInput)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_KIND eventKind,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS virtualKeys,
+ /* [in] */ UINT32 mouseData,
+ /* [in] */ POINT point);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendPointerInput)
+ HRESULT(STDMETHODCALLTYPE *SendPointerInput)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ COREWEBVIEW2_POINTER_EVENT_KIND eventKind,
+ /* [in] */ ICoreWebView2PointerInfo *pointerInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_Cursor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cursor)(
+ ICoreWebView2CompositionController3 *This,
+ /* [retval][out] */ HCURSOR *cursor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_SystemCursorId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SystemCursorId)(
+ ICoreWebView2CompositionController3 *This,
+ /* [retval][out] */ UINT32 *systemCursorId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, add_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_CursorChanged)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ ICoreWebView2CursorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, remove_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_CursorChanged)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController2, get_AutomationProvider)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AutomationProvider)(
+ ICoreWebView2CompositionController3 *This,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, DragEnter)
+ HRESULT(STDMETHODCALLTYPE *DragEnter)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ IDataObject *dataObject,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD *effect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, DragLeave)
+ HRESULT(STDMETHODCALLTYPE *DragLeave)(
+ ICoreWebView2CompositionController3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, DragOver)
+ HRESULT(STDMETHODCALLTYPE *DragOver)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD *effect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, Drop)
+ HRESULT(STDMETHODCALLTYPE *Drop)(
+ ICoreWebView2CompositionController3 *This,
+ /* [in] */ IDataObject *dataObject,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD *effect);
+
+ END_INTERFACE
+ } ICoreWebView2CompositionController3Vtbl;
+
+ interface ICoreWebView2CompositionController3
+ {
+ CONST_VTBL struct ICoreWebView2CompositionController3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CompositionController3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CompositionController3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CompositionController3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CompositionController3_get_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->get_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController3_put_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->put_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController3_SendMouseInput(This, eventKind, virtualKeys, mouseData, point) \
+ ((This)->lpVtbl->SendMouseInput(This, eventKind, virtualKeys, mouseData, point))
+
+#define ICoreWebView2CompositionController3_SendPointerInput(This, eventKind, pointerInfo) \
+ ((This)->lpVtbl->SendPointerInput(This, eventKind, pointerInfo))
+
+#define ICoreWebView2CompositionController3_get_Cursor(This, cursor) \
+ ((This)->lpVtbl->get_Cursor(This, cursor))
+
+#define ICoreWebView2CompositionController3_get_SystemCursorId(This, systemCursorId) \
+ ((This)->lpVtbl->get_SystemCursorId(This, systemCursorId))
+
+#define ICoreWebView2CompositionController3_add_CursorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_CursorChanged(This, eventHandler, token))
+
+#define ICoreWebView2CompositionController3_remove_CursorChanged(This, token) \
+ ((This)->lpVtbl->remove_CursorChanged(This, token))
+
+#define ICoreWebView2CompositionController3_get_AutomationProvider(This, value) \
+ ((This)->lpVtbl->get_AutomationProvider(This, value))
+
+#define ICoreWebView2CompositionController3_DragEnter(This, dataObject, keyState, point, effect) \
+ ((This)->lpVtbl->DragEnter(This, dataObject, keyState, point, effect))
+
+#define ICoreWebView2CompositionController3_DragLeave(This) \
+ ((This)->lpVtbl->DragLeave(This))
+
+#define ICoreWebView2CompositionController3_DragOver(This, keyState, point, effect) \
+ ((This)->lpVtbl->DragOver(This, keyState, point, effect))
+
+#define ICoreWebView2CompositionController3_Drop(This, dataObject, keyState, point, effect) \
+ ((This)->lpVtbl->Drop(This, dataObject, keyState, point, effect))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CompositionController3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CompositionController4_INTERFACE_DEFINED__
+#define __ICoreWebView2CompositionController4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CompositionController4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CompositionController4 = {0x7C367B9B, 0x3D2B, 0x450F, {0x9E, 0x58, 0xD6, 0x1A, 0x20, 0xF4, 0x86, 0xAA}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7C367B9B-3D2B-450F-9E58-D61A20F486AA")
+ ICoreWebView2CompositionController4 : public ICoreWebView2CompositionController3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetNonClientRegionAtPoint(
+ /* [in] */ POINT point,
+ /* [retval][out] */ COREWEBVIEW2_NON_CLIENT_REGION_KIND * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryNonClientRegion(
+ /* [in] */ COREWEBVIEW2_NON_CLIENT_REGION_KIND kind,
+ /* [retval][out] */ ICoreWebView2RegionRectCollectionView * *rects) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_NonClientRegionChanged(
+ /* [in] */ ICoreWebView2NonClientRegionChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NonClientRegionChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CompositionController4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CompositionController4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CompositionController4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_RootVisualTarget)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RootVisualTarget)(
+ ICoreWebView2CompositionController4 *This,
+ /* [retval][out] */ IUnknown **target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, put_RootVisualTarget)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_RootVisualTarget)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ IUnknown *target);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendMouseInput)
+ HRESULT(STDMETHODCALLTYPE *SendMouseInput)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_KIND eventKind,
+ /* [in] */ COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS virtualKeys,
+ /* [in] */ UINT32 mouseData,
+ /* [in] */ POINT point);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, SendPointerInput)
+ HRESULT(STDMETHODCALLTYPE *SendPointerInput)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ COREWEBVIEW2_POINTER_EVENT_KIND eventKind,
+ /* [in] */ ICoreWebView2PointerInfo *pointerInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_Cursor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cursor)(
+ ICoreWebView2CompositionController4 *This,
+ /* [retval][out] */ HCURSOR *cursor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, get_SystemCursorId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SystemCursorId)(
+ ICoreWebView2CompositionController4 *This,
+ /* [retval][out] */ UINT32 *systemCursorId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, add_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_CursorChanged)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ ICoreWebView2CursorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController, remove_CursorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_CursorChanged)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController2, get_AutomationProvider)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AutomationProvider)(
+ ICoreWebView2CompositionController4 *This,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, DragEnter)
+ HRESULT(STDMETHODCALLTYPE *DragEnter)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ IDataObject *dataObject,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD *effect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, DragLeave)
+ HRESULT(STDMETHODCALLTYPE *DragLeave)(
+ ICoreWebView2CompositionController4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, DragOver)
+ HRESULT(STDMETHODCALLTYPE *DragOver)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD *effect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController3, Drop)
+ HRESULT(STDMETHODCALLTYPE *Drop)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ IDataObject *dataObject,
+ /* [in] */ DWORD keyState,
+ /* [in] */ POINT point,
+ /* [retval][out] */ DWORD *effect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController4, GetNonClientRegionAtPoint)
+ HRESULT(STDMETHODCALLTYPE *GetNonClientRegionAtPoint)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ POINT point,
+ /* [retval][out] */ COREWEBVIEW2_NON_CLIENT_REGION_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController4, QueryNonClientRegion)
+ HRESULT(STDMETHODCALLTYPE *QueryNonClientRegion)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ COREWEBVIEW2_NON_CLIENT_REGION_KIND kind,
+ /* [retval][out] */ ICoreWebView2RegionRectCollectionView **rects);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController4, add_NonClientRegionChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NonClientRegionChanged)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ ICoreWebView2NonClientRegionChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CompositionController4, remove_NonClientRegionChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NonClientRegionChanged)(
+ ICoreWebView2CompositionController4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2CompositionController4Vtbl;
+
+ interface ICoreWebView2CompositionController4
+ {
+ CONST_VTBL struct ICoreWebView2CompositionController4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CompositionController4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CompositionController4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CompositionController4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CompositionController4_get_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->get_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController4_put_RootVisualTarget(This, target) \
+ ((This)->lpVtbl->put_RootVisualTarget(This, target))
+
+#define ICoreWebView2CompositionController4_SendMouseInput(This, eventKind, virtualKeys, mouseData, point) \
+ ((This)->lpVtbl->SendMouseInput(This, eventKind, virtualKeys, mouseData, point))
+
+#define ICoreWebView2CompositionController4_SendPointerInput(This, eventKind, pointerInfo) \
+ ((This)->lpVtbl->SendPointerInput(This, eventKind, pointerInfo))
+
+#define ICoreWebView2CompositionController4_get_Cursor(This, cursor) \
+ ((This)->lpVtbl->get_Cursor(This, cursor))
+
+#define ICoreWebView2CompositionController4_get_SystemCursorId(This, systemCursorId) \
+ ((This)->lpVtbl->get_SystemCursorId(This, systemCursorId))
+
+#define ICoreWebView2CompositionController4_add_CursorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_CursorChanged(This, eventHandler, token))
+
+#define ICoreWebView2CompositionController4_remove_CursorChanged(This, token) \
+ ((This)->lpVtbl->remove_CursorChanged(This, token))
+
+#define ICoreWebView2CompositionController4_get_AutomationProvider(This, value) \
+ ((This)->lpVtbl->get_AutomationProvider(This, value))
+
+#define ICoreWebView2CompositionController4_DragEnter(This, dataObject, keyState, point, effect) \
+ ((This)->lpVtbl->DragEnter(This, dataObject, keyState, point, effect))
+
+#define ICoreWebView2CompositionController4_DragLeave(This) \
+ ((This)->lpVtbl->DragLeave(This))
+
+#define ICoreWebView2CompositionController4_DragOver(This, keyState, point, effect) \
+ ((This)->lpVtbl->DragOver(This, keyState, point, effect))
+
+#define ICoreWebView2CompositionController4_Drop(This, dataObject, keyState, point, effect) \
+ ((This)->lpVtbl->Drop(This, dataObject, keyState, point, effect))
+
+#define ICoreWebView2CompositionController4_GetNonClientRegionAtPoint(This, point, value) \
+ ((This)->lpVtbl->GetNonClientRegionAtPoint(This, point, value))
+
+#define ICoreWebView2CompositionController4_QueryNonClientRegion(This, kind, rects) \
+ ((This)->lpVtbl->QueryNonClientRegion(This, kind, rects))
+
+#define ICoreWebView2CompositionController4_add_NonClientRegionChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NonClientRegionChanged(This, eventHandler, token))
+
+#define ICoreWebView2CompositionController4_remove_NonClientRegionChanged(This, token) \
+ ((This)->lpVtbl->remove_NonClientRegionChanged(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CompositionController4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NonClientRegionChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2NonClientRegionChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NonClientRegionChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NonClientRegionChangedEventHandler = {0x4a794e66, 0xaa6c, 0x46bd, {0x93, 0xa3, 0x38, 0x21, 0x96, 0x83, 0x76, 0x80}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4a794e66-aa6c-46bd-93a3-382196837680")
+ ICoreWebView2NonClientRegionChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2CompositionController * sender,
+ /* [in] */ ICoreWebView2NonClientRegionChangedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NonClientRegionChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NonClientRegionChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NonClientRegionChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NonClientRegionChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NonClientRegionChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2NonClientRegionChangedEventHandler *This,
+ /* [in] */ ICoreWebView2CompositionController *sender,
+ /* [in] */ ICoreWebView2NonClientRegionChangedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2NonClientRegionChangedEventHandlerVtbl;
+
+ interface ICoreWebView2NonClientRegionChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2NonClientRegionChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NonClientRegionChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NonClientRegionChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NonClientRegionChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NonClientRegionChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NonClientRegionChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2RegionRectCollectionView_INTERFACE_DEFINED__
+#define __ICoreWebView2RegionRectCollectionView_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2RegionRectCollectionView */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2RegionRectCollectionView = {0x333353b8, 0x48bf, 0x4449, {0x8f, 0xcc, 0x22, 0x69, 0x7f, 0xaf, 0x57, 0x53}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("333353b8-48bf-4449-8fcc-22697faf5753")
+ ICoreWebView2RegionRectCollectionView : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ RECT * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2RegionRectCollectionViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2RegionRectCollectionView *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2RegionRectCollectionView *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2RegionRectCollectionView *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2RegionRectCollectionView, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2RegionRectCollectionView *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2RegionRectCollectionView, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2RegionRectCollectionView *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ RECT *value);
+
+ END_INTERFACE
+ } ICoreWebView2RegionRectCollectionViewVtbl;
+
+ interface ICoreWebView2RegionRectCollectionView
+ {
+ CONST_VTBL struct ICoreWebView2RegionRectCollectionViewVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2RegionRectCollectionView_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2RegionRectCollectionView_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2RegionRectCollectionView_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2RegionRectCollectionView_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2RegionRectCollectionView_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2RegionRectCollectionView_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContentLoadingEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2ContentLoadingEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContentLoadingEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContentLoadingEventArgs = {0x0c8a1275, 0x9b6b, 0x4901, {0x87, 0xad, 0x70, 0xdf, 0x25, 0xba, 0xfa, 0x6e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0c8a1275-9b6b-4901-87ad-70df25bafa6e")
+ ICoreWebView2ContentLoadingEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsErrorPage(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_NavigationId(
+ /* [retval][out] */ UINT64 * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContentLoadingEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContentLoadingEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContentLoadingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContentLoadingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContentLoadingEventArgs, get_IsErrorPage)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsErrorPage)(
+ ICoreWebView2ContentLoadingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContentLoadingEventArgs, get_NavigationId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationId)(
+ ICoreWebView2ContentLoadingEventArgs *This,
+ /* [retval][out] */ UINT64 *value);
+
+ END_INTERFACE
+ } ICoreWebView2ContentLoadingEventArgsVtbl;
+
+ interface ICoreWebView2ContentLoadingEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2ContentLoadingEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContentLoadingEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContentLoadingEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContentLoadingEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContentLoadingEventArgs_get_IsErrorPage(This, value) \
+ ((This)->lpVtbl->get_IsErrorPage(This, value))
+
+#define ICoreWebView2ContentLoadingEventArgs_get_NavigationId(This, value) \
+ ((This)->lpVtbl->get_NavigationId(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContentLoadingEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuItem_INTERFACE_DEFINED__
+#define __ICoreWebView2ContextMenuItem_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContextMenuItem */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContextMenuItem = {0x7aed49e3, 0xa93f, 0x497a, {0x81, 0x1c, 0x74, 0x9c, 0x6b, 0x6b, 0x6c, 0x65}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7aed49e3-a93f-497a-811c-749c6b6b6c65")
+ ICoreWebView2ContextMenuItem : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Name(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Label(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CommandId(
+ /* [retval][out] */ INT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShortcutKeyDescription(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Icon(
+ /* [retval][out] */ IStream * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Kind(
+ /* [retval][out] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsEnabled(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsChecked(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsChecked(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Children(
+ /* [retval][out] */ ICoreWebView2ContextMenuItemCollection * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_CustomItemSelected(
+ /* [in] */ ICoreWebView2CustomItemSelectedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_CustomItemSelected(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContextMenuItemVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContextMenuItem *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContextMenuItem *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_Label)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Label)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_CommandId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CommandId)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ INT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_ShortcutKeyDescription)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShortcutKeyDescription)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_Icon)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Icon)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ IStream **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_Kind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Kind)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, put_IsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsEnabled)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_IsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsEnabled)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, put_IsChecked)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsChecked)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_IsChecked)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsChecked)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, get_Children)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Children)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [retval][out] */ ICoreWebView2ContextMenuItemCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, add_CustomItemSelected)
+ HRESULT(STDMETHODCALLTYPE *add_CustomItemSelected)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [in] */ ICoreWebView2CustomItemSelectedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItem, remove_CustomItemSelected)
+ HRESULT(STDMETHODCALLTYPE *remove_CustomItemSelected)(
+ ICoreWebView2ContextMenuItem *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2ContextMenuItemVtbl;
+
+ interface ICoreWebView2ContextMenuItem
+ {
+ CONST_VTBL struct ICoreWebView2ContextMenuItemVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContextMenuItem_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContextMenuItem_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContextMenuItem_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContextMenuItem_get_Name(This, value) \
+ ((This)->lpVtbl->get_Name(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_Label(This, value) \
+ ((This)->lpVtbl->get_Label(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_CommandId(This, value) \
+ ((This)->lpVtbl->get_CommandId(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_ShortcutKeyDescription(This, value) \
+ ((This)->lpVtbl->get_ShortcutKeyDescription(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_Icon(This, value) \
+ ((This)->lpVtbl->get_Icon(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_Kind(This, value) \
+ ((This)->lpVtbl->get_Kind(This, value))
+
+#define ICoreWebView2ContextMenuItem_put_IsEnabled(This, value) \
+ ((This)->lpVtbl->put_IsEnabled(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_IsEnabled(This, value) \
+ ((This)->lpVtbl->get_IsEnabled(This, value))
+
+#define ICoreWebView2ContextMenuItem_put_IsChecked(This, value) \
+ ((This)->lpVtbl->put_IsChecked(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_IsChecked(This, value) \
+ ((This)->lpVtbl->get_IsChecked(This, value))
+
+#define ICoreWebView2ContextMenuItem_get_Children(This, value) \
+ ((This)->lpVtbl->get_Children(This, value))
+
+#define ICoreWebView2ContextMenuItem_add_CustomItemSelected(This, eventHandler, token) \
+ ((This)->lpVtbl->add_CustomItemSelected(This, eventHandler, token))
+
+#define ICoreWebView2ContextMenuItem_remove_CustomItemSelected(This, token) \
+ ((This)->lpVtbl->remove_CustomItemSelected(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContextMenuItem_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CustomItemSelectedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2CustomItemSelectedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CustomItemSelectedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CustomItemSelectedEventHandler = {0x49e1d0bc, 0xfe9e, 0x4481, {0xb7, 0xc2, 0x32, 0x32, 0x4a, 0xa2, 0x19, 0x98}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("49e1d0bc-fe9e-4481-b7c2-32324aa21998")
+ ICoreWebView2CustomItemSelectedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2ContextMenuItem * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CustomItemSelectedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CustomItemSelectedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CustomItemSelectedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CustomItemSelectedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomItemSelectedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2CustomItemSelectedEventHandler *This,
+ /* [in] */ ICoreWebView2ContextMenuItem *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2CustomItemSelectedEventHandlerVtbl;
+
+ interface ICoreWebView2CustomItemSelectedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2CustomItemSelectedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CustomItemSelectedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CustomItemSelectedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CustomItemSelectedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CustomItemSelectedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CustomItemSelectedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuItemCollection_INTERFACE_DEFINED__
+#define __ICoreWebView2ContextMenuItemCollection_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContextMenuItemCollection */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContextMenuItemCollection = {0xf562a2f5, 0xc415, 0x45cf, {0xb9, 0x09, 0xd4, 0xb7, 0xc1, 0xe2, 0x76, 0xd3}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f562a2f5-c415-45cf-b909-d4b7c1e276d3")
+ ICoreWebView2ContextMenuItemCollection : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveValueAtIndex(
+ /* [in] */ UINT32 index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InsertValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [in] */ ICoreWebView2ContextMenuItem * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContextMenuItemCollectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContextMenuItemCollection *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContextMenuItemCollection *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContextMenuItemCollection *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItemCollection, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2ContextMenuItemCollection *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItemCollection, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2ContextMenuItemCollection *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItemCollection, RemoveValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *RemoveValueAtIndex)(
+ ICoreWebView2ContextMenuItemCollection *This,
+ /* [in] */ UINT32 index);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuItemCollection, InsertValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *InsertValueAtIndex)(
+ ICoreWebView2ContextMenuItemCollection *This,
+ /* [in] */ UINT32 index,
+ /* [in] */ ICoreWebView2ContextMenuItem *value);
+
+ END_INTERFACE
+ } ICoreWebView2ContextMenuItemCollectionVtbl;
+
+ interface ICoreWebView2ContextMenuItemCollection
+ {
+ CONST_VTBL struct ICoreWebView2ContextMenuItemCollectionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContextMenuItemCollection_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContextMenuItemCollection_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContextMenuItemCollection_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContextMenuItemCollection_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2ContextMenuItemCollection_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#define ICoreWebView2ContextMenuItemCollection_RemoveValueAtIndex(This, index) \
+ ((This)->lpVtbl->RemoveValueAtIndex(This, index))
+
+#define ICoreWebView2ContextMenuItemCollection_InsertValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->InsertValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContextMenuItemCollection_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuRequestedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2ContextMenuRequestedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContextMenuRequestedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContextMenuRequestedEventArgs = {0xa1d309ee, 0xc03f, 0x11eb, {0x85, 0x29, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a1d309ee-c03f-11eb-8529-0242ac130003")
+ ICoreWebView2ContextMenuRequestedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MenuItems(
+ /* [retval][out] */ ICoreWebView2ContextMenuItemCollection * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ContextMenuTarget(
+ /* [retval][out] */ ICoreWebView2ContextMenuTarget * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Location(
+ /* [retval][out] */ POINT * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_SelectedCommandId(
+ /* [in] */ INT32 value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SelectedCommandId(
+ /* [retval][out] */ INT32 * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContextMenuRequestedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, get_MenuItems)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MenuItems)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2ContextMenuItemCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, get_ContextMenuTarget)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContextMenuTarget)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2ContextMenuTarget **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, get_Location)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Location)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [retval][out] */ POINT *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, put_SelectedCommandId)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_SelectedCommandId)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [in] */ INT32 value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, get_SelectedCommandId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SelectedCommandId)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [retval][out] */ INT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2ContextMenuRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2ContextMenuRequestedEventArgsVtbl;
+
+ interface ICoreWebView2ContextMenuRequestedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2ContextMenuRequestedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_get_MenuItems(This, value) \
+ ((This)->lpVtbl->get_MenuItems(This, value))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_get_ContextMenuTarget(This, value) \
+ ((This)->lpVtbl->get_ContextMenuTarget(This, value))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_get_Location(This, value) \
+ ((This)->lpVtbl->get_Location(This, value))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_put_SelectedCommandId(This, value) \
+ ((This)->lpVtbl->put_SelectedCommandId(This, value))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_get_SelectedCommandId(This, value) \
+ ((This)->lpVtbl->get_SelectedCommandId(This, value))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_put_Handled(This, value) \
+ ((This)->lpVtbl->put_Handled(This, value))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_get_Handled(This, value) \
+ ((This)->lpVtbl->get_Handled(This, value))
+
+#define ICoreWebView2ContextMenuRequestedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContextMenuRequestedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ContextMenuTarget_INTERFACE_DEFINED__
+#define __ICoreWebView2ContextMenuTarget_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ContextMenuTarget */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ContextMenuTarget = {0xb8611d99, 0xeed6, 0x4f3f, {0x90, 0x2c, 0xa1, 0x98, 0x50, 0x2a, 0xd4, 0x72}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b8611d99-eed6-4f3f-902c-a198502ad472")
+ ICoreWebView2ContextMenuTarget : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Kind(
+ /* [retval][out] */ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsEditable(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsRequestedForMainFrame(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PageUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FrameUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasLinkUri(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_LinkUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasLinkText(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_LinkText(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasSourceUri(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SourceUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasSelection(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SelectionText(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ContextMenuTargetVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ContextMenuTarget *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ContextMenuTarget *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_Kind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Kind)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_IsEditable)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsEditable)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_IsRequestedForMainFrame)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsRequestedForMainFrame)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_PageUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PageUri)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_FrameUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameUri)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_HasLinkUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasLinkUri)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_LinkUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_LinkUri)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_HasLinkText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasLinkText)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_LinkText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_LinkText)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_HasSourceUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasSourceUri)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_SourceUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SourceUri)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_HasSelection)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasSelection)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ContextMenuTarget, get_SelectionText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SelectionText)(
+ ICoreWebView2ContextMenuTarget *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2ContextMenuTargetVtbl;
+
+ interface ICoreWebView2ContextMenuTarget
+ {
+ CONST_VTBL struct ICoreWebView2ContextMenuTargetVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ContextMenuTarget_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ContextMenuTarget_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ContextMenuTarget_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ContextMenuTarget_get_Kind(This, value) \
+ ((This)->lpVtbl->get_Kind(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_IsEditable(This, value) \
+ ((This)->lpVtbl->get_IsEditable(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_IsRequestedForMainFrame(This, value) \
+ ((This)->lpVtbl->get_IsRequestedForMainFrame(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_PageUri(This, value) \
+ ((This)->lpVtbl->get_PageUri(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_FrameUri(This, value) \
+ ((This)->lpVtbl->get_FrameUri(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_HasLinkUri(This, value) \
+ ((This)->lpVtbl->get_HasLinkUri(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_LinkUri(This, value) \
+ ((This)->lpVtbl->get_LinkUri(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_HasLinkText(This, value) \
+ ((This)->lpVtbl->get_HasLinkText(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_LinkText(This, value) \
+ ((This)->lpVtbl->get_LinkText(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_HasSourceUri(This, value) \
+ ((This)->lpVtbl->get_HasSourceUri(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_SourceUri(This, value) \
+ ((This)->lpVtbl->get_SourceUri(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_HasSelection(This, value) \
+ ((This)->lpVtbl->get_HasSelection(This, value))
+
+#define ICoreWebView2ContextMenuTarget_get_SelectionText(This, value) \
+ ((This)->lpVtbl->get_SelectionText(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ContextMenuTarget_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller_INTERFACE_DEFINED__
+#define __ICoreWebView2Controller_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Controller */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Controller = {0x4d00c0d1, 0x9434, 0x4eb6, {0x80, 0x78, 0x86, 0x97, 0xa5, 0x60, 0x33, 0x4f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4d00c0d1-9434-4eb6-8078-8697a560334f")
+ ICoreWebView2Controller : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsVisible(
+ /* [retval][out] */ BOOL * isVisible) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsVisible(
+ /* [in] */ BOOL isVisible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Bounds(
+ /* [retval][out] */ RECT * bounds) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Bounds(
+ /* [in] */ RECT bounds) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ZoomFactor(
+ /* [retval][out] */ double *zoomFactor) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ZoomFactor(
+ /* [in] */ double zoomFactor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_ZoomFactorChanged(
+ /* [in] */ ICoreWebView2ZoomFactorChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ZoomFactorChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBoundsAndZoomFactor(
+ /* [in] */ RECT bounds,
+ /* [in] */ double zoomFactor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MoveFocus(
+ /* [in] */ COREWEBVIEW2_MOVE_FOCUS_REASON reason) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_MoveFocusRequested(
+ /* [in] */ ICoreWebView2MoveFocusRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_MoveFocusRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_GotFocus(
+ /* [in] */ ICoreWebView2FocusChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_GotFocus(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_LostFocus(
+ /* [in] */ ICoreWebView2FocusChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_LostFocus(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_AcceleratorKeyPressed(
+ /* [in] */ ICoreWebView2AcceleratorKeyPressedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_AcceleratorKeyPressed(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ParentWindow(
+ /* [retval][out] */ HWND * parentWindow) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ParentWindow(
+ /* [in] */ HWND parentWindow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE NotifyParentWindowPositionChanged(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Close(void) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CoreWebView2(
+ /* [retval][out] */ ICoreWebView2 * *coreWebView2) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ControllerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Controller *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Controller *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Controller *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_IsVisible)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsVisible)(
+ ICoreWebView2Controller *This,
+ /* [retval][out] */ BOOL *isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_IsVisible)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsVisible)(
+ ICoreWebView2Controller *This,
+ /* [in] */ BOOL isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_Bounds)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Bounds)(
+ ICoreWebView2Controller *This,
+ /* [retval][out] */ RECT *bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_Bounds)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Bounds)(
+ ICoreWebView2Controller *This,
+ /* [in] */ RECT bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ZoomFactor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ZoomFactor)(
+ ICoreWebView2Controller *This,
+ /* [retval][out] */ double *zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ZoomFactor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ZoomFactor)(
+ ICoreWebView2Controller *This,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ZoomFactorChanged)(
+ ICoreWebView2Controller *This,
+ /* [in] */ ICoreWebView2ZoomFactorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ZoomFactorChanged)(
+ ICoreWebView2Controller *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, SetBoundsAndZoomFactor)
+ HRESULT(STDMETHODCALLTYPE *SetBoundsAndZoomFactor)(
+ ICoreWebView2Controller *This,
+ /* [in] */ RECT bounds,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, MoveFocus)
+ HRESULT(STDMETHODCALLTYPE *MoveFocus)(
+ ICoreWebView2Controller *This,
+ /* [in] */ COREWEBVIEW2_MOVE_FOCUS_REASON reason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *add_MoveFocusRequested)(
+ ICoreWebView2Controller *This,
+ /* [in] */ ICoreWebView2MoveFocusRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_MoveFocusRequested)(
+ ICoreWebView2Controller *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *add_GotFocus)(
+ ICoreWebView2Controller *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_GotFocus)(
+ ICoreWebView2Controller *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *add_LostFocus)(
+ ICoreWebView2Controller *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_LostFocus)(
+ ICoreWebView2Controller *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *add_AcceleratorKeyPressed)(
+ ICoreWebView2Controller *This,
+ /* [in] */ ICoreWebView2AcceleratorKeyPressedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *remove_AcceleratorKeyPressed)(
+ ICoreWebView2Controller *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ParentWindow)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ParentWindow)(
+ ICoreWebView2Controller *This,
+ /* [retval][out] */ HWND *parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ParentWindow)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ParentWindow)(
+ ICoreWebView2Controller *This,
+ /* [in] */ HWND parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, NotifyParentWindowPositionChanged)
+ HRESULT(STDMETHODCALLTYPE *NotifyParentWindowPositionChanged)(
+ ICoreWebView2Controller *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, Close)
+ HRESULT(STDMETHODCALLTYPE *Close)(
+ ICoreWebView2Controller *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_CoreWebView2)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CoreWebView2)(
+ ICoreWebView2Controller *This,
+ /* [retval][out] */ ICoreWebView2 **coreWebView2);
+
+ END_INTERFACE
+ } ICoreWebView2ControllerVtbl;
+
+ interface ICoreWebView2Controller
+ {
+ CONST_VTBL struct ICoreWebView2ControllerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Controller_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Controller_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Controller_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Controller_get_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->get_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller_put_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->put_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller_get_Bounds(This, bounds) \
+ ((This)->lpVtbl->get_Bounds(This, bounds))
+
+#define ICoreWebView2Controller_put_Bounds(This, bounds) \
+ ((This)->lpVtbl->put_Bounds(This, bounds))
+
+#define ICoreWebView2Controller_get_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->get_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller_put_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->put_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller_add_ZoomFactorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ZoomFactorChanged(This, eventHandler, token))
+
+#define ICoreWebView2Controller_remove_ZoomFactorChanged(This, token) \
+ ((This)->lpVtbl->remove_ZoomFactorChanged(This, token))
+
+#define ICoreWebView2Controller_SetBoundsAndZoomFactor(This, bounds, zoomFactor) \
+ ((This)->lpVtbl->SetBoundsAndZoomFactor(This, bounds, zoomFactor))
+
+#define ICoreWebView2Controller_MoveFocus(This, reason) \
+ ((This)->lpVtbl->MoveFocus(This, reason))
+
+#define ICoreWebView2Controller_add_MoveFocusRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_MoveFocusRequested(This, eventHandler, token))
+
+#define ICoreWebView2Controller_remove_MoveFocusRequested(This, token) \
+ ((This)->lpVtbl->remove_MoveFocusRequested(This, token))
+
+#define ICoreWebView2Controller_add_GotFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_GotFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller_remove_GotFocus(This, token) \
+ ((This)->lpVtbl->remove_GotFocus(This, token))
+
+#define ICoreWebView2Controller_add_LostFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LostFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller_remove_LostFocus(This, token) \
+ ((This)->lpVtbl->remove_LostFocus(This, token))
+
+#define ICoreWebView2Controller_add_AcceleratorKeyPressed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_AcceleratorKeyPressed(This, eventHandler, token))
+
+#define ICoreWebView2Controller_remove_AcceleratorKeyPressed(This, token) \
+ ((This)->lpVtbl->remove_AcceleratorKeyPressed(This, token))
+
+#define ICoreWebView2Controller_get_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->get_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller_put_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->put_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller_NotifyParentWindowPositionChanged(This) \
+ ((This)->lpVtbl->NotifyParentWindowPositionChanged(This))
+
+#define ICoreWebView2Controller_Close(This) \
+ ((This)->lpVtbl->Close(This))
+
+#define ICoreWebView2Controller_get_CoreWebView2(This, coreWebView2) \
+ ((This)->lpVtbl->get_CoreWebView2(This, coreWebView2))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Controller_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2AcceleratorKeyPressedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2AcceleratorKeyPressedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2AcceleratorKeyPressedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2AcceleratorKeyPressedEventHandler = {0xb29c7e28, 0xfa79, 0x41a8, {0x8e, 0x44, 0x65, 0x81, 0x1c, 0x76, 0xdc, 0xb2}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b29c7e28-fa79-41a8-8e44-65811c76dcb2")
+ ICoreWebView2AcceleratorKeyPressedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Controller * sender,
+ /* [in] */ ICoreWebView2AcceleratorKeyPressedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2AcceleratorKeyPressedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2AcceleratorKeyPressedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2AcceleratorKeyPressedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2AcceleratorKeyPressedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2AcceleratorKeyPressedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2AcceleratorKeyPressedEventHandler *This,
+ /* [in] */ ICoreWebView2Controller *sender,
+ /* [in] */ ICoreWebView2AcceleratorKeyPressedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2AcceleratorKeyPressedEventHandlerVtbl;
+
+ interface ICoreWebView2AcceleratorKeyPressedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2AcceleratorKeyPressedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2AcceleratorKeyPressedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2AcceleratorKeyPressedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2AcceleratorKeyPressedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2AcceleratorKeyPressedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2AcceleratorKeyPressedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FocusChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FocusChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FocusChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FocusChangedEventHandler = {0x05ea24bd, 0x6452, 0x4926, {0x90, 0x14, 0x4b, 0x82, 0xb4, 0x98, 0x13, 0x5d}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("05ea24bd-6452-4926-9014-4b82b498135d")
+ ICoreWebView2FocusChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Controller * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FocusChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FocusChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FocusChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FocusChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FocusChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FocusChangedEventHandler *This,
+ /* [in] */ ICoreWebView2Controller *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2FocusChangedEventHandlerVtbl;
+
+ interface ICoreWebView2FocusChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FocusChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FocusChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FocusChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FocusChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FocusChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FocusChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2MoveFocusRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2MoveFocusRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2MoveFocusRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2MoveFocusRequestedEventHandler = {0x69035451, 0x6dc7, 0x4cb8, {0x9b, 0xce, 0xb2, 0xbd, 0x70, 0xad, 0x28, 0x9f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("69035451-6dc7-4cb8-9bce-b2bd70ad289f")
+ ICoreWebView2MoveFocusRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Controller * sender,
+ /* [in] */ ICoreWebView2MoveFocusRequestedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2MoveFocusRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2MoveFocusRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2MoveFocusRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2MoveFocusRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2MoveFocusRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2MoveFocusRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2Controller *sender,
+ /* [in] */ ICoreWebView2MoveFocusRequestedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2MoveFocusRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2MoveFocusRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2MoveFocusRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2MoveFocusRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2MoveFocusRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2MoveFocusRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2MoveFocusRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2MoveFocusRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ZoomFactorChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ZoomFactorChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ZoomFactorChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ZoomFactorChangedEventHandler = {0xb52d71d6, 0xc4df, 0x4543, {0xa9, 0x0c, 0x64, 0xa3, 0xe6, 0x0f, 0x38, 0xcb}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b52d71d6-c4df-4543-a90c-64a3e60f38cb")
+ ICoreWebView2ZoomFactorChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Controller * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ZoomFactorChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ZoomFactorChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ZoomFactorChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ZoomFactorChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ZoomFactorChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ZoomFactorChangedEventHandler *This,
+ /* [in] */ ICoreWebView2Controller *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2ZoomFactorChangedEventHandlerVtbl;
+
+ interface ICoreWebView2ZoomFactorChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ZoomFactorChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ZoomFactorChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ZoomFactorChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ZoomFactorChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ZoomFactorChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ZoomFactorChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller2_INTERFACE_DEFINED__
+#define __ICoreWebView2Controller2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Controller2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Controller2 = {0xc979903e, 0xd4ca, 0x4228, {0x92, 0xeb, 0x47, 0xee, 0x3f, 0xa9, 0x6e, 0xab}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c979903e-d4ca-4228-92eb-47ee3fa96eab")
+ ICoreWebView2Controller2 : public ICoreWebView2Controller
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DefaultBackgroundColor(
+ /* [retval][out] */ COREWEBVIEW2_COLOR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_DefaultBackgroundColor(
+ /* [in] */ COREWEBVIEW2_COLOR value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Controller2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Controller2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Controller2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_IsVisible)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsVisible)(
+ ICoreWebView2Controller2 *This,
+ /* [retval][out] */ BOOL *isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_IsVisible)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsVisible)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ BOOL isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_Bounds)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Bounds)(
+ ICoreWebView2Controller2 *This,
+ /* [retval][out] */ RECT *bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_Bounds)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Bounds)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ RECT bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ZoomFactor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ZoomFactor)(
+ ICoreWebView2Controller2 *This,
+ /* [retval][out] */ double *zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ZoomFactor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ZoomFactor)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ZoomFactorChanged)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ ICoreWebView2ZoomFactorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ZoomFactorChanged)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, SetBoundsAndZoomFactor)
+ HRESULT(STDMETHODCALLTYPE *SetBoundsAndZoomFactor)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ RECT bounds,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, MoveFocus)
+ HRESULT(STDMETHODCALLTYPE *MoveFocus)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ COREWEBVIEW2_MOVE_FOCUS_REASON reason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *add_MoveFocusRequested)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ ICoreWebView2MoveFocusRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_MoveFocusRequested)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *add_GotFocus)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_GotFocus)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *add_LostFocus)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_LostFocus)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *add_AcceleratorKeyPressed)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ ICoreWebView2AcceleratorKeyPressedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *remove_AcceleratorKeyPressed)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ParentWindow)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ParentWindow)(
+ ICoreWebView2Controller2 *This,
+ /* [retval][out] */ HWND *parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ParentWindow)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ParentWindow)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ HWND parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, NotifyParentWindowPositionChanged)
+ HRESULT(STDMETHODCALLTYPE *NotifyParentWindowPositionChanged)(
+ ICoreWebView2Controller2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, Close)
+ HRESULT(STDMETHODCALLTYPE *Close)(
+ ICoreWebView2Controller2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_CoreWebView2)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CoreWebView2)(
+ ICoreWebView2Controller2 *This,
+ /* [retval][out] */ ICoreWebView2 **coreWebView2);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller2, get_DefaultBackgroundColor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultBackgroundColor)(
+ ICoreWebView2Controller2 *This,
+ /* [retval][out] */ COREWEBVIEW2_COLOR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller2, put_DefaultBackgroundColor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultBackgroundColor)(
+ ICoreWebView2Controller2 *This,
+ /* [in] */ COREWEBVIEW2_COLOR value);
+
+ END_INTERFACE
+ } ICoreWebView2Controller2Vtbl;
+
+ interface ICoreWebView2Controller2
+ {
+ CONST_VTBL struct ICoreWebView2Controller2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Controller2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Controller2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Controller2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Controller2_get_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->get_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller2_put_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->put_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller2_get_Bounds(This, bounds) \
+ ((This)->lpVtbl->get_Bounds(This, bounds))
+
+#define ICoreWebView2Controller2_put_Bounds(This, bounds) \
+ ((This)->lpVtbl->put_Bounds(This, bounds))
+
+#define ICoreWebView2Controller2_get_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->get_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller2_put_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->put_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller2_add_ZoomFactorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ZoomFactorChanged(This, eventHandler, token))
+
+#define ICoreWebView2Controller2_remove_ZoomFactorChanged(This, token) \
+ ((This)->lpVtbl->remove_ZoomFactorChanged(This, token))
+
+#define ICoreWebView2Controller2_SetBoundsAndZoomFactor(This, bounds, zoomFactor) \
+ ((This)->lpVtbl->SetBoundsAndZoomFactor(This, bounds, zoomFactor))
+
+#define ICoreWebView2Controller2_MoveFocus(This, reason) \
+ ((This)->lpVtbl->MoveFocus(This, reason))
+
+#define ICoreWebView2Controller2_add_MoveFocusRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_MoveFocusRequested(This, eventHandler, token))
+
+#define ICoreWebView2Controller2_remove_MoveFocusRequested(This, token) \
+ ((This)->lpVtbl->remove_MoveFocusRequested(This, token))
+
+#define ICoreWebView2Controller2_add_GotFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_GotFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller2_remove_GotFocus(This, token) \
+ ((This)->lpVtbl->remove_GotFocus(This, token))
+
+#define ICoreWebView2Controller2_add_LostFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LostFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller2_remove_LostFocus(This, token) \
+ ((This)->lpVtbl->remove_LostFocus(This, token))
+
+#define ICoreWebView2Controller2_add_AcceleratorKeyPressed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_AcceleratorKeyPressed(This, eventHandler, token))
+
+#define ICoreWebView2Controller2_remove_AcceleratorKeyPressed(This, token) \
+ ((This)->lpVtbl->remove_AcceleratorKeyPressed(This, token))
+
+#define ICoreWebView2Controller2_get_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->get_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller2_put_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->put_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller2_NotifyParentWindowPositionChanged(This) \
+ ((This)->lpVtbl->NotifyParentWindowPositionChanged(This))
+
+#define ICoreWebView2Controller2_Close(This) \
+ ((This)->lpVtbl->Close(This))
+
+#define ICoreWebView2Controller2_get_CoreWebView2(This, coreWebView2) \
+ ((This)->lpVtbl->get_CoreWebView2(This, coreWebView2))
+
+#define ICoreWebView2Controller2_get_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->get_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2Controller2_put_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->put_DefaultBackgroundColor(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Controller2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller3_INTERFACE_DEFINED__
+#define __ICoreWebView2Controller3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Controller3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Controller3 = {0xf9614724, 0x5d2b, 0x41dc, {0xae, 0xf7, 0x73, 0xd6, 0x2b, 0x51, 0x54, 0x3b}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f9614724-5d2b-41dc-aef7-73d62b51543b")
+ ICoreWebView2Controller3 : public ICoreWebView2Controller2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_RasterizationScale(
+ /* [retval][out] */ double *scale) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_RasterizationScale(
+ /* [in] */ double scale) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldDetectMonitorScaleChanges(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ShouldDetectMonitorScaleChanges(
+ /* [in] */ BOOL value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_RasterizationScaleChanged(
+ /* [in] */ ICoreWebView2RasterizationScaleChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_RasterizationScaleChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BoundsMode(
+ /* [retval][out] */ COREWEBVIEW2_BOUNDS_MODE * boundsMode) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_BoundsMode(
+ /* [in] */ COREWEBVIEW2_BOUNDS_MODE boundsMode) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Controller3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Controller3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Controller3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_IsVisible)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsVisible)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ BOOL *isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_IsVisible)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsVisible)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ BOOL isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_Bounds)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Bounds)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ RECT *bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_Bounds)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Bounds)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ RECT bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ZoomFactor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ZoomFactor)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ double *zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ZoomFactor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ZoomFactor)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ZoomFactorChanged)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ ICoreWebView2ZoomFactorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ZoomFactorChanged)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, SetBoundsAndZoomFactor)
+ HRESULT(STDMETHODCALLTYPE *SetBoundsAndZoomFactor)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ RECT bounds,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, MoveFocus)
+ HRESULT(STDMETHODCALLTYPE *MoveFocus)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ COREWEBVIEW2_MOVE_FOCUS_REASON reason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *add_MoveFocusRequested)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ ICoreWebView2MoveFocusRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_MoveFocusRequested)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *add_GotFocus)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_GotFocus)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *add_LostFocus)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_LostFocus)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *add_AcceleratorKeyPressed)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ ICoreWebView2AcceleratorKeyPressedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *remove_AcceleratorKeyPressed)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ParentWindow)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ParentWindow)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ HWND *parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ParentWindow)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ParentWindow)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ HWND parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, NotifyParentWindowPositionChanged)
+ HRESULT(STDMETHODCALLTYPE *NotifyParentWindowPositionChanged)(
+ ICoreWebView2Controller3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, Close)
+ HRESULT(STDMETHODCALLTYPE *Close)(
+ ICoreWebView2Controller3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_CoreWebView2)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CoreWebView2)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ ICoreWebView2 **coreWebView2);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller2, get_DefaultBackgroundColor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultBackgroundColor)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ COREWEBVIEW2_COLOR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller2, put_DefaultBackgroundColor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultBackgroundColor)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ COREWEBVIEW2_COLOR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, get_RasterizationScale)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RasterizationScale)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ double *scale);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, put_RasterizationScale)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_RasterizationScale)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ double scale);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, get_ShouldDetectMonitorScaleChanges)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldDetectMonitorScaleChanges)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, put_ShouldDetectMonitorScaleChanges)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldDetectMonitorScaleChanges)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, add_RasterizationScaleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_RasterizationScaleChanged)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ ICoreWebView2RasterizationScaleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, remove_RasterizationScaleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_RasterizationScaleChanged)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, get_BoundsMode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BoundsMode)(
+ ICoreWebView2Controller3 *This,
+ /* [retval][out] */ COREWEBVIEW2_BOUNDS_MODE *boundsMode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, put_BoundsMode)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_BoundsMode)(
+ ICoreWebView2Controller3 *This,
+ /* [in] */ COREWEBVIEW2_BOUNDS_MODE boundsMode);
+
+ END_INTERFACE
+ } ICoreWebView2Controller3Vtbl;
+
+ interface ICoreWebView2Controller3
+ {
+ CONST_VTBL struct ICoreWebView2Controller3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Controller3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Controller3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Controller3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Controller3_get_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->get_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller3_put_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->put_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller3_get_Bounds(This, bounds) \
+ ((This)->lpVtbl->get_Bounds(This, bounds))
+
+#define ICoreWebView2Controller3_put_Bounds(This, bounds) \
+ ((This)->lpVtbl->put_Bounds(This, bounds))
+
+#define ICoreWebView2Controller3_get_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->get_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller3_put_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->put_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller3_add_ZoomFactorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ZoomFactorChanged(This, eventHandler, token))
+
+#define ICoreWebView2Controller3_remove_ZoomFactorChanged(This, token) \
+ ((This)->lpVtbl->remove_ZoomFactorChanged(This, token))
+
+#define ICoreWebView2Controller3_SetBoundsAndZoomFactor(This, bounds, zoomFactor) \
+ ((This)->lpVtbl->SetBoundsAndZoomFactor(This, bounds, zoomFactor))
+
+#define ICoreWebView2Controller3_MoveFocus(This, reason) \
+ ((This)->lpVtbl->MoveFocus(This, reason))
+
+#define ICoreWebView2Controller3_add_MoveFocusRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_MoveFocusRequested(This, eventHandler, token))
+
+#define ICoreWebView2Controller3_remove_MoveFocusRequested(This, token) \
+ ((This)->lpVtbl->remove_MoveFocusRequested(This, token))
+
+#define ICoreWebView2Controller3_add_GotFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_GotFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller3_remove_GotFocus(This, token) \
+ ((This)->lpVtbl->remove_GotFocus(This, token))
+
+#define ICoreWebView2Controller3_add_LostFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LostFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller3_remove_LostFocus(This, token) \
+ ((This)->lpVtbl->remove_LostFocus(This, token))
+
+#define ICoreWebView2Controller3_add_AcceleratorKeyPressed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_AcceleratorKeyPressed(This, eventHandler, token))
+
+#define ICoreWebView2Controller3_remove_AcceleratorKeyPressed(This, token) \
+ ((This)->lpVtbl->remove_AcceleratorKeyPressed(This, token))
+
+#define ICoreWebView2Controller3_get_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->get_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller3_put_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->put_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller3_NotifyParentWindowPositionChanged(This) \
+ ((This)->lpVtbl->NotifyParentWindowPositionChanged(This))
+
+#define ICoreWebView2Controller3_Close(This) \
+ ((This)->lpVtbl->Close(This))
+
+#define ICoreWebView2Controller3_get_CoreWebView2(This, coreWebView2) \
+ ((This)->lpVtbl->get_CoreWebView2(This, coreWebView2))
+
+#define ICoreWebView2Controller3_get_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->get_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2Controller3_put_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->put_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2Controller3_get_RasterizationScale(This, scale) \
+ ((This)->lpVtbl->get_RasterizationScale(This, scale))
+
+#define ICoreWebView2Controller3_put_RasterizationScale(This, scale) \
+ ((This)->lpVtbl->put_RasterizationScale(This, scale))
+
+#define ICoreWebView2Controller3_get_ShouldDetectMonitorScaleChanges(This, value) \
+ ((This)->lpVtbl->get_ShouldDetectMonitorScaleChanges(This, value))
+
+#define ICoreWebView2Controller3_put_ShouldDetectMonitorScaleChanges(This, value) \
+ ((This)->lpVtbl->put_ShouldDetectMonitorScaleChanges(This, value))
+
+#define ICoreWebView2Controller3_add_RasterizationScaleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_RasterizationScaleChanged(This, eventHandler, token))
+
+#define ICoreWebView2Controller3_remove_RasterizationScaleChanged(This, token) \
+ ((This)->lpVtbl->remove_RasterizationScaleChanged(This, token))
+
+#define ICoreWebView2Controller3_get_BoundsMode(This, boundsMode) \
+ ((This)->lpVtbl->get_BoundsMode(This, boundsMode))
+
+#define ICoreWebView2Controller3_put_BoundsMode(This, boundsMode) \
+ ((This)->lpVtbl->put_BoundsMode(This, boundsMode))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Controller3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2RasterizationScaleChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2RasterizationScaleChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2RasterizationScaleChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2RasterizationScaleChangedEventHandler = {0x9c98c8b1, 0xac53, 0x427e, {0xa3, 0x45, 0x30, 0x49, 0xb5, 0x52, 0x4b, 0xbe}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9c98c8b1-ac53-427e-a345-3049b5524bbe")
+ ICoreWebView2RasterizationScaleChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Controller * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2RasterizationScaleChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2RasterizationScaleChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2RasterizationScaleChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2RasterizationScaleChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2RasterizationScaleChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2RasterizationScaleChangedEventHandler *This,
+ /* [in] */ ICoreWebView2Controller *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2RasterizationScaleChangedEventHandlerVtbl;
+
+ interface ICoreWebView2RasterizationScaleChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2RasterizationScaleChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2RasterizationScaleChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2RasterizationScaleChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2RasterizationScaleChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2RasterizationScaleChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2RasterizationScaleChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Controller4_INTERFACE_DEFINED__
+#define __ICoreWebView2Controller4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Controller4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Controller4 = {0x97d418d5, 0xa426, 0x4e49, {0xa1, 0x51, 0xe1, 0xa1, 0x0f, 0x32, 0x7d, 0x9e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("97d418d5-a426-4e49-a151-e1a10f327d9e")
+ ICoreWebView2Controller4 : public ICoreWebView2Controller3
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AllowExternalDrop(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AllowExternalDrop(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Controller4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Controller4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Controller4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_IsVisible)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsVisible)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ BOOL *isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_IsVisible)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsVisible)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ BOOL isVisible);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_Bounds)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Bounds)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ RECT *bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_Bounds)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Bounds)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ RECT bounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ZoomFactor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ZoomFactor)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ double *zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ZoomFactor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ZoomFactor)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ZoomFactorChanged)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ ICoreWebView2ZoomFactorChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_ZoomFactorChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ZoomFactorChanged)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, SetBoundsAndZoomFactor)
+ HRESULT(STDMETHODCALLTYPE *SetBoundsAndZoomFactor)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ RECT bounds,
+ /* [in] */ double zoomFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, MoveFocus)
+ HRESULT(STDMETHODCALLTYPE *MoveFocus)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ COREWEBVIEW2_MOVE_FOCUS_REASON reason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *add_MoveFocusRequested)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ ICoreWebView2MoveFocusRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_MoveFocusRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_MoveFocusRequested)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *add_GotFocus)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_GotFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_GotFocus)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *add_LostFocus)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ ICoreWebView2FocusChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_LostFocus)
+ HRESULT(STDMETHODCALLTYPE *remove_LostFocus)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, add_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *add_AcceleratorKeyPressed)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ ICoreWebView2AcceleratorKeyPressedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, remove_AcceleratorKeyPressed)
+ HRESULT(STDMETHODCALLTYPE *remove_AcceleratorKeyPressed)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_ParentWindow)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ParentWindow)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ HWND *parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, put_ParentWindow)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ParentWindow)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ HWND parentWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, NotifyParentWindowPositionChanged)
+ HRESULT(STDMETHODCALLTYPE *NotifyParentWindowPositionChanged)(
+ ICoreWebView2Controller4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, Close)
+ HRESULT(STDMETHODCALLTYPE *Close)(
+ ICoreWebView2Controller4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller, get_CoreWebView2)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CoreWebView2)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ ICoreWebView2 **coreWebView2);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller2, get_DefaultBackgroundColor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultBackgroundColor)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ COREWEBVIEW2_COLOR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller2, put_DefaultBackgroundColor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultBackgroundColor)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ COREWEBVIEW2_COLOR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, get_RasterizationScale)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RasterizationScale)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ double *scale);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, put_RasterizationScale)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_RasterizationScale)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ double scale);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, get_ShouldDetectMonitorScaleChanges)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldDetectMonitorScaleChanges)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, put_ShouldDetectMonitorScaleChanges)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldDetectMonitorScaleChanges)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, add_RasterizationScaleChanged)
+ HRESULT(STDMETHODCALLTYPE *add_RasterizationScaleChanged)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ ICoreWebView2RasterizationScaleChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, remove_RasterizationScaleChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_RasterizationScaleChanged)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, get_BoundsMode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BoundsMode)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ COREWEBVIEW2_BOUNDS_MODE *boundsMode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller3, put_BoundsMode)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_BoundsMode)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ COREWEBVIEW2_BOUNDS_MODE boundsMode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller4, get_AllowExternalDrop)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AllowExternalDrop)(
+ ICoreWebView2Controller4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Controller4, put_AllowExternalDrop)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AllowExternalDrop)(
+ ICoreWebView2Controller4 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Controller4Vtbl;
+
+ interface ICoreWebView2Controller4
+ {
+ CONST_VTBL struct ICoreWebView2Controller4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Controller4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Controller4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Controller4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Controller4_get_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->get_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller4_put_IsVisible(This, isVisible) \
+ ((This)->lpVtbl->put_IsVisible(This, isVisible))
+
+#define ICoreWebView2Controller4_get_Bounds(This, bounds) \
+ ((This)->lpVtbl->get_Bounds(This, bounds))
+
+#define ICoreWebView2Controller4_put_Bounds(This, bounds) \
+ ((This)->lpVtbl->put_Bounds(This, bounds))
+
+#define ICoreWebView2Controller4_get_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->get_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller4_put_ZoomFactor(This, zoomFactor) \
+ ((This)->lpVtbl->put_ZoomFactor(This, zoomFactor))
+
+#define ICoreWebView2Controller4_add_ZoomFactorChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ZoomFactorChanged(This, eventHandler, token))
+
+#define ICoreWebView2Controller4_remove_ZoomFactorChanged(This, token) \
+ ((This)->lpVtbl->remove_ZoomFactorChanged(This, token))
+
+#define ICoreWebView2Controller4_SetBoundsAndZoomFactor(This, bounds, zoomFactor) \
+ ((This)->lpVtbl->SetBoundsAndZoomFactor(This, bounds, zoomFactor))
+
+#define ICoreWebView2Controller4_MoveFocus(This, reason) \
+ ((This)->lpVtbl->MoveFocus(This, reason))
+
+#define ICoreWebView2Controller4_add_MoveFocusRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_MoveFocusRequested(This, eventHandler, token))
+
+#define ICoreWebView2Controller4_remove_MoveFocusRequested(This, token) \
+ ((This)->lpVtbl->remove_MoveFocusRequested(This, token))
+
+#define ICoreWebView2Controller4_add_GotFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_GotFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller4_remove_GotFocus(This, token) \
+ ((This)->lpVtbl->remove_GotFocus(This, token))
+
+#define ICoreWebView2Controller4_add_LostFocus(This, eventHandler, token) \
+ ((This)->lpVtbl->add_LostFocus(This, eventHandler, token))
+
+#define ICoreWebView2Controller4_remove_LostFocus(This, token) \
+ ((This)->lpVtbl->remove_LostFocus(This, token))
+
+#define ICoreWebView2Controller4_add_AcceleratorKeyPressed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_AcceleratorKeyPressed(This, eventHandler, token))
+
+#define ICoreWebView2Controller4_remove_AcceleratorKeyPressed(This, token) \
+ ((This)->lpVtbl->remove_AcceleratorKeyPressed(This, token))
+
+#define ICoreWebView2Controller4_get_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->get_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller4_put_ParentWindow(This, parentWindow) \
+ ((This)->lpVtbl->put_ParentWindow(This, parentWindow))
+
+#define ICoreWebView2Controller4_NotifyParentWindowPositionChanged(This) \
+ ((This)->lpVtbl->NotifyParentWindowPositionChanged(This))
+
+#define ICoreWebView2Controller4_Close(This) \
+ ((This)->lpVtbl->Close(This))
+
+#define ICoreWebView2Controller4_get_CoreWebView2(This, coreWebView2) \
+ ((This)->lpVtbl->get_CoreWebView2(This, coreWebView2))
+
+#define ICoreWebView2Controller4_get_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->get_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2Controller4_put_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->put_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2Controller4_get_RasterizationScale(This, scale) \
+ ((This)->lpVtbl->get_RasterizationScale(This, scale))
+
+#define ICoreWebView2Controller4_put_RasterizationScale(This, scale) \
+ ((This)->lpVtbl->put_RasterizationScale(This, scale))
+
+#define ICoreWebView2Controller4_get_ShouldDetectMonitorScaleChanges(This, value) \
+ ((This)->lpVtbl->get_ShouldDetectMonitorScaleChanges(This, value))
+
+#define ICoreWebView2Controller4_put_ShouldDetectMonitorScaleChanges(This, value) \
+ ((This)->lpVtbl->put_ShouldDetectMonitorScaleChanges(This, value))
+
+#define ICoreWebView2Controller4_add_RasterizationScaleChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_RasterizationScaleChanged(This, eventHandler, token))
+
+#define ICoreWebView2Controller4_remove_RasterizationScaleChanged(This, token) \
+ ((This)->lpVtbl->remove_RasterizationScaleChanged(This, token))
+
+#define ICoreWebView2Controller4_get_BoundsMode(This, boundsMode) \
+ ((This)->lpVtbl->get_BoundsMode(This, boundsMode))
+
+#define ICoreWebView2Controller4_put_BoundsMode(This, boundsMode) \
+ ((This)->lpVtbl->put_BoundsMode(This, boundsMode))
+
+#define ICoreWebView2Controller4_get_AllowExternalDrop(This, value) \
+ ((This)->lpVtbl->get_AllowExternalDrop(This, value))
+
+#define ICoreWebView2Controller4_put_AllowExternalDrop(This, value) \
+ ((This)->lpVtbl->put_AllowExternalDrop(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Controller4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions_INTERFACE_DEFINED__
+#define __ICoreWebView2ControllerOptions_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ControllerOptions */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ControllerOptions = {0x12aae616, 0x8ccb, 0x44ec, {0xbc, 0xb3, 0xeb, 0x18, 0x31, 0x88, 0x16, 0x35}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("12aae616-8ccb-44ec-bcb3-eb1831881635")
+ ICoreWebView2ControllerOptions : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ProfileName(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ProfileName(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsInPrivateModeEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsInPrivateModeEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ControllerOptionsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ControllerOptions *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ControllerOptions *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ControllerOptions *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2ControllerOptions *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_ProfileName)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ProfileName)(
+ ICoreWebView2ControllerOptions *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_IsInPrivateModeEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2ControllerOptionsVtbl;
+
+ interface ICoreWebView2ControllerOptions
+ {
+ CONST_VTBL struct ICoreWebView2ControllerOptionsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ControllerOptions_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ControllerOptions_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ControllerOptions_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ControllerOptions_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions_put_ProfileName(This, value) \
+ ((This)->lpVtbl->put_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2ControllerOptions_put_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->put_IsInPrivateModeEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ControllerOptions_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions2_INTERFACE_DEFINED__
+#define __ICoreWebView2ControllerOptions2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ControllerOptions2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ControllerOptions2 = {0x06c991d8, 0x9e7e, 0x11ed, {0xa8, 0xfc, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("06c991d8-9e7e-11ed-a8fc-0242ac120002")
+ ICoreWebView2ControllerOptions2 : public ICoreWebView2ControllerOptions
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ScriptLocale(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ScriptLocale(
+ /* [in] */ LPCWSTR value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ControllerOptions2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ControllerOptions2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ControllerOptions2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ControllerOptions2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2ControllerOptions2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_ProfileName)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ProfileName)(
+ ICoreWebView2ControllerOptions2 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions2 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_IsInPrivateModeEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions2 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions2, get_ScriptLocale)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ScriptLocale)(
+ ICoreWebView2ControllerOptions2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions2, put_ScriptLocale)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ScriptLocale)(
+ ICoreWebView2ControllerOptions2 *This,
+ /* [in] */ LPCWSTR value);
+
+ END_INTERFACE
+ } ICoreWebView2ControllerOptions2Vtbl;
+
+ interface ICoreWebView2ControllerOptions2
+ {
+ CONST_VTBL struct ICoreWebView2ControllerOptions2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ControllerOptions2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ControllerOptions2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ControllerOptions2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ControllerOptions2_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions2_put_ProfileName(This, value) \
+ ((This)->lpVtbl->put_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions2_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2ControllerOptions2_put_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->put_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2ControllerOptions2_get_ScriptLocale(This, value) \
+ ((This)->lpVtbl->get_ScriptLocale(This, value))
+
+#define ICoreWebView2ControllerOptions2_put_ScriptLocale(This, value) \
+ ((This)->lpVtbl->put_ScriptLocale(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ControllerOptions2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions3_INTERFACE_DEFINED__
+#define __ICoreWebView2ControllerOptions3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ControllerOptions3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ControllerOptions3 = {0xb32b191a, 0x8998, 0x57ca, {0xb7, 0xcb, 0xe0, 0x46, 0x17, 0xe4, 0xce, 0x4a}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b32b191a-8998-57ca-b7cb-e04617e4ce4a")
+ ICoreWebView2ControllerOptions3 : public ICoreWebView2ControllerOptions2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DefaultBackgroundColor(
+ /* [retval][out] */ COREWEBVIEW2_COLOR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_DefaultBackgroundColor(
+ /* [in] */ COREWEBVIEW2_COLOR value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ControllerOptions3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ControllerOptions3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ControllerOptions3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_ProfileName)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ProfileName)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_IsInPrivateModeEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions2, get_ScriptLocale)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ScriptLocale)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions2, put_ScriptLocale)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ScriptLocale)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions3, get_DefaultBackgroundColor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultBackgroundColor)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [retval][out] */ COREWEBVIEW2_COLOR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions3, put_DefaultBackgroundColor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultBackgroundColor)(
+ ICoreWebView2ControllerOptions3 *This,
+ /* [in] */ COREWEBVIEW2_COLOR value);
+
+ END_INTERFACE
+ } ICoreWebView2ControllerOptions3Vtbl;
+
+ interface ICoreWebView2ControllerOptions3
+ {
+ CONST_VTBL struct ICoreWebView2ControllerOptions3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ControllerOptions3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ControllerOptions3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ControllerOptions3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ControllerOptions3_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions3_put_ProfileName(This, value) \
+ ((This)->lpVtbl->put_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions3_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2ControllerOptions3_put_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->put_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2ControllerOptions3_get_ScriptLocale(This, value) \
+ ((This)->lpVtbl->get_ScriptLocale(This, value))
+
+#define ICoreWebView2ControllerOptions3_put_ScriptLocale(This, value) \
+ ((This)->lpVtbl->put_ScriptLocale(This, value))
+
+#define ICoreWebView2ControllerOptions3_get_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->get_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2ControllerOptions3_put_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->put_DefaultBackgroundColor(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ControllerOptions3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ControllerOptions4_INTERFACE_DEFINED__
+#define __ICoreWebView2ControllerOptions4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ControllerOptions4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ControllerOptions4 = {0x21eb052f, 0xad39, 0x555e, {0x82, 0x4a, 0xc8, 0x7b, 0x09, 0x1d, 0x4d, 0x36}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("21eb052f-ad39-555e-824a-c87b091d4d36")
+ ICoreWebView2ControllerOptions4 : public ICoreWebView2ControllerOptions3
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AllowHostInputProcessing(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AllowHostInputProcessing(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ControllerOptions4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ControllerOptions4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ControllerOptions4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_ProfileName)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ProfileName)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions, put_IsInPrivateModeEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsInPrivateModeEnabled)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions2, get_ScriptLocale)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ScriptLocale)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions2, put_ScriptLocale)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ScriptLocale)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions3, get_DefaultBackgroundColor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultBackgroundColor)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [retval][out] */ COREWEBVIEW2_COLOR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions3, put_DefaultBackgroundColor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultBackgroundColor)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [in] */ COREWEBVIEW2_COLOR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions4, get_AllowHostInputProcessing)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AllowHostInputProcessing)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ControllerOptions4, put_AllowHostInputProcessing)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AllowHostInputProcessing)(
+ ICoreWebView2ControllerOptions4 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2ControllerOptions4Vtbl;
+
+ interface ICoreWebView2ControllerOptions4
+ {
+ CONST_VTBL struct ICoreWebView2ControllerOptions4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ControllerOptions4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ControllerOptions4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ControllerOptions4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ControllerOptions4_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions4_put_ProfileName(This, value) \
+ ((This)->lpVtbl->put_ProfileName(This, value))
+
+#define ICoreWebView2ControllerOptions4_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2ControllerOptions4_put_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->put_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2ControllerOptions4_get_ScriptLocale(This, value) \
+ ((This)->lpVtbl->get_ScriptLocale(This, value))
+
+#define ICoreWebView2ControllerOptions4_put_ScriptLocale(This, value) \
+ ((This)->lpVtbl->put_ScriptLocale(This, value))
+
+#define ICoreWebView2ControllerOptions4_get_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->get_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2ControllerOptions4_put_DefaultBackgroundColor(This, value) \
+ ((This)->lpVtbl->put_DefaultBackgroundColor(This, value))
+
+#define ICoreWebView2ControllerOptions4_get_AllowHostInputProcessing(This, value) \
+ ((This)->lpVtbl->get_AllowHostInputProcessing(This, value))
+
+#define ICoreWebView2ControllerOptions4_put_AllowHostInputProcessing(This, value) \
+ ((This)->lpVtbl->put_AllowHostInputProcessing(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ControllerOptions4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Cookie_INTERFACE_DEFINED__
+#define __ICoreWebView2Cookie_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Cookie */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Cookie = {0xAD26D6BE, 0x1486, 0x43E6, {0xBF, 0x87, 0xA2, 0x03, 0x40, 0x06, 0xCA, 0x21}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("AD26D6BE-1486-43E6-BF87-A2034006CA21")
+ ICoreWebView2Cookie : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Name(
+ /* [retval][out] */ LPWSTR * name) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Value(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Value(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Domain(
+ /* [retval][out] */ LPWSTR * domain) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Path(
+ /* [retval][out] */ LPWSTR * path) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Expires(
+ /* [retval][out] */ double *expires) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Expires(
+ /* [in] */ double expires) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsHttpOnly(
+ /* [retval][out] */ BOOL * isHttpOnly) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsHttpOnly(
+ /* [in] */ BOOL isHttpOnly) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SameSite(
+ /* [retval][out] */ COREWEBVIEW2_COOKIE_SAME_SITE_KIND * sameSite) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_SameSite(
+ /* [in] */ COREWEBVIEW2_COOKIE_SAME_SITE_KIND sameSite) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsSecure(
+ /* [retval][out] */ BOOL * isSecure) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsSecure(
+ /* [in] */ BOOL isSecure) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsSession(
+ /* [retval][out] */ BOOL * isSession) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CookieVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Cookie *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Cookie *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Cookie *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_Value)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Value)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, put_Value)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Value)(
+ ICoreWebView2Cookie *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_Domain)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Domain)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ LPWSTR *domain);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_Path)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Path)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ LPWSTR *path);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_Expires)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Expires)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ double *expires);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, put_Expires)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Expires)(
+ ICoreWebView2Cookie *This,
+ /* [in] */ double expires);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_IsHttpOnly)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsHttpOnly)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ BOOL *isHttpOnly);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, put_IsHttpOnly)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsHttpOnly)(
+ ICoreWebView2Cookie *This,
+ /* [in] */ BOOL isHttpOnly);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_SameSite)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SameSite)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ COREWEBVIEW2_COOKIE_SAME_SITE_KIND *sameSite);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, put_SameSite)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_SameSite)(
+ ICoreWebView2Cookie *This,
+ /* [in] */ COREWEBVIEW2_COOKIE_SAME_SITE_KIND sameSite);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_IsSecure)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSecure)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ BOOL *isSecure);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, put_IsSecure)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsSecure)(
+ ICoreWebView2Cookie *This,
+ /* [in] */ BOOL isSecure);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Cookie, get_IsSession)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSession)(
+ ICoreWebView2Cookie *This,
+ /* [retval][out] */ BOOL *isSession);
+
+ END_INTERFACE
+ } ICoreWebView2CookieVtbl;
+
+ interface ICoreWebView2Cookie
+ {
+ CONST_VTBL struct ICoreWebView2CookieVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Cookie_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Cookie_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Cookie_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Cookie_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Cookie_get_Value(This, value) \
+ ((This)->lpVtbl->get_Value(This, value))
+
+#define ICoreWebView2Cookie_put_Value(This, value) \
+ ((This)->lpVtbl->put_Value(This, value))
+
+#define ICoreWebView2Cookie_get_Domain(This, domain) \
+ ((This)->lpVtbl->get_Domain(This, domain))
+
+#define ICoreWebView2Cookie_get_Path(This, path) \
+ ((This)->lpVtbl->get_Path(This, path))
+
+#define ICoreWebView2Cookie_get_Expires(This, expires) \
+ ((This)->lpVtbl->get_Expires(This, expires))
+
+#define ICoreWebView2Cookie_put_Expires(This, expires) \
+ ((This)->lpVtbl->put_Expires(This, expires))
+
+#define ICoreWebView2Cookie_get_IsHttpOnly(This, isHttpOnly) \
+ ((This)->lpVtbl->get_IsHttpOnly(This, isHttpOnly))
+
+#define ICoreWebView2Cookie_put_IsHttpOnly(This, isHttpOnly) \
+ ((This)->lpVtbl->put_IsHttpOnly(This, isHttpOnly))
+
+#define ICoreWebView2Cookie_get_SameSite(This, sameSite) \
+ ((This)->lpVtbl->get_SameSite(This, sameSite))
+
+#define ICoreWebView2Cookie_put_SameSite(This, sameSite) \
+ ((This)->lpVtbl->put_SameSite(This, sameSite))
+
+#define ICoreWebView2Cookie_get_IsSecure(This, isSecure) \
+ ((This)->lpVtbl->get_IsSecure(This, isSecure))
+
+#define ICoreWebView2Cookie_put_IsSecure(This, isSecure) \
+ ((This)->lpVtbl->put_IsSecure(This, isSecure))
+
+#define ICoreWebView2Cookie_get_IsSession(This, isSession) \
+ ((This)->lpVtbl->get_IsSession(This, isSession))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Cookie_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CookieManager_INTERFACE_DEFINED__
+#define __ICoreWebView2CookieManager_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CookieManager */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CookieManager = {0x177CD9E7, 0xB6F5, 0x451A, {0x94, 0xA0, 0x5D, 0x7A, 0x3A, 0x4C, 0x41, 0x41}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("177CD9E7-B6F5-451A-94A0-5D7A3A4C4141")
+ ICoreWebView2CookieManager : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateCookie(
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR value,
+ /* [in] */ LPCWSTR domain,
+ /* [in] */ LPCWSTR path,
+ /* [retval][out] */ ICoreWebView2Cookie * *cookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopyCookie(
+ /* [in] */ ICoreWebView2Cookie * cookieParam,
+ /* [retval][out] */ ICoreWebView2Cookie * *cookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCookies(
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ ICoreWebView2GetCookiesCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddOrUpdateCookie(
+ /* [in] */ ICoreWebView2Cookie * cookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteCookie(
+ /* [in] */ ICoreWebView2Cookie * cookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteCookies(
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR uri) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteCookiesWithDomainAndPath(
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR domain,
+ /* [in] */ LPCWSTR path) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteAllCookies(void) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CookieManagerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CookieManager *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CookieManager *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, CreateCookie)
+ HRESULT(STDMETHODCALLTYPE *CreateCookie)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR value,
+ /* [in] */ LPCWSTR domain,
+ /* [in] */ LPCWSTR path,
+ /* [retval][out] */ ICoreWebView2Cookie **cookie);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, CopyCookie)
+ HRESULT(STDMETHODCALLTYPE *CopyCookie)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ ICoreWebView2Cookie *cookieParam,
+ /* [retval][out] */ ICoreWebView2Cookie **cookie);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, GetCookies)
+ HRESULT(STDMETHODCALLTYPE *GetCookies)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ ICoreWebView2GetCookiesCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, AddOrUpdateCookie)
+ HRESULT(STDMETHODCALLTYPE *AddOrUpdateCookie)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ ICoreWebView2Cookie *cookie);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, DeleteCookie)
+ HRESULT(STDMETHODCALLTYPE *DeleteCookie)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ ICoreWebView2Cookie *cookie);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, DeleteCookies)
+ HRESULT(STDMETHODCALLTYPE *DeleteCookies)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, DeleteCookiesWithDomainAndPath)
+ HRESULT(STDMETHODCALLTYPE *DeleteCookiesWithDomainAndPath)(
+ ICoreWebView2CookieManager *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR domain,
+ /* [in] */ LPCWSTR path);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieManager, DeleteAllCookies)
+ HRESULT(STDMETHODCALLTYPE *DeleteAllCookies)(
+ ICoreWebView2CookieManager *This);
+
+ END_INTERFACE
+ } ICoreWebView2CookieManagerVtbl;
+
+ interface ICoreWebView2CookieManager
+ {
+ CONST_VTBL struct ICoreWebView2CookieManagerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CookieManager_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CookieManager_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CookieManager_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CookieManager_CreateCookie(This, name, value, domain, path, cookie) \
+ ((This)->lpVtbl->CreateCookie(This, name, value, domain, path, cookie))
+
+#define ICoreWebView2CookieManager_CopyCookie(This, cookieParam, cookie) \
+ ((This)->lpVtbl->CopyCookie(This, cookieParam, cookie))
+
+#define ICoreWebView2CookieManager_GetCookies(This, uri, handler) \
+ ((This)->lpVtbl->GetCookies(This, uri, handler))
+
+#define ICoreWebView2CookieManager_AddOrUpdateCookie(This, cookie) \
+ ((This)->lpVtbl->AddOrUpdateCookie(This, cookie))
+
+#define ICoreWebView2CookieManager_DeleteCookie(This, cookie) \
+ ((This)->lpVtbl->DeleteCookie(This, cookie))
+
+#define ICoreWebView2CookieManager_DeleteCookies(This, name, uri) \
+ ((This)->lpVtbl->DeleteCookies(This, name, uri))
+
+#define ICoreWebView2CookieManager_DeleteCookiesWithDomainAndPath(This, name, domain, path) \
+ ((This)->lpVtbl->DeleteCookiesWithDomainAndPath(This, name, domain, path))
+
+#define ICoreWebView2CookieManager_DeleteAllCookies(This) \
+ ((This)->lpVtbl->DeleteAllCookies(This))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CookieManager_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2GetCookiesCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2GetCookiesCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2GetCookiesCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2GetCookiesCompletedHandler = {0x5a4f5069, 0x5c15, 0x47c3, {0x86, 0x46, 0xf4, 0xde, 0x1c, 0x11, 0x66, 0x70}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5a4f5069-5c15-47c3-8646-f4de1c116670")
+ ICoreWebView2GetCookiesCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2CookieList * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2GetCookiesCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2GetCookiesCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2GetCookiesCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2GetCookiesCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2GetCookiesCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2GetCookiesCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2CookieList *result);
+
+ END_INTERFACE
+ } ICoreWebView2GetCookiesCompletedHandlerVtbl;
+
+ interface ICoreWebView2GetCookiesCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2GetCookiesCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2GetCookiesCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2GetCookiesCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2GetCookiesCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2GetCookiesCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2GetCookiesCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CookieList_INTERFACE_DEFINED__
+#define __ICoreWebView2CookieList_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CookieList */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CookieList = {0xf7f6f714, 0x5d2a, 0x43c6, {0x95, 0x03, 0x34, 0x6e, 0xce, 0x02, 0xd1, 0x86}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f7f6f714-5d2a-43c6-9503-346ece02d186")
+ ICoreWebView2CookieList : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2Cookie * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CookieListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CookieList *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CookieList *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CookieList *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieList, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2CookieList *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CookieList, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2CookieList *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2Cookie **value);
+
+ END_INTERFACE
+ } ICoreWebView2CookieListVtbl;
+
+ interface ICoreWebView2CookieList
+ {
+ CONST_VTBL struct ICoreWebView2CookieListVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CookieList_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CookieList_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CookieList_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CookieList_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2CookieList_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CookieList_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CustomSchemeRegistration_INTERFACE_DEFINED__
+#define __ICoreWebView2CustomSchemeRegistration_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CustomSchemeRegistration */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CustomSchemeRegistration = {0xd60ac92c, 0x37a6, 0x4b26, {0xa3, 0x9e, 0x95, 0xcf, 0xe5, 0x90, 0x47, 0xbb}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d60ac92c-37a6-4b26-a39e-95cfe59047bb")
+ ICoreWebView2CustomSchemeRegistration : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SchemeName(
+ /* [retval][out] */ LPWSTR * schemeName) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TreatAsSecure(
+ /* [retval][out] */ BOOL * treatAsSecure) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TreatAsSecure(
+ /* [in] */ BOOL value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllowedOrigins(
+ /* [out] */ UINT32 * allowedOriginsCount,
+ /* [out] */ LPWSTR * *allowedOrigins) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAllowedOrigins(
+ /* [in] */ UINT32 allowedOriginsCount,
+ /* [in] */ LPCWSTR * allowedOrigins) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasAuthorityComponent(
+ /* [retval][out] */ BOOL * hasAuthorityComponent) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_HasAuthorityComponent(
+ /* [in] */ BOOL hasAuthorityComponent) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CustomSchemeRegistrationVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CustomSchemeRegistration *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CustomSchemeRegistration *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomSchemeRegistration, get_SchemeName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SchemeName)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [retval][out] */ LPWSTR *schemeName);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomSchemeRegistration, get_TreatAsSecure)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TreatAsSecure)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [retval][out] */ BOOL *treatAsSecure);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomSchemeRegistration, put_TreatAsSecure)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TreatAsSecure)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomSchemeRegistration, GetAllowedOrigins)
+ HRESULT(STDMETHODCALLTYPE *GetAllowedOrigins)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [out] */ UINT32 *allowedOriginsCount,
+ /* [out] */ LPWSTR **allowedOrigins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomSchemeRegistration, SetAllowedOrigins)
+ HRESULT(STDMETHODCALLTYPE *SetAllowedOrigins)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [in] */ UINT32 allowedOriginsCount,
+ /* [in] */ LPCWSTR *allowedOrigins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomSchemeRegistration, get_HasAuthorityComponent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasAuthorityComponent)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [retval][out] */ BOOL *hasAuthorityComponent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CustomSchemeRegistration, put_HasAuthorityComponent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HasAuthorityComponent)(
+ ICoreWebView2CustomSchemeRegistration *This,
+ /* [in] */ BOOL hasAuthorityComponent);
+
+ END_INTERFACE
+ } ICoreWebView2CustomSchemeRegistrationVtbl;
+
+ interface ICoreWebView2CustomSchemeRegistration
+ {
+ CONST_VTBL struct ICoreWebView2CustomSchemeRegistrationVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CustomSchemeRegistration_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CustomSchemeRegistration_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CustomSchemeRegistration_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CustomSchemeRegistration_get_SchemeName(This, schemeName) \
+ ((This)->lpVtbl->get_SchemeName(This, schemeName))
+
+#define ICoreWebView2CustomSchemeRegistration_get_TreatAsSecure(This, treatAsSecure) \
+ ((This)->lpVtbl->get_TreatAsSecure(This, treatAsSecure))
+
+#define ICoreWebView2CustomSchemeRegistration_put_TreatAsSecure(This, value) \
+ ((This)->lpVtbl->put_TreatAsSecure(This, value))
+
+#define ICoreWebView2CustomSchemeRegistration_GetAllowedOrigins(This, allowedOriginsCount, allowedOrigins) \
+ ((This)->lpVtbl->GetAllowedOrigins(This, allowedOriginsCount, allowedOrigins))
+
+#define ICoreWebView2CustomSchemeRegistration_SetAllowedOrigins(This, allowedOriginsCount, allowedOrigins) \
+ ((This)->lpVtbl->SetAllowedOrigins(This, allowedOriginsCount, allowedOrigins))
+
+#define ICoreWebView2CustomSchemeRegistration_get_HasAuthorityComponent(This, hasAuthorityComponent) \
+ ((This)->lpVtbl->get_HasAuthorityComponent(This, hasAuthorityComponent))
+
+#define ICoreWebView2CustomSchemeRegistration_put_HasAuthorityComponent(This, hasAuthorityComponent) \
+ ((This)->lpVtbl->put_HasAuthorityComponent(This, hasAuthorityComponent))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CustomSchemeRegistration_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DOMContentLoadedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2DOMContentLoadedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DOMContentLoadedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DOMContentLoadedEventArgs = {0x16b1e21a, 0xc503, 0x44f2, {0x84, 0xc9, 0x70, 0xab, 0xa5, 0x03, 0x12, 0x83}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("16b1e21a-c503-44f2-84c9-70aba5031283")
+ ICoreWebView2DOMContentLoadedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_NavigationId(
+ /* [retval][out] */ UINT64 * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DOMContentLoadedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DOMContentLoadedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DOMContentLoadedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DOMContentLoadedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DOMContentLoadedEventArgs, get_NavigationId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationId)(
+ ICoreWebView2DOMContentLoadedEventArgs *This,
+ /* [retval][out] */ UINT64 *value);
+
+ END_INTERFACE
+ } ICoreWebView2DOMContentLoadedEventArgsVtbl;
+
+ interface ICoreWebView2DOMContentLoadedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2DOMContentLoadedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DOMContentLoadedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DOMContentLoadedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DOMContentLoadedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DOMContentLoadedEventArgs_get_NavigationId(This, value) \
+ ((This)->lpVtbl->get_NavigationId(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DOMContentLoadedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Deferral_INTERFACE_DEFINED__
+#define __ICoreWebView2Deferral_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Deferral */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Deferral = {0xc10e7f7b, 0xb585, 0x46f0, {0xa6, 0x23, 0x8b, 0xef, 0xbf, 0x3e, 0x4e, 0xe0}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c10e7f7b-b585-46f0-a623-8befbf3e4ee0")
+ ICoreWebView2Deferral : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Complete(void) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DeferralVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Deferral *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Deferral *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Deferral *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Deferral, Complete)
+ HRESULT(STDMETHODCALLTYPE *Complete)(
+ ICoreWebView2Deferral *This);
+
+ END_INTERFACE
+ } ICoreWebView2DeferralVtbl;
+
+ interface ICoreWebView2Deferral
+ {
+ CONST_VTBL struct ICoreWebView2DeferralVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Deferral_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Deferral_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Deferral_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Deferral_Complete(This) \
+ ((This)->lpVtbl->Complete(This))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Deferral_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceivedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceivedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DevToolsProtocolEventReceivedEventArgs = {0x653c2959, 0xbb3a, 0x4377, {0x86, 0x32, 0xb5, 0x8a, 0xda, 0x4e, 0x66, 0xc4}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("653c2959-bb3a-4377-8632-b58ada4e66c4")
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ParameterObjectAsJson(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DevToolsProtocolEventReceivedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DevToolsProtocolEventReceivedEventArgs, get_ParameterObjectAsJson)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ParameterObjectAsJson)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2DevToolsProtocolEventReceivedEventArgsVtbl;
+
+ interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2DevToolsProtocolEventReceivedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs_get_ParameterObjectAsJson(This, value) \
+ ((This)->lpVtbl->get_ParameterObjectAsJson(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceivedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 = {0x2dc4959d, 0x1494, 0x4393, {0x95, 0xba, 0xbe, 0xa4, 0xcb, 0x9e, 0xbd, 0x1b}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2dc4959d-1494-4393-95ba-bea4cb9ebd1b")
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 : public ICoreWebView2DevToolsProtocolEventReceivedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SessionId(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DevToolsProtocolEventReceivedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DevToolsProtocolEventReceivedEventArgs, get_ParameterObjectAsJson)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ParameterObjectAsJson)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DevToolsProtocolEventReceivedEventArgs2, get_SessionId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SessionId)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2DevToolsProtocolEventReceivedEventArgs2Vtbl;
+
+ interface ICoreWebView2DevToolsProtocolEventReceivedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2DevToolsProtocolEventReceivedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_get_ParameterObjectAsJson(This, value) \
+ ((This)->lpVtbl->get_ParameterObjectAsJson(This, value))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_get_SessionId(This, value) \
+ ((This)->lpVtbl->get_SessionId(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceivedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceiver_INTERFACE_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceiver_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DevToolsProtocolEventReceiver */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DevToolsProtocolEventReceiver = {0xb32ca51a, 0x8371, 0x45e9, {0x93, 0x17, 0xaf, 0x02, 0x1d, 0x08, 0x03, 0x67}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b32ca51a-8371-45e9-9317-af021d080367")
+ ICoreWebView2DevToolsProtocolEventReceiver : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_DevToolsProtocolEventReceived(
+ /* [in] */ ICoreWebView2DevToolsProtocolEventReceivedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_DevToolsProtocolEventReceived(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DevToolsProtocolEventReceiverVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DevToolsProtocolEventReceiver *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DevToolsProtocolEventReceiver *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DevToolsProtocolEventReceiver *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DevToolsProtocolEventReceiver, add_DevToolsProtocolEventReceived)
+ HRESULT(STDMETHODCALLTYPE *add_DevToolsProtocolEventReceived)(
+ ICoreWebView2DevToolsProtocolEventReceiver *This,
+ /* [in] */ ICoreWebView2DevToolsProtocolEventReceivedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DevToolsProtocolEventReceiver, remove_DevToolsProtocolEventReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_DevToolsProtocolEventReceived)(
+ ICoreWebView2DevToolsProtocolEventReceiver *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2DevToolsProtocolEventReceiverVtbl;
+
+ interface ICoreWebView2DevToolsProtocolEventReceiver
+ {
+ CONST_VTBL struct ICoreWebView2DevToolsProtocolEventReceiverVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DevToolsProtocolEventReceiver_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DevToolsProtocolEventReceiver_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceiver_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceiver_add_DevToolsProtocolEventReceived(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DevToolsProtocolEventReceived(This, eventHandler, token))
+
+#define ICoreWebView2DevToolsProtocolEventReceiver_remove_DevToolsProtocolEventReceived(This, token) \
+ ((This)->lpVtbl->remove_DevToolsProtocolEventReceived(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceiver_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DevToolsProtocolEventReceivedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2DevToolsProtocolEventReceivedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DevToolsProtocolEventReceivedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DevToolsProtocolEventReceivedEventHandler = {0xe2fda4be, 0x5456, 0x406c, {0xa2, 0x61, 0x3d, 0x45, 0x21, 0x38, 0x36, 0x2c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e2fda4be-5456-406c-a261-3d452138362c")
+ ICoreWebView2DevToolsProtocolEventReceivedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2 * sender,
+ /* [in] */ ICoreWebView2DevToolsProtocolEventReceivedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DevToolsProtocolEventReceivedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DevToolsProtocolEventReceivedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2DevToolsProtocolEventReceivedEventHandler *This,
+ /* [in] */ ICoreWebView2 *sender,
+ /* [in] */ ICoreWebView2DevToolsProtocolEventReceivedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2DevToolsProtocolEventReceivedEventHandlerVtbl;
+
+ interface ICoreWebView2DevToolsProtocolEventReceivedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2DevToolsProtocolEventReceivedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DevToolsProtocolEventReceivedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DevToolsProtocolEventReceivedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DownloadOperation_INTERFACE_DEFINED__
+#define __ICoreWebView2DownloadOperation_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DownloadOperation */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DownloadOperation = {0x3d6b6cf2, 0xafe1, 0x44c7, {0xa9, 0x95, 0xc6, 0x51, 0x17, 0x71, 0x43, 0x36}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3d6b6cf2-afe1-44c7-a995-c65117714336")
+ ICoreWebView2DownloadOperation : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_BytesReceivedChanged(
+ /* [in] */ ICoreWebView2BytesReceivedChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_BytesReceivedChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_EstimatedEndTimeChanged(
+ /* [in] */ ICoreWebView2EstimatedEndTimeChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_EstimatedEndTimeChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_StateChanged(
+ /* [in] */ ICoreWebView2StateChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_StateChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * uri) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ContentDisposition(
+ /* [retval][out] */ LPWSTR * contentDisposition) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MimeType(
+ /* [retval][out] */ LPWSTR * mimeType) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TotalBytesToReceive(
+ /* [retval][out] */ INT64 * totalBytesToReceive) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BytesReceived(
+ /* [retval][out] */ INT64 * bytesReceived) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_EstimatedEndTime(
+ /* [retval][out] */ LPWSTR * estimatedEndTime) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ResultFilePath(
+ /* [retval][out] */ LPWSTR * resultFilePath) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_State(
+ /* [retval][out] */ COREWEBVIEW2_DOWNLOAD_STATE * downloadState) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_InterruptReason(
+ /* [retval][out] */ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON * interruptReason) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Cancel(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Pause(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Resume(void) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CanResume(
+ /* [retval][out] */ BOOL * canResume) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DownloadOperationVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DownloadOperation *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DownloadOperation *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DownloadOperation *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, add_BytesReceivedChanged)
+ HRESULT(STDMETHODCALLTYPE *add_BytesReceivedChanged)(
+ ICoreWebView2DownloadOperation *This,
+ /* [in] */ ICoreWebView2BytesReceivedChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, remove_BytesReceivedChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_BytesReceivedChanged)(
+ ICoreWebView2DownloadOperation *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, add_EstimatedEndTimeChanged)
+ HRESULT(STDMETHODCALLTYPE *add_EstimatedEndTimeChanged)(
+ ICoreWebView2DownloadOperation *This,
+ /* [in] */ ICoreWebView2EstimatedEndTimeChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, remove_EstimatedEndTimeChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_EstimatedEndTimeChanged)(
+ ICoreWebView2DownloadOperation *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, add_StateChanged)
+ HRESULT(STDMETHODCALLTYPE *add_StateChanged)(
+ ICoreWebView2DownloadOperation *This,
+ /* [in] */ ICoreWebView2StateChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, remove_StateChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_StateChanged)(
+ ICoreWebView2DownloadOperation *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_ContentDisposition)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContentDisposition)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ LPWSTR *contentDisposition);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_MimeType)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MimeType)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ LPWSTR *mimeType);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_TotalBytesToReceive)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TotalBytesToReceive)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ INT64 *totalBytesToReceive);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_BytesReceived)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BytesReceived)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ INT64 *bytesReceived);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_EstimatedEndTime)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_EstimatedEndTime)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ LPWSTR *estimatedEndTime);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_ResultFilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ResultFilePath)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ LPWSTR *resultFilePath);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_State)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_State)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ COREWEBVIEW2_DOWNLOAD_STATE *downloadState);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_InterruptReason)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_InterruptReason)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ COREWEBVIEW2_DOWNLOAD_INTERRUPT_REASON *interruptReason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, Cancel)
+ HRESULT(STDMETHODCALLTYPE *Cancel)(
+ ICoreWebView2DownloadOperation *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, Pause)
+ HRESULT(STDMETHODCALLTYPE *Pause)(
+ ICoreWebView2DownloadOperation *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, Resume)
+ HRESULT(STDMETHODCALLTYPE *Resume)(
+ ICoreWebView2DownloadOperation *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadOperation, get_CanResume)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CanResume)(
+ ICoreWebView2DownloadOperation *This,
+ /* [retval][out] */ BOOL *canResume);
+
+ END_INTERFACE
+ } ICoreWebView2DownloadOperationVtbl;
+
+ interface ICoreWebView2DownloadOperation
+ {
+ CONST_VTBL struct ICoreWebView2DownloadOperationVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DownloadOperation_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DownloadOperation_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DownloadOperation_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DownloadOperation_add_BytesReceivedChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BytesReceivedChanged(This, eventHandler, token))
+
+#define ICoreWebView2DownloadOperation_remove_BytesReceivedChanged(This, token) \
+ ((This)->lpVtbl->remove_BytesReceivedChanged(This, token))
+
+#define ICoreWebView2DownloadOperation_add_EstimatedEndTimeChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_EstimatedEndTimeChanged(This, eventHandler, token))
+
+#define ICoreWebView2DownloadOperation_remove_EstimatedEndTimeChanged(This, token) \
+ ((This)->lpVtbl->remove_EstimatedEndTimeChanged(This, token))
+
+#define ICoreWebView2DownloadOperation_add_StateChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_StateChanged(This, eventHandler, token))
+
+#define ICoreWebView2DownloadOperation_remove_StateChanged(This, token) \
+ ((This)->lpVtbl->remove_StateChanged(This, token))
+
+#define ICoreWebView2DownloadOperation_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2DownloadOperation_get_ContentDisposition(This, contentDisposition) \
+ ((This)->lpVtbl->get_ContentDisposition(This, contentDisposition))
+
+#define ICoreWebView2DownloadOperation_get_MimeType(This, mimeType) \
+ ((This)->lpVtbl->get_MimeType(This, mimeType))
+
+#define ICoreWebView2DownloadOperation_get_TotalBytesToReceive(This, totalBytesToReceive) \
+ ((This)->lpVtbl->get_TotalBytesToReceive(This, totalBytesToReceive))
+
+#define ICoreWebView2DownloadOperation_get_BytesReceived(This, bytesReceived) \
+ ((This)->lpVtbl->get_BytesReceived(This, bytesReceived))
+
+#define ICoreWebView2DownloadOperation_get_EstimatedEndTime(This, estimatedEndTime) \
+ ((This)->lpVtbl->get_EstimatedEndTime(This, estimatedEndTime))
+
+#define ICoreWebView2DownloadOperation_get_ResultFilePath(This, resultFilePath) \
+ ((This)->lpVtbl->get_ResultFilePath(This, resultFilePath))
+
+#define ICoreWebView2DownloadOperation_get_State(This, downloadState) \
+ ((This)->lpVtbl->get_State(This, downloadState))
+
+#define ICoreWebView2DownloadOperation_get_InterruptReason(This, interruptReason) \
+ ((This)->lpVtbl->get_InterruptReason(This, interruptReason))
+
+#define ICoreWebView2DownloadOperation_Cancel(This) \
+ ((This)->lpVtbl->Cancel(This))
+
+#define ICoreWebView2DownloadOperation_Pause(This) \
+ ((This)->lpVtbl->Pause(This))
+
+#define ICoreWebView2DownloadOperation_Resume(This) \
+ ((This)->lpVtbl->Resume(This))
+
+#define ICoreWebView2DownloadOperation_get_CanResume(This, canResume) \
+ ((This)->lpVtbl->get_CanResume(This, canResume))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DownloadOperation_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BytesReceivedChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2BytesReceivedChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BytesReceivedChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BytesReceivedChangedEventHandler = {0x828e8ab6, 0xd94c, 0x4264, {0x9c, 0xef, 0x52, 0x17, 0x17, 0x0d, 0x62, 0x51}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("828e8ab6-d94c-4264-9cef-5217170d6251")
+ ICoreWebView2BytesReceivedChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2DownloadOperation * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BytesReceivedChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BytesReceivedChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BytesReceivedChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BytesReceivedChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BytesReceivedChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2BytesReceivedChangedEventHandler *This,
+ /* [in] */ ICoreWebView2DownloadOperation *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2BytesReceivedChangedEventHandlerVtbl;
+
+ interface ICoreWebView2BytesReceivedChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2BytesReceivedChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BytesReceivedChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BytesReceivedChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BytesReceivedChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BytesReceivedChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BytesReceivedChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EstimatedEndTimeChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2EstimatedEndTimeChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EstimatedEndTimeChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EstimatedEndTimeChangedEventHandler = {0x28f0d425, 0x93fe, 0x4e63, {0x9f, 0x8d, 0x2a, 0xee, 0xc6, 0xd3, 0xba, 0x1e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("28f0d425-93fe-4e63-9f8d-2aeec6d3ba1e")
+ ICoreWebView2EstimatedEndTimeChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2DownloadOperation * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EstimatedEndTimeChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EstimatedEndTimeChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EstimatedEndTimeChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EstimatedEndTimeChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EstimatedEndTimeChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2EstimatedEndTimeChangedEventHandler *This,
+ /* [in] */ ICoreWebView2DownloadOperation *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2EstimatedEndTimeChangedEventHandlerVtbl;
+
+ interface ICoreWebView2EstimatedEndTimeChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2EstimatedEndTimeChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EstimatedEndTimeChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EstimatedEndTimeChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EstimatedEndTimeChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EstimatedEndTimeChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EstimatedEndTimeChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2StateChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2StateChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2StateChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2StateChangedEventHandler = {0x81336594, 0x7ede, 0x4ba9, {0xbf, 0x71, 0xac, 0xf0, 0xa9, 0x5b, 0x58, 0xdd}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("81336594-7ede-4ba9-bf71-acf0a95b58dd")
+ ICoreWebView2StateChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2DownloadOperation * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2StateChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2StateChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2StateChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2StateChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2StateChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2StateChangedEventHandler *This,
+ /* [in] */ ICoreWebView2DownloadOperation *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2StateChangedEventHandlerVtbl;
+
+ interface ICoreWebView2StateChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2StateChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2StateChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2StateChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2StateChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2StateChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2StateChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2DownloadStartingEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2DownloadStartingEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2DownloadStartingEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2DownloadStartingEventArgs = {0xe99bbe21, 0x43e9, 0x4544, {0xa7, 0x32, 0x28, 0x27, 0x64, 0xea, 0xfa, 0x60}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e99bbe21-43e9-4544-a732-282764eafa60")
+ ICoreWebView2DownloadStartingEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DownloadOperation(
+ /* [retval][out] */ ICoreWebView2DownloadOperation * *downloadOperation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cancel(
+ /* [retval][out] */ BOOL * cancel) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Cancel(
+ /* [in] */ BOOL cancel) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ResultFilePath(
+ /* [retval][out] */ LPWSTR * resultFilePath) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ResultFilePath(
+ /* [in] */ LPCWSTR resultFilePath) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * handled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL handled) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2DownloadStartingEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2DownloadStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2DownloadStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, get_DownloadOperation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DownloadOperation)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [retval][out] */ ICoreWebView2DownloadOperation **downloadOperation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [retval][out] */ BOOL *cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [in] */ BOOL cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, get_ResultFilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ResultFilePath)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [retval][out] */ LPWSTR *resultFilePath);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, put_ResultFilePath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ResultFilePath)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [in] */ LPCWSTR resultFilePath);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [retval][out] */ BOOL *handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [in] */ BOOL handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2DownloadStartingEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2DownloadStartingEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2DownloadStartingEventArgsVtbl;
+
+ interface ICoreWebView2DownloadStartingEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2DownloadStartingEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2DownloadStartingEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2DownloadStartingEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2DownloadStartingEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2DownloadStartingEventArgs_get_DownloadOperation(This, downloadOperation) \
+ ((This)->lpVtbl->get_DownloadOperation(This, downloadOperation))
+
+#define ICoreWebView2DownloadStartingEventArgs_get_Cancel(This, cancel) \
+ ((This)->lpVtbl->get_Cancel(This, cancel))
+
+#define ICoreWebView2DownloadStartingEventArgs_put_Cancel(This, cancel) \
+ ((This)->lpVtbl->put_Cancel(This, cancel))
+
+#define ICoreWebView2DownloadStartingEventArgs_get_ResultFilePath(This, resultFilePath) \
+ ((This)->lpVtbl->get_ResultFilePath(This, resultFilePath))
+
+#define ICoreWebView2DownloadStartingEventArgs_put_ResultFilePath(This, resultFilePath) \
+ ((This)->lpVtbl->put_ResultFilePath(This, resultFilePath))
+
+#define ICoreWebView2DownloadStartingEventArgs_get_Handled(This, handled) \
+ ((This)->lpVtbl->get_Handled(This, handled))
+
+#define ICoreWebView2DownloadStartingEventArgs_put_Handled(This, handled) \
+ ((This)->lpVtbl->put_Handled(This, handled))
+
+#define ICoreWebView2DownloadStartingEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2DownloadStartingEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler = {0x4e8a3389, 0xc9d8, 0x4bd2, {0xb6, 0xb5, 0x12, 0x4f, 0xee, 0x6c, 0xc1, 0x4d}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4e8a3389-c9d8-4bd2-b6b5-124fee6cc14d")
+ ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2Environment * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2Environment *result);
+
+ END_INTERFACE
+ } ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandlerVtbl;
+
+ interface ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment = {0xb96d755e, 0x0319, 0x4e92, {0xa2, 0x96, 0x23, 0x43, 0x6f, 0x46, 0xa1, 0xfc}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b96d755e-0319-4e92-a296-23436f46a1fc")
+ ICoreWebView2Environment : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateCoreWebView2Controller(
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateWebResourceResponse(
+ /* [in] */ IStream * content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BrowserVersionString(
+ /* [retval][out] */ LPWSTR * versionInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_NewBrowserVersionAvailable(
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NewBrowserVersionAvailable(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentVtbl;
+
+ interface ICoreWebView2Environment
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NewBrowserVersionAvailableEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2NewBrowserVersionAvailableEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NewBrowserVersionAvailableEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NewBrowserVersionAvailableEventHandler = {0xf9a2976e, 0xd34e, 0x44fc, {0xad, 0xee, 0x81, 0xb6, 0xb5, 0x7c, 0xa9, 0x14}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f9a2976e-d34e-44fc-adee-81b6b57ca914")
+ ICoreWebView2NewBrowserVersionAvailableEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Environment * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NewBrowserVersionAvailableEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NewBrowserVersionAvailableEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NewBrowserVersionAvailableEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NewBrowserVersionAvailableEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewBrowserVersionAvailableEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2NewBrowserVersionAvailableEventHandler *This,
+ /* [in] */ ICoreWebView2Environment *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2NewBrowserVersionAvailableEventHandlerVtbl;
+
+ interface ICoreWebView2NewBrowserVersionAvailableEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2NewBrowserVersionAvailableEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NewBrowserVersionAvailableEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NewBrowserVersionAvailableEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NewBrowserVersionAvailableEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NewBrowserVersionAvailableEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NewBrowserVersionAvailableEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CreateCoreWebView2ControllerCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CreateCoreWebView2ControllerCompletedHandler = {0x6c4819f3, 0xc9b7, 0x4260, {0x81, 0x27, 0xc9, 0xf5, 0xbd, 0xe7, 0xf6, 0x8c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6c4819f3-c9b7-4260-8127-c9f5bde7f68c")
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2Controller * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CreateCoreWebView2ControllerCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CreateCoreWebView2ControllerCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2Controller *result);
+
+ END_INTERFACE
+ } ICoreWebView2CreateCoreWebView2ControllerCompletedHandlerVtbl;
+
+ interface ICoreWebView2CreateCoreWebView2ControllerCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2CreateCoreWebView2ControllerCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CreateCoreWebView2ControllerCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment2_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment2 = {0x41f3632b, 0x5ef4, 0x404f, {0xad, 0x82, 0x2d, 0x60, 0x6c, 0x5a, 0x9a, 0x21}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("41f3632b-5ef4-404f-ad82-2d606c5a9a21")
+ ICoreWebView2Environment2 : public ICoreWebView2Environment
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateWebResourceRequest(
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream * postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment2 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment2 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment2 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment2 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment2 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment2Vtbl;
+
+ interface ICoreWebView2Environment2
+ {
+ CONST_VTBL struct ICoreWebView2Environment2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment2_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment2_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment2_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment2_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment2_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment2_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment3_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment3 = {0x80a22ae3, 0xbe7c, 0x4ce2, {0xaf, 0xe1, 0x5a, 0x50, 0x05, 0x6c, 0xde, 0xeb}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("80a22ae3-be7c-4ce2-afe1-5a50056cdeeb")
+ ICoreWebView2Environment3 : public ICoreWebView2Environment2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateCoreWebView2CompositionController(
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCoreWebView2PointerInfo(
+ /* [retval][out] */ ICoreWebView2PointerInfo * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment3 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment3 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment3 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment3 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment3 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment3 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment3 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment3Vtbl;
+
+ interface ICoreWebView2Environment3
+ {
+ CONST_VTBL struct ICoreWebView2Environment3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment3_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment3_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment3_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment3_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment3_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment3_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment3_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment3_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler = {0x02fab84b, 0x1428, 0x4fb7, {0xad, 0x45, 0x1b, 0x2e, 0x64, 0x73, 0x61, 0x84}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("02fab84b-1428-4fb7-ad45-1b2e64736184")
+ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2CompositionController * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2CompositionController *result);
+
+ END_INTERFACE
+ } ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerVtbl;
+
+ interface ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment4_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment4 = {0x20944379, 0x6dcf, 0x41d6, {0xa0, 0xa0, 0xab, 0xc0, 0xfc, 0x50, 0xde, 0x0d}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("20944379-6dcf-41d6-a0a0-abc0fc50de0d")
+ ICoreWebView2Environment4 : public ICoreWebView2Environment3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAutomationProviderForWindow(
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment4 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment4 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment4 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment4 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment4 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment4 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment4 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment4 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment4Vtbl;
+
+ interface ICoreWebView2Environment4
+ {
+ CONST_VTBL struct ICoreWebView2Environment4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment4_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment4_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment4_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment4_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment4_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment4_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment4_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment4_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment4_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment5_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment5_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment5 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment5 = {0x319e423d, 0xe0d7, 0x4b8d, {0x92, 0x54, 0xae, 0x94, 0x75, 0xde, 0x9b, 0x17}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("319e423d-e0d7-4b8d-9254-ae9475de9b17")
+ ICoreWebView2Environment5 : public ICoreWebView2Environment4
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_BrowserProcessExited(
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_BrowserProcessExited(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment5 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment5 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment5 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment5 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2Environment5Vtbl;
+
+ interface ICoreWebView2Environment5
+ {
+ CONST_VTBL struct ICoreWebView2Environment5Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment5_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment5_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment5_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment5_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment5_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment5_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment5_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment5_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment5_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment5_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment5_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment5_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment5_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment5_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment5_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserProcessExitedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2BrowserProcessExitedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BrowserProcessExitedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BrowserProcessExitedEventHandler = {0xfa504257, 0xa216, 0x4911, {0xa8, 0x60, 0xfe, 0x88, 0x25, 0x71, 0x28, 0x61}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fa504257-a216-4911-a860-fe8825712861")
+ ICoreWebView2BrowserProcessExitedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Environment * sender,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BrowserProcessExitedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BrowserProcessExitedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BrowserProcessExitedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BrowserProcessExitedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserProcessExitedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2BrowserProcessExitedEventHandler *This,
+ /* [in] */ ICoreWebView2Environment *sender,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2BrowserProcessExitedEventHandlerVtbl;
+
+ interface ICoreWebView2BrowserProcessExitedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2BrowserProcessExitedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BrowserProcessExitedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BrowserProcessExitedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BrowserProcessExitedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BrowserProcessExitedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BrowserProcessExitedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment6_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment6_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment6 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment6 = {0xe59ee362, 0xacbd, 0x4857, {0x9a, 0x8e, 0xd3, 0x64, 0x4d, 0x94, 0x59, 0xa9}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e59ee362-acbd-4857-9a8e-d3644d9459a9")
+ ICoreWebView2Environment6 : public ICoreWebView2Environment5
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreatePrintSettings(
+ /* [retval][out] */ ICoreWebView2PrintSettings * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment6 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment6 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment6 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment6 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment6 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment6Vtbl;
+
+ interface ICoreWebView2Environment6
+ {
+ CONST_VTBL struct ICoreWebView2Environment6Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment6_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment6_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment6_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment6_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment6_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment6_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment6_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment6_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment6_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment6_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment6_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment6_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment6_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment6_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment6_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment6_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment7_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment7_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment7 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment7 = {0x43c22296, 0x3bbd, 0x43a4, {0x9c, 0x00, 0x5c, 0x0d, 0xf6, 0xdd, 0x29, 0xa2}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("43c22296-3bbd-43a4-9c00-5c0df6dd29a2")
+ ICoreWebView2Environment7 : public ICoreWebView2Environment6
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_UserDataFolder(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment7 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment7 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment7 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment7 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment7 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment7 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment7Vtbl;
+
+ interface ICoreWebView2Environment7
+ {
+ CONST_VTBL struct ICoreWebView2Environment7Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment7_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment7_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment7_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment7_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment7_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment7_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment7_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment7_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment7_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment7_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment7_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment7_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment7_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment7_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment7_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment7_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment7_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment8_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment8_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment8 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment8 = {0xd6eb91dd, 0xc3d2, 0x45e5, {0xbd, 0x29, 0x6d, 0xc2, 0xbc, 0x4d, 0xe9, 0xcf}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d6eb91dd-c3d2-45e5-bd29-6dc2bc4de9cf")
+ ICoreWebView2Environment8 : public ICoreWebView2Environment7
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_ProcessInfosChanged(
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ProcessInfosChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProcessInfos(
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment8Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment8 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment8 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment8 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment8 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment8 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment8 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, add_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessInfosChanged)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, remove_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessInfosChanged)(
+ ICoreWebView2Environment8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, GetProcessInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessInfos)(
+ ICoreWebView2Environment8 *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection **value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment8Vtbl;
+
+ interface ICoreWebView2Environment8
+ {
+ CONST_VTBL struct ICoreWebView2Environment8Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment8_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment8_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment8_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment8_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment8_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment8_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment8_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment8_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment8_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment8_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment8_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment8_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment8_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment8_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment8_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment8_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#define ICoreWebView2Environment8_add_ProcessInfosChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessInfosChanged(This, eventHandler, token))
+
+#define ICoreWebView2Environment8_remove_ProcessInfosChanged(This, token) \
+ ((This)->lpVtbl->remove_ProcessInfosChanged(This, token))
+
+#define ICoreWebView2Environment8_GetProcessInfos(This, value) \
+ ((This)->lpVtbl->GetProcessInfos(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment8_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessInfosChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessInfosChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessInfosChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessInfosChangedEventHandler = {0xf4af0c39, 0x44b9, 0x40e9, {0x8b, 0x11, 0x04, 0x84, 0xcf, 0xb9, 0xe0, 0xa1}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f4af0c39-44b9-40e9-8b11-0484cfb9e0a1")
+ ICoreWebView2ProcessInfosChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Environment * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessInfosChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessInfosChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessInfosChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessInfosChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessInfosChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ProcessInfosChangedEventHandler *This,
+ /* [in] */ ICoreWebView2Environment *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessInfosChangedEventHandlerVtbl;
+
+ interface ICoreWebView2ProcessInfosChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ProcessInfosChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessInfosChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessInfosChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessInfosChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessInfosChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessInfosChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessInfoCollection_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessInfoCollection_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessInfoCollection */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessInfoCollection = {0x402b99cd, 0xa0cc, 0x4fa5, {0xb7, 0xa5, 0x51, 0xd8, 0x6a, 0x1d, 0x23, 0x39}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("402b99cd-a0cc-4fa5-b7a5-51d86a1d2339")
+ ICoreWebView2ProcessInfoCollection : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ProcessInfo * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessInfoCollectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessInfoCollection *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessInfoCollection *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessInfoCollection *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessInfoCollection, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2ProcessInfoCollection *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessInfoCollection, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2ProcessInfoCollection *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ProcessInfo **value);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessInfoCollectionVtbl;
+
+ interface ICoreWebView2ProcessInfoCollection
+ {
+ CONST_VTBL struct ICoreWebView2ProcessInfoCollectionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessInfoCollection_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessInfoCollection_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessInfoCollection_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessInfoCollection_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2ProcessInfoCollection_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessInfoCollection_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment9_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment9_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment9 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment9 = {0xf06f41bf, 0x4b5a, 0x49d8, {0xb9, 0xf6, 0xfa, 0x16, 0xcd, 0x29, 0xf2, 0x74}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f06f41bf-4b5a-49d8-b9f6-fa16cd29f274")
+ ICoreWebView2Environment9 : public ICoreWebView2Environment8
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateContextMenuItem(
+ /* [in] */ LPCWSTR Label,
+ /* [in] */ IStream * iconStream,
+ /* [in] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND Kind,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment9Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment9 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment9 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment9 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment9 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment9 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment9 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, add_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessInfosChanged)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, remove_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessInfosChanged)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, GetProcessInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessInfos)(
+ ICoreWebView2Environment9 *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment9, CreateContextMenuItem)
+ HRESULT(STDMETHODCALLTYPE *CreateContextMenuItem)(
+ ICoreWebView2Environment9 *This,
+ /* [in] */ LPCWSTR Label,
+ /* [in] */ IStream *iconStream,
+ /* [in] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND Kind,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem **value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment9Vtbl;
+
+ interface ICoreWebView2Environment9
+ {
+ CONST_VTBL struct ICoreWebView2Environment9Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment9_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment9_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment9_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment9_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment9_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment9_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment9_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment9_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment9_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment9_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment9_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment9_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment9_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment9_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment9_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment9_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#define ICoreWebView2Environment9_add_ProcessInfosChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessInfosChanged(This, eventHandler, token))
+
+#define ICoreWebView2Environment9_remove_ProcessInfosChanged(This, token) \
+ ((This)->lpVtbl->remove_ProcessInfosChanged(This, token))
+
+#define ICoreWebView2Environment9_GetProcessInfos(This, value) \
+ ((This)->lpVtbl->GetProcessInfos(This, value))
+
+#define ICoreWebView2Environment9_CreateContextMenuItem(This, Label, iconStream, Kind, value) \
+ ((This)->lpVtbl->CreateContextMenuItem(This, Label, iconStream, Kind, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment9_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment10_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment10_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment10 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment10 = {0xee0eb9df, 0x6f12, 0x46ce, {0xb5, 0x3f, 0x3f, 0x47, 0xb9, 0xc9, 0x28, 0xe0}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ee0eb9df-6f12-46ce-b53f-3f47b9c928e0")
+ ICoreWebView2Environment10 : public ICoreWebView2Environment9
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateCoreWebView2ControllerOptions(
+ /* [retval][out] */ ICoreWebView2ControllerOptions * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCoreWebView2ControllerWithOptions(
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions * options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCoreWebView2CompositionControllerWithOptions(
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions * options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment10Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment10 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment10 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment10 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment10 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment10 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment10 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment10 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, add_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessInfosChanged)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, remove_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessInfosChanged)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, GetProcessInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessInfos)(
+ ICoreWebView2Environment10 *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment9, CreateContextMenuItem)
+ HRESULT(STDMETHODCALLTYPE *CreateContextMenuItem)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ LPCWSTR Label,
+ /* [in] */ IStream *iconStream,
+ /* [in] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND Kind,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerOptions)(
+ ICoreWebView2Environment10 *This,
+ /* [retval][out] */ ICoreWebView2ControllerOptions **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerWithOptions)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2CompositionControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionControllerWithOptions)(
+ ICoreWebView2Environment10 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2Environment10Vtbl;
+
+ interface ICoreWebView2Environment10
+ {
+ CONST_VTBL struct ICoreWebView2Environment10Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment10_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment10_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment10_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment10_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment10_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment10_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment10_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment10_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment10_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment10_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment10_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment10_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment10_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment10_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment10_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment10_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#define ICoreWebView2Environment10_add_ProcessInfosChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessInfosChanged(This, eventHandler, token))
+
+#define ICoreWebView2Environment10_remove_ProcessInfosChanged(This, token) \
+ ((This)->lpVtbl->remove_ProcessInfosChanged(This, token))
+
+#define ICoreWebView2Environment10_GetProcessInfos(This, value) \
+ ((This)->lpVtbl->GetProcessInfos(This, value))
+
+#define ICoreWebView2Environment10_CreateContextMenuItem(This, Label, iconStream, Kind, value) \
+ ((This)->lpVtbl->CreateContextMenuItem(This, Label, iconStream, Kind, value))
+
+#define ICoreWebView2Environment10_CreateCoreWebView2ControllerOptions(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerOptions(This, value))
+
+#define ICoreWebView2Environment10_CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment10_CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment10_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment11_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment11_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment11 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment11 = {0xf0913dc6, 0xa0ec, 0x42ef, {0x98, 0x05, 0x91, 0xdf, 0xf3, 0xa2, 0x96, 0x6a}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f0913dc6-a0ec-42ef-9805-91dff3a2966a")
+ ICoreWebView2Environment11 : public ICoreWebView2Environment10
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FailureReportFolderPath(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment11Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment11 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment11 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment11 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment11 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment11 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment11 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment11 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, add_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessInfosChanged)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, remove_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessInfosChanged)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, GetProcessInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessInfos)(
+ ICoreWebView2Environment11 *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment9, CreateContextMenuItem)
+ HRESULT(STDMETHODCALLTYPE *CreateContextMenuItem)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ LPCWSTR Label,
+ /* [in] */ IStream *iconStream,
+ /* [in] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND Kind,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerOptions)(
+ ICoreWebView2Environment11 *This,
+ /* [retval][out] */ ICoreWebView2ControllerOptions **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerWithOptions)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2CompositionControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionControllerWithOptions)(
+ ICoreWebView2Environment11 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment11, get_FailureReportFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FailureReportFolderPath)(
+ ICoreWebView2Environment11 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment11Vtbl;
+
+ interface ICoreWebView2Environment11
+ {
+ CONST_VTBL struct ICoreWebView2Environment11Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment11_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment11_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment11_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment11_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment11_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment11_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment11_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment11_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment11_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment11_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment11_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment11_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment11_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment11_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment11_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment11_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#define ICoreWebView2Environment11_add_ProcessInfosChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessInfosChanged(This, eventHandler, token))
+
+#define ICoreWebView2Environment11_remove_ProcessInfosChanged(This, token) \
+ ((This)->lpVtbl->remove_ProcessInfosChanged(This, token))
+
+#define ICoreWebView2Environment11_GetProcessInfos(This, value) \
+ ((This)->lpVtbl->GetProcessInfos(This, value))
+
+#define ICoreWebView2Environment11_CreateContextMenuItem(This, Label, iconStream, Kind, value) \
+ ((This)->lpVtbl->CreateContextMenuItem(This, Label, iconStream, Kind, value))
+
+#define ICoreWebView2Environment11_CreateCoreWebView2ControllerOptions(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerOptions(This, value))
+
+#define ICoreWebView2Environment11_CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment11_CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment11_get_FailureReportFolderPath(This, value) \
+ ((This)->lpVtbl->get_FailureReportFolderPath(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment11_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment12_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment12_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment12 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment12 = {0xf503db9b, 0x739f, 0x48dd, {0xb1, 0x51, 0xfd, 0xfc, 0xf2, 0x53, 0xf5, 0x4e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f503db9b-739f-48dd-b151-fdfcf253f54e")
+ ICoreWebView2Environment12 : public ICoreWebView2Environment11
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateSharedBuffer(
+ /* [in] */ UINT64 Size,
+ /* [retval][out] */ ICoreWebView2SharedBuffer * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment12Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment12 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment12 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment12 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment12 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment12 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment12 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment12 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, add_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessInfosChanged)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, remove_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessInfosChanged)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, GetProcessInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessInfos)(
+ ICoreWebView2Environment12 *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment9, CreateContextMenuItem)
+ HRESULT(STDMETHODCALLTYPE *CreateContextMenuItem)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ LPCWSTR Label,
+ /* [in] */ IStream *iconStream,
+ /* [in] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND Kind,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerOptions)(
+ ICoreWebView2Environment12 *This,
+ /* [retval][out] */ ICoreWebView2ControllerOptions **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerWithOptions)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2CompositionControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionControllerWithOptions)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment11, get_FailureReportFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FailureReportFolderPath)(
+ ICoreWebView2Environment12 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment12, CreateSharedBuffer)
+ HRESULT(STDMETHODCALLTYPE *CreateSharedBuffer)(
+ ICoreWebView2Environment12 *This,
+ /* [in] */ UINT64 Size,
+ /* [retval][out] */ ICoreWebView2SharedBuffer **value);
+
+ END_INTERFACE
+ } ICoreWebView2Environment12Vtbl;
+
+ interface ICoreWebView2Environment12
+ {
+ CONST_VTBL struct ICoreWebView2Environment12Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment12_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment12_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment12_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment12_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment12_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment12_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment12_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment12_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment12_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment12_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment12_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment12_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment12_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment12_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment12_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment12_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#define ICoreWebView2Environment12_add_ProcessInfosChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessInfosChanged(This, eventHandler, token))
+
+#define ICoreWebView2Environment12_remove_ProcessInfosChanged(This, token) \
+ ((This)->lpVtbl->remove_ProcessInfosChanged(This, token))
+
+#define ICoreWebView2Environment12_GetProcessInfos(This, value) \
+ ((This)->lpVtbl->GetProcessInfos(This, value))
+
+#define ICoreWebView2Environment12_CreateContextMenuItem(This, Label, iconStream, Kind, value) \
+ ((This)->lpVtbl->CreateContextMenuItem(This, Label, iconStream, Kind, value))
+
+#define ICoreWebView2Environment12_CreateCoreWebView2ControllerOptions(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerOptions(This, value))
+
+#define ICoreWebView2Environment12_CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment12_CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment12_get_FailureReportFolderPath(This, value) \
+ ((This)->lpVtbl->get_FailureReportFolderPath(This, value))
+
+#define ICoreWebView2Environment12_CreateSharedBuffer(This, Size, value) \
+ ((This)->lpVtbl->CreateSharedBuffer(This, Size, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment12_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment13_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment13_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment13 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment13 = {0xaf641f58, 0x72b2, 0x11ee, {0xb9, 0x62, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("af641f58-72b2-11ee-b962-0242ac120002")
+ ICoreWebView2Environment13 : public ICoreWebView2Environment12
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProcessExtendedInfos(
+ /* [in] */ ICoreWebView2GetProcessExtendedInfosCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment13Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment13 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment13 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment13 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment13 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment13 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment13 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment13 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, add_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessInfosChanged)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, remove_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessInfosChanged)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, GetProcessInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessInfos)(
+ ICoreWebView2Environment13 *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment9, CreateContextMenuItem)
+ HRESULT(STDMETHODCALLTYPE *CreateContextMenuItem)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ LPCWSTR Label,
+ /* [in] */ IStream *iconStream,
+ /* [in] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND Kind,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerOptions)(
+ ICoreWebView2Environment13 *This,
+ /* [retval][out] */ ICoreWebView2ControllerOptions **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerWithOptions)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2CompositionControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionControllerWithOptions)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment11, get_FailureReportFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FailureReportFolderPath)(
+ ICoreWebView2Environment13 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment12, CreateSharedBuffer)
+ HRESULT(STDMETHODCALLTYPE *CreateSharedBuffer)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ UINT64 Size,
+ /* [retval][out] */ ICoreWebView2SharedBuffer **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment13, GetProcessExtendedInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessExtendedInfos)(
+ ICoreWebView2Environment13 *This,
+ /* [in] */ ICoreWebView2GetProcessExtendedInfosCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2Environment13Vtbl;
+
+ interface ICoreWebView2Environment13
+ {
+ CONST_VTBL struct ICoreWebView2Environment13Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment13_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment13_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment13_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment13_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment13_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment13_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment13_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment13_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment13_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment13_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment13_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment13_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment13_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment13_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment13_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment13_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#define ICoreWebView2Environment13_add_ProcessInfosChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessInfosChanged(This, eventHandler, token))
+
+#define ICoreWebView2Environment13_remove_ProcessInfosChanged(This, token) \
+ ((This)->lpVtbl->remove_ProcessInfosChanged(This, token))
+
+#define ICoreWebView2Environment13_GetProcessInfos(This, value) \
+ ((This)->lpVtbl->GetProcessInfos(This, value))
+
+#define ICoreWebView2Environment13_CreateContextMenuItem(This, Label, iconStream, Kind, value) \
+ ((This)->lpVtbl->CreateContextMenuItem(This, Label, iconStream, Kind, value))
+
+#define ICoreWebView2Environment13_CreateCoreWebView2ControllerOptions(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerOptions(This, value))
+
+#define ICoreWebView2Environment13_CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment13_CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment13_get_FailureReportFolderPath(This, value) \
+ ((This)->lpVtbl->get_FailureReportFolderPath(This, value))
+
+#define ICoreWebView2Environment13_CreateSharedBuffer(This, Size, value) \
+ ((This)->lpVtbl->CreateSharedBuffer(This, Size, value))
+
+#define ICoreWebView2Environment13_GetProcessExtendedInfos(This, handler) \
+ ((This)->lpVtbl->GetProcessExtendedInfos(This, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment13_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2GetProcessExtendedInfosCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2GetProcessExtendedInfosCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2GetProcessExtendedInfosCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2GetProcessExtendedInfosCompletedHandler = {0xf45e55aa, 0x3bc2, 0x11ee, {0xbe, 0x56, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f45e55aa-3bc2-11ee-be56-0242ac120002")
+ ICoreWebView2GetProcessExtendedInfosCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2ProcessExtendedInfoCollection * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2GetProcessExtendedInfosCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2GetProcessExtendedInfosCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2GetProcessExtendedInfosCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2GetProcessExtendedInfosCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2GetProcessExtendedInfosCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2GetProcessExtendedInfosCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2ProcessExtendedInfoCollection *result);
+
+ END_INTERFACE
+ } ICoreWebView2GetProcessExtendedInfosCompletedHandlerVtbl;
+
+ interface ICoreWebView2GetProcessExtendedInfosCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2GetProcessExtendedInfosCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2GetProcessExtendedInfosCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2GetProcessExtendedInfosCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2GetProcessExtendedInfosCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2GetProcessExtendedInfosCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2GetProcessExtendedInfosCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessExtendedInfoCollection_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessExtendedInfoCollection_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessExtendedInfoCollection */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessExtendedInfoCollection = {0x32efa696, 0x407a, 0x11ee, {0xbe, 0x56, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("32efa696-407a-11ee-be56-0242ac120002")
+ ICoreWebView2ProcessExtendedInfoCollection : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ProcessExtendedInfo * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessExtendedInfoCollectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessExtendedInfoCollection *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessExtendedInfoCollection *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessExtendedInfoCollection *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessExtendedInfoCollection, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2ProcessExtendedInfoCollection *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessExtendedInfoCollection, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2ProcessExtendedInfoCollection *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2ProcessExtendedInfo **value);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessExtendedInfoCollectionVtbl;
+
+ interface ICoreWebView2ProcessExtendedInfoCollection
+ {
+ CONST_VTBL struct ICoreWebView2ProcessExtendedInfoCollectionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessExtendedInfoCollection_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessExtendedInfoCollection_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessExtendedInfoCollection_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessExtendedInfoCollection_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2ProcessExtendedInfoCollection_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessExtendedInfoCollection_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Environment14_INTERFACE_DEFINED__
+#define __ICoreWebView2Environment14_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Environment14 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Environment14 = {0xa5e9fad9, 0xc875, 0x59da, {0x9b, 0xd7, 0x47, 0x3a, 0xa5, 0xca, 0x1c, 0xef}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a5e9fad9-c875-59da-9bd7-473aa5ca1cef")
+ ICoreWebView2Environment14 : public ICoreWebView2Environment13
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateWebFileSystemFileHandle(
+ /* [in] */ LPCWSTR path,
+ /* [in] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION permission,
+ /* [retval][out] */ ICoreWebView2FileSystemHandle * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateWebFileSystemDirectoryHandle(
+ /* [in] */ LPCWSTR path,
+ /* [in] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION permission,
+ /* [retval][out] */ ICoreWebView2FileSystemHandle * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateObjectCollection(
+ /* [in] */ UINT32 length,
+ /* [size_is][in] */ IUnknown * *items,
+ /* [retval][out] */ ICoreWebView2ObjectCollection * *objectCollection) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Environment14Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Environment14 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Environment14 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateCoreWebView2Controller)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2Controller)(
+ ICoreWebView2Environment14 *This,
+ HWND parentWindow,
+ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, CreateWebResourceResponse)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceResponse)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ IStream *content,
+ /* [in] */ int statusCode,
+ /* [in] */ LPCWSTR reasonPhrase,
+ /* [in] */ LPCWSTR headers,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, get_BrowserVersionString)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BrowserVersionString)(
+ ICoreWebView2Environment14 *This,
+ /* [retval][out] */ LPWSTR *versionInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, add_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *add_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ ICoreWebView2NewBrowserVersionAvailableEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment, remove_NewBrowserVersionAvailable)
+ HRESULT(STDMETHODCALLTYPE *remove_NewBrowserVersionAvailable)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment2, CreateWebResourceRequest)
+ HRESULT(STDMETHODCALLTYPE *CreateWebResourceRequest)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ LPCWSTR uri,
+ /* [in] */ LPCWSTR Method,
+ /* [in] */ IStream *postData,
+ /* [in] */ LPCWSTR Headers,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2CompositionController)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionController)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment3, CreateCoreWebView2PointerInfo)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2PointerInfo)(
+ ICoreWebView2Environment14 *This,
+ /* [retval][out] */ ICoreWebView2PointerInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment4, GetAutomationProviderForWindow)
+ HRESULT(STDMETHODCALLTYPE *GetAutomationProviderForWindow)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ HWND hwnd,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, add_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *add_BrowserProcessExited)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ ICoreWebView2BrowserProcessExitedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment5, remove_BrowserProcessExited)
+ HRESULT(STDMETHODCALLTYPE *remove_BrowserProcessExited)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment6, CreatePrintSettings)
+ HRESULT(STDMETHODCALLTYPE *CreatePrintSettings)(
+ ICoreWebView2Environment14 *This,
+ /* [retval][out] */ ICoreWebView2PrintSettings **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment7, get_UserDataFolder)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserDataFolder)(
+ ICoreWebView2Environment14 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, add_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *add_ProcessInfosChanged)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ ICoreWebView2ProcessInfosChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, remove_ProcessInfosChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_ProcessInfosChanged)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment8, GetProcessInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessInfos)(
+ ICoreWebView2Environment14 *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfoCollection **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment9, CreateContextMenuItem)
+ HRESULT(STDMETHODCALLTYPE *CreateContextMenuItem)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ LPCWSTR Label,
+ /* [in] */ IStream *iconStream,
+ /* [in] */ COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND Kind,
+ /* [retval][out] */ ICoreWebView2ContextMenuItem **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerOptions)(
+ ICoreWebView2Environment14 *This,
+ /* [retval][out] */ ICoreWebView2ControllerOptions **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2ControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2ControllerWithOptions)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2ControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment10, CreateCoreWebView2CompositionControllerWithOptions)
+ HRESULT(STDMETHODCALLTYPE *CreateCoreWebView2CompositionControllerWithOptions)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ HWND ParentWindow,
+ /* [in] */ ICoreWebView2ControllerOptions *options,
+ /* [in] */ ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment11, get_FailureReportFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FailureReportFolderPath)(
+ ICoreWebView2Environment14 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment12, CreateSharedBuffer)
+ HRESULT(STDMETHODCALLTYPE *CreateSharedBuffer)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ UINT64 Size,
+ /* [retval][out] */ ICoreWebView2SharedBuffer **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment13, GetProcessExtendedInfos)
+ HRESULT(STDMETHODCALLTYPE *GetProcessExtendedInfos)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ ICoreWebView2GetProcessExtendedInfosCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment14, CreateWebFileSystemFileHandle)
+ HRESULT(STDMETHODCALLTYPE *CreateWebFileSystemFileHandle)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ LPCWSTR path,
+ /* [in] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION permission,
+ /* [retval][out] */ ICoreWebView2FileSystemHandle **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment14, CreateWebFileSystemDirectoryHandle)
+ HRESULT(STDMETHODCALLTYPE *CreateWebFileSystemDirectoryHandle)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ LPCWSTR path,
+ /* [in] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION permission,
+ /* [retval][out] */ ICoreWebView2FileSystemHandle **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Environment14, CreateObjectCollection)
+ HRESULT(STDMETHODCALLTYPE *CreateObjectCollection)(
+ ICoreWebView2Environment14 *This,
+ /* [in] */ UINT32 length,
+ /* [size_is][in] */ IUnknown **items,
+ /* [retval][out] */ ICoreWebView2ObjectCollection **objectCollection);
+
+ END_INTERFACE
+ } ICoreWebView2Environment14Vtbl;
+
+ interface ICoreWebView2Environment14
+ {
+ CONST_VTBL struct ICoreWebView2Environment14Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Environment14_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Environment14_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Environment14_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Environment14_CreateCoreWebView2Controller(This, parentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2Controller(This, parentWindow, handler))
+
+#define ICoreWebView2Environment14_CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response) \
+ ((This)->lpVtbl->CreateWebResourceResponse(This, content, statusCode, reasonPhrase, headers, response))
+
+#define ICoreWebView2Environment14_get_BrowserVersionString(This, versionInfo) \
+ ((This)->lpVtbl->get_BrowserVersionString(This, versionInfo))
+
+#define ICoreWebView2Environment14_add_NewBrowserVersionAvailable(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NewBrowserVersionAvailable(This, eventHandler, token))
+
+#define ICoreWebView2Environment14_remove_NewBrowserVersionAvailable(This, token) \
+ ((This)->lpVtbl->remove_NewBrowserVersionAvailable(This, token))
+
+#define ICoreWebView2Environment14_CreateWebResourceRequest(This, uri, Method, postData, Headers, value) \
+ ((This)->lpVtbl->CreateWebResourceRequest(This, uri, Method, postData, Headers, value))
+
+#define ICoreWebView2Environment14_CreateCoreWebView2CompositionController(This, ParentWindow, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionController(This, ParentWindow, handler))
+
+#define ICoreWebView2Environment14_CreateCoreWebView2PointerInfo(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2PointerInfo(This, value))
+
+#define ICoreWebView2Environment14_GetAutomationProviderForWindow(This, hwnd, value) \
+ ((This)->lpVtbl->GetAutomationProviderForWindow(This, hwnd, value))
+
+#define ICoreWebView2Environment14_add_BrowserProcessExited(This, eventHandler, token) \
+ ((This)->lpVtbl->add_BrowserProcessExited(This, eventHandler, token))
+
+#define ICoreWebView2Environment14_remove_BrowserProcessExited(This, token) \
+ ((This)->lpVtbl->remove_BrowserProcessExited(This, token))
+
+#define ICoreWebView2Environment14_CreatePrintSettings(This, value) \
+ ((This)->lpVtbl->CreatePrintSettings(This, value))
+
+#define ICoreWebView2Environment14_get_UserDataFolder(This, value) \
+ ((This)->lpVtbl->get_UserDataFolder(This, value))
+
+#define ICoreWebView2Environment14_add_ProcessInfosChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ProcessInfosChanged(This, eventHandler, token))
+
+#define ICoreWebView2Environment14_remove_ProcessInfosChanged(This, token) \
+ ((This)->lpVtbl->remove_ProcessInfosChanged(This, token))
+
+#define ICoreWebView2Environment14_GetProcessInfos(This, value) \
+ ((This)->lpVtbl->GetProcessInfos(This, value))
+
+#define ICoreWebView2Environment14_CreateContextMenuItem(This, Label, iconStream, Kind, value) \
+ ((This)->lpVtbl->CreateContextMenuItem(This, Label, iconStream, Kind, value))
+
+#define ICoreWebView2Environment14_CreateCoreWebView2ControllerOptions(This, value) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerOptions(This, value))
+
+#define ICoreWebView2Environment14_CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2ControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment14_CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler) \
+ ((This)->lpVtbl->CreateCoreWebView2CompositionControllerWithOptions(This, ParentWindow, options, handler))
+
+#define ICoreWebView2Environment14_get_FailureReportFolderPath(This, value) \
+ ((This)->lpVtbl->get_FailureReportFolderPath(This, value))
+
+#define ICoreWebView2Environment14_CreateSharedBuffer(This, Size, value) \
+ ((This)->lpVtbl->CreateSharedBuffer(This, Size, value))
+
+#define ICoreWebView2Environment14_GetProcessExtendedInfos(This, handler) \
+ ((This)->lpVtbl->GetProcessExtendedInfos(This, handler))
+
+#define ICoreWebView2Environment14_CreateWebFileSystemFileHandle(This, path, permission, value) \
+ ((This)->lpVtbl->CreateWebFileSystemFileHandle(This, path, permission, value))
+
+#define ICoreWebView2Environment14_CreateWebFileSystemDirectoryHandle(This, path, permission, value) \
+ ((This)->lpVtbl->CreateWebFileSystemDirectoryHandle(This, path, permission, value))
+
+#define ICoreWebView2Environment14_CreateObjectCollection(This, length, items, objectCollection) \
+ ((This)->lpVtbl->CreateObjectCollection(This, length, items, objectCollection))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Environment14_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions = {0x2fde08a8, 0x1e9a, 0x4766, {0x8c, 0x05, 0x95, 0xa9, 0xce, 0xb9, 0xd1, 0xc5}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2fde08a8-1e9a-4766-8c05-95a9ceb9d1c5")
+ ICoreWebView2EnvironmentOptions : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AdditionalBrowserArguments(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AdditionalBrowserArguments(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Language(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Language(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TargetCompatibleBrowserVersion(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TargetCompatibleBrowserVersion(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AllowSingleSignOnUsingOSPrimaryAccount(
+ /* [retval][out] */ BOOL * allow) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AllowSingleSignOnUsingOSPrimaryAccount(
+ /* [in] */ BOOL allow) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptionsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, get_AdditionalBrowserArguments)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AdditionalBrowserArguments)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, put_AdditionalBrowserArguments)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AdditionalBrowserArguments)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, get_Language)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Language)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, put_Language)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Language)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, get_TargetCompatibleBrowserVersion)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TargetCompatibleBrowserVersion)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, put_TargetCompatibleBrowserVersion)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TargetCompatibleBrowserVersion)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, get_AllowSingleSignOnUsingOSPrimaryAccount)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AllowSingleSignOnUsingOSPrimaryAccount)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [retval][out] */ BOOL *allow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions, put_AllowSingleSignOnUsingOSPrimaryAccount)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AllowSingleSignOnUsingOSPrimaryAccount)(
+ ICoreWebView2EnvironmentOptions *This,
+ /* [in] */ BOOL allow);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptionsVtbl;
+
+ interface ICoreWebView2EnvironmentOptions
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptionsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions_get_AdditionalBrowserArguments(This, value) \
+ ((This)->lpVtbl->get_AdditionalBrowserArguments(This, value))
+
+#define ICoreWebView2EnvironmentOptions_put_AdditionalBrowserArguments(This, value) \
+ ((This)->lpVtbl->put_AdditionalBrowserArguments(This, value))
+
+#define ICoreWebView2EnvironmentOptions_get_Language(This, value) \
+ ((This)->lpVtbl->get_Language(This, value))
+
+#define ICoreWebView2EnvironmentOptions_put_Language(This, value) \
+ ((This)->lpVtbl->put_Language(This, value))
+
+#define ICoreWebView2EnvironmentOptions_get_TargetCompatibleBrowserVersion(This, value) \
+ ((This)->lpVtbl->get_TargetCompatibleBrowserVersion(This, value))
+
+#define ICoreWebView2EnvironmentOptions_put_TargetCompatibleBrowserVersion(This, value) \
+ ((This)->lpVtbl->put_TargetCompatibleBrowserVersion(This, value))
+
+#define ICoreWebView2EnvironmentOptions_get_AllowSingleSignOnUsingOSPrimaryAccount(This, allow) \
+ ((This)->lpVtbl->get_AllowSingleSignOnUsingOSPrimaryAccount(This, allow))
+
+#define ICoreWebView2EnvironmentOptions_put_AllowSingleSignOnUsingOSPrimaryAccount(This, allow) \
+ ((This)->lpVtbl->put_AllowSingleSignOnUsingOSPrimaryAccount(This, allow))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions2_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions2 = {0xff85c98a, 0x1ba7, 0x4a6b, {0x90, 0xc8, 0x2b, 0x75, 0x2c, 0x89, 0xe9, 0xe2}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ff85c98a-1ba7-4a6b-90c8-2b752c89e9e2")
+ ICoreWebView2EnvironmentOptions2 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ExclusiveUserDataFolderAccess(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ExclusiveUserDataFolderAccess(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptions2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions2, get_ExclusiveUserDataFolderAccess)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ExclusiveUserDataFolderAccess)(
+ ICoreWebView2EnvironmentOptions2 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions2, put_ExclusiveUserDataFolderAccess)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ExclusiveUserDataFolderAccess)(
+ ICoreWebView2EnvironmentOptions2 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptions2Vtbl;
+
+ interface ICoreWebView2EnvironmentOptions2
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptions2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions2_get_ExclusiveUserDataFolderAccess(This, value) \
+ ((This)->lpVtbl->get_ExclusiveUserDataFolderAccess(This, value))
+
+#define ICoreWebView2EnvironmentOptions2_put_ExclusiveUserDataFolderAccess(This, value) \
+ ((This)->lpVtbl->put_ExclusiveUserDataFolderAccess(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions3_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions3 = {0x4a5c436e, 0xa9e3, 0x4a2e, {0x89, 0xc3, 0x91, 0x0d, 0x35, 0x13, 0xf5, 0xcc}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4a5c436e-a9e3-4a2e-89c3-910d3513f5cc")
+ ICoreWebView2EnvironmentOptions3 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsCustomCrashReportingEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsCustomCrashReportingEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptions3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions3, get_IsCustomCrashReportingEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsCustomCrashReportingEnabled)(
+ ICoreWebView2EnvironmentOptions3 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions3, put_IsCustomCrashReportingEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsCustomCrashReportingEnabled)(
+ ICoreWebView2EnvironmentOptions3 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptions3Vtbl;
+
+ interface ICoreWebView2EnvironmentOptions3
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptions3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions3_get_IsCustomCrashReportingEnabled(This, value) \
+ ((This)->lpVtbl->get_IsCustomCrashReportingEnabled(This, value))
+
+#define ICoreWebView2EnvironmentOptions3_put_IsCustomCrashReportingEnabled(This, value) \
+ ((This)->lpVtbl->put_IsCustomCrashReportingEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions4_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions4 = {0xac52d13f, 0x0d38, 0x475a, {0x9d, 0xca, 0x87, 0x65, 0x80, 0xd6, 0x79, 0x3e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ac52d13f-0d38-475a-9dca-876580d6793e")
+ ICoreWebView2EnvironmentOptions4 : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCustomSchemeRegistrations(
+ /* [out] */ UINT32 * count,
+ /* [out] */ ICoreWebView2CustomSchemeRegistration * **schemeRegistrations) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustomSchemeRegistrations(
+ /* [in] */ UINT32 count,
+ /* [in] */ ICoreWebView2CustomSchemeRegistration * *schemeRegistrations) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptions4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions4, GetCustomSchemeRegistrations)
+ HRESULT(STDMETHODCALLTYPE *GetCustomSchemeRegistrations)(
+ ICoreWebView2EnvironmentOptions4 *This,
+ /* [out] */ UINT32 *count,
+ /* [out] */ ICoreWebView2CustomSchemeRegistration ***schemeRegistrations);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions4, SetCustomSchemeRegistrations)
+ HRESULT(STDMETHODCALLTYPE *SetCustomSchemeRegistrations)(
+ ICoreWebView2EnvironmentOptions4 *This,
+ /* [in] */ UINT32 count,
+ /* [in] */ ICoreWebView2CustomSchemeRegistration **schemeRegistrations);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptions4Vtbl;
+
+ interface ICoreWebView2EnvironmentOptions4
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptions4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions4_GetCustomSchemeRegistrations(This, count, schemeRegistrations) \
+ ((This)->lpVtbl->GetCustomSchemeRegistrations(This, count, schemeRegistrations))
+
+#define ICoreWebView2EnvironmentOptions4_SetCustomSchemeRegistrations(This, count, schemeRegistrations) \
+ ((This)->lpVtbl->SetCustomSchemeRegistrations(This, count, schemeRegistrations))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions5_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions5_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions5 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions5 = {0x0ae35d64, 0xc47f, 0x4464, {0x81, 0x4e, 0x25, 0x9c, 0x34, 0x5d, 0x15, 0x01}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0ae35d64-c47f-4464-814e-259c345d1501")
+ ICoreWebView2EnvironmentOptions5 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_EnableTrackingPrevention(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_EnableTrackingPrevention(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptions5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions5 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions5 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions5, get_EnableTrackingPrevention)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_EnableTrackingPrevention)(
+ ICoreWebView2EnvironmentOptions5 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions5, put_EnableTrackingPrevention)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_EnableTrackingPrevention)(
+ ICoreWebView2EnvironmentOptions5 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptions5Vtbl;
+
+ interface ICoreWebView2EnvironmentOptions5
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptions5Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions5_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions5_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions5_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions5_get_EnableTrackingPrevention(This, value) \
+ ((This)->lpVtbl->get_EnableTrackingPrevention(This, value))
+
+#define ICoreWebView2EnvironmentOptions5_put_EnableTrackingPrevention(This, value) \
+ ((This)->lpVtbl->put_EnableTrackingPrevention(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions5_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions6_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions6_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions6 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions6 = {0x57d29cc3, 0xc84f, 0x42a0, {0xb0, 0xe2, 0xef, 0xfb, 0xd5, 0xe1, 0x79, 0xde}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("57d29cc3-c84f-42a0-b0e2-effbd5e179de")
+ ICoreWebView2EnvironmentOptions6 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AreBrowserExtensionsEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AreBrowserExtensionsEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptions6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions6 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions6 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions6, get_AreBrowserExtensionsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserExtensionsEnabled)(
+ ICoreWebView2EnvironmentOptions6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions6, put_AreBrowserExtensionsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserExtensionsEnabled)(
+ ICoreWebView2EnvironmentOptions6 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptions6Vtbl;
+
+ interface ICoreWebView2EnvironmentOptions6
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptions6Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions6_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions6_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions6_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions6_get_AreBrowserExtensionsEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserExtensionsEnabled(This, value))
+
+#define ICoreWebView2EnvironmentOptions6_put_AreBrowserExtensionsEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserExtensionsEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions6_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions7_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions7_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions7 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions7 = {0xc48d539f, 0xe39f, 0x441c, {0xae, 0x68, 0x1f, 0x66, 0xe5, 0x70, 0xbd, 0xc5}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c48d539f-e39f-441c-ae68-1f66e570bdc5")
+ ICoreWebView2EnvironmentOptions7 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ChannelSearchKind(
+ /* [retval][out] */ COREWEBVIEW2_CHANNEL_SEARCH_KIND * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ChannelSearchKind(
+ /* [in] */ COREWEBVIEW2_CHANNEL_SEARCH_KIND value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ReleaseChannels(
+ /* [retval][out] */ COREWEBVIEW2_RELEASE_CHANNELS * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ReleaseChannels(
+ /* [in] */ COREWEBVIEW2_RELEASE_CHANNELS value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptions7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions7 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions7 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions7, get_ChannelSearchKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ChannelSearchKind)(
+ ICoreWebView2EnvironmentOptions7 *This,
+ /* [retval][out] */ COREWEBVIEW2_CHANNEL_SEARCH_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions7, put_ChannelSearchKind)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ChannelSearchKind)(
+ ICoreWebView2EnvironmentOptions7 *This,
+ /* [in] */ COREWEBVIEW2_CHANNEL_SEARCH_KIND value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions7, get_ReleaseChannels)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ReleaseChannels)(
+ ICoreWebView2EnvironmentOptions7 *This,
+ /* [retval][out] */ COREWEBVIEW2_RELEASE_CHANNELS *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions7, put_ReleaseChannels)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ReleaseChannels)(
+ ICoreWebView2EnvironmentOptions7 *This,
+ /* [in] */ COREWEBVIEW2_RELEASE_CHANNELS value);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptions7Vtbl;
+
+ interface ICoreWebView2EnvironmentOptions7
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptions7Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions7_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions7_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions7_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions7_get_ChannelSearchKind(This, value) \
+ ((This)->lpVtbl->get_ChannelSearchKind(This, value))
+
+#define ICoreWebView2EnvironmentOptions7_put_ChannelSearchKind(This, value) \
+ ((This)->lpVtbl->put_ChannelSearchKind(This, value))
+
+#define ICoreWebView2EnvironmentOptions7_get_ReleaseChannels(This, value) \
+ ((This)->lpVtbl->get_ReleaseChannels(This, value))
+
+#define ICoreWebView2EnvironmentOptions7_put_ReleaseChannels(This, value) \
+ ((This)->lpVtbl->put_ReleaseChannels(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions7_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2EnvironmentOptions8_INTERFACE_DEFINED__
+#define __ICoreWebView2EnvironmentOptions8_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2EnvironmentOptions8 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2EnvironmentOptions8 = {0x7c7ecf51, 0xe918, 0x5caf, {0x85, 0x3c, 0xe9, 0xa2, 0xbc, 0xc2, 0x77, 0x75}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7c7ecf51-e918-5caf-853c-e9a2bcc27775")
+ ICoreWebView2EnvironmentOptions8 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ScrollBarStyle(
+ /* [retval][out] */ COREWEBVIEW2_SCROLLBAR_STYLE * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ScrollBarStyle(
+ /* [in] */ COREWEBVIEW2_SCROLLBAR_STYLE value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2EnvironmentOptions8Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2EnvironmentOptions8 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2EnvironmentOptions8 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2EnvironmentOptions8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions8, get_ScrollBarStyle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ScrollBarStyle)(
+ ICoreWebView2EnvironmentOptions8 *This,
+ /* [retval][out] */ COREWEBVIEW2_SCROLLBAR_STYLE *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2EnvironmentOptions8, put_ScrollBarStyle)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ScrollBarStyle)(
+ ICoreWebView2EnvironmentOptions8 *This,
+ /* [in] */ COREWEBVIEW2_SCROLLBAR_STYLE value);
+
+ END_INTERFACE
+ } ICoreWebView2EnvironmentOptions8Vtbl;
+
+ interface ICoreWebView2EnvironmentOptions8
+ {
+ CONST_VTBL struct ICoreWebView2EnvironmentOptions8Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2EnvironmentOptions8_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2EnvironmentOptions8_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2EnvironmentOptions8_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2EnvironmentOptions8_get_ScrollBarStyle(This, value) \
+ ((This)->lpVtbl->get_ScrollBarStyle(This, value))
+
+#define ICoreWebView2EnvironmentOptions8_put_ScrollBarStyle(This, value) \
+ ((This)->lpVtbl->put_ScrollBarStyle(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2EnvironmentOptions8_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ExecuteScriptResult_INTERFACE_DEFINED__
+#define __ICoreWebView2ExecuteScriptResult_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ExecuteScriptResult */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ExecuteScriptResult = {0x0CE15963, 0x3698, 0x4DF7, {0x93, 0x99, 0x71, 0xED, 0x6C, 0xDD, 0x8C, 0x9F}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0CE15963-3698-4DF7-9399-71ED6CDD8C9F")
+ ICoreWebView2ExecuteScriptResult : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Succeeded(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ResultAsJson(
+ /* [retval][out] */ LPWSTR * jsonResult) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TryGetResultAsString(
+ /* [out] */ LPWSTR * stringResult,
+ /* [out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Exception(
+ /* [retval][out] */ ICoreWebView2ScriptException * *exception) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ExecuteScriptResultVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ExecuteScriptResult *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ExecuteScriptResult *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ExecuteScriptResult *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ExecuteScriptResult, get_Succeeded)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Succeeded)(
+ ICoreWebView2ExecuteScriptResult *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ExecuteScriptResult, get_ResultAsJson)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ResultAsJson)(
+ ICoreWebView2ExecuteScriptResult *This,
+ /* [retval][out] */ LPWSTR *jsonResult);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ExecuteScriptResult, TryGetResultAsString)
+ HRESULT(STDMETHODCALLTYPE *TryGetResultAsString)(
+ ICoreWebView2ExecuteScriptResult *This,
+ /* [out] */ LPWSTR *stringResult,
+ /* [out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ExecuteScriptResult, get_Exception)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Exception)(
+ ICoreWebView2ExecuteScriptResult *This,
+ /* [retval][out] */ ICoreWebView2ScriptException **exception);
+
+ END_INTERFACE
+ } ICoreWebView2ExecuteScriptResultVtbl;
+
+ interface ICoreWebView2ExecuteScriptResult
+ {
+ CONST_VTBL struct ICoreWebView2ExecuteScriptResultVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ExecuteScriptResult_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ExecuteScriptResult_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ExecuteScriptResult_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ExecuteScriptResult_get_Succeeded(This, value) \
+ ((This)->lpVtbl->get_Succeeded(This, value))
+
+#define ICoreWebView2ExecuteScriptResult_get_ResultAsJson(This, jsonResult) \
+ ((This)->lpVtbl->get_ResultAsJson(This, jsonResult))
+
+#define ICoreWebView2ExecuteScriptResult_TryGetResultAsString(This, stringResult, value) \
+ ((This)->lpVtbl->TryGetResultAsString(This, stringResult, value))
+
+#define ICoreWebView2ExecuteScriptResult_get_Exception(This, exception) \
+ ((This)->lpVtbl->get_Exception(This, exception))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ExecuteScriptResult_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2File_INTERFACE_DEFINED__
+#define __ICoreWebView2File_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2File */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2File = {0xf2c19559, 0x6bc1, 0x4583, {0xa7, 0x57, 0x90, 0x02, 0x1b, 0xe9, 0xaf, 0xec}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f2c19559-6bc1-4583-a757-90021be9afec")
+ ICoreWebView2File : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Path(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FileVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2File *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2File *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2File *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2File, get_Path)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Path)(
+ ICoreWebView2File *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2FileVtbl;
+
+ interface ICoreWebView2File
+ {
+ CONST_VTBL struct ICoreWebView2FileVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2File_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2File_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2File_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2File_get_Path(This, value) \
+ ((This)->lpVtbl->get_Path(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2File_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FileSystemHandle_INTERFACE_DEFINED__
+#define __ICoreWebView2FileSystemHandle_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FileSystemHandle */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FileSystemHandle = {0xc65100ac, 0x0de2, 0x5551, {0xa3, 0x62, 0x23, 0xd9, 0xbd, 0x1d, 0x0e, 0x1f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c65100ac-0de2-5551-a362-23d9bd1d0e1f")
+ ICoreWebView2FileSystemHandle : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Kind(
+ /* [retval][out] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Path(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Permission(
+ /* [retval][out] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FileSystemHandleVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FileSystemHandle *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FileSystemHandle *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FileSystemHandle *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FileSystemHandle, get_Kind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Kind)(
+ ICoreWebView2FileSystemHandle *This,
+ /* [retval][out] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FileSystemHandle, get_Path)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Path)(
+ ICoreWebView2FileSystemHandle *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FileSystemHandle, get_Permission)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Permission)(
+ ICoreWebView2FileSystemHandle *This,
+ /* [retval][out] */ COREWEBVIEW2_FILE_SYSTEM_HANDLE_PERMISSION *value);
+
+ END_INTERFACE
+ } ICoreWebView2FileSystemHandleVtbl;
+
+ interface ICoreWebView2FileSystemHandle
+ {
+ CONST_VTBL struct ICoreWebView2FileSystemHandleVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FileSystemHandle_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FileSystemHandle_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FileSystemHandle_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FileSystemHandle_get_Kind(This, value) \
+ ((This)->lpVtbl->get_Kind(This, value))
+
+#define ICoreWebView2FileSystemHandle_get_Path(This, value) \
+ ((This)->lpVtbl->get_Path(This, value))
+
+#define ICoreWebView2FileSystemHandle_get_Permission(This, value) \
+ ((This)->lpVtbl->get_Permission(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FileSystemHandle_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame_INTERFACE_DEFINED__
+#define __ICoreWebView2Frame_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Frame */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Frame = {0xf1131a5e, 0x9ba9, 0x11eb, {0xa8, 0xb3, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f1131a5e-9ba9-11eb-a8b3-0242ac130003")
+ ICoreWebView2Frame : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Name(
+ /* [retval][out] */ LPWSTR * name) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_NameChanged(
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NameChanged(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddHostObjectToScriptWithOrigins(
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT * object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR * origins) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveHostObjectFromScript(
+ /* [in] */ LPCWSTR name) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_Destroyed(
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_Destroyed(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsDestroyed(
+ /* [retval][out] */ BOOL * destroyed) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Frame *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Frame *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Frame *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Frame *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NameChanged)(
+ ICoreWebView2Frame *This,
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NameChanged)(
+ ICoreWebView2Frame *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, AddHostObjectToScriptWithOrigins)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScriptWithOrigins)(
+ ICoreWebView2Frame *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR *origins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2Frame *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *add_Destroyed)(
+ ICoreWebView2Frame *This,
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *remove_Destroyed)(
+ ICoreWebView2Frame *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, IsDestroyed)
+ HRESULT(STDMETHODCALLTYPE *IsDestroyed)(
+ ICoreWebView2Frame *This,
+ /* [retval][out] */ BOOL *destroyed);
+
+ END_INTERFACE
+ } ICoreWebView2FrameVtbl;
+
+ interface ICoreWebView2Frame
+ {
+ CONST_VTBL struct ICoreWebView2FrameVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Frame_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Frame_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Frame_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Frame_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Frame_add_NameChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NameChanged(This, eventHandler, token))
+
+#define ICoreWebView2Frame_remove_NameChanged(This, token) \
+ ((This)->lpVtbl->remove_NameChanged(This, token))
+
+#define ICoreWebView2Frame_AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins) \
+ ((This)->lpVtbl->AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins))
+
+#define ICoreWebView2Frame_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2Frame_add_Destroyed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Destroyed(This, eventHandler, token))
+
+#define ICoreWebView2Frame_remove_Destroyed(This, token) \
+ ((This)->lpVtbl->remove_Destroyed(This, token))
+
+#define ICoreWebView2Frame_IsDestroyed(This, destroyed) \
+ ((This)->lpVtbl->IsDestroyed(This, destroyed))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Frame_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameDestroyedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameDestroyedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameDestroyedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameDestroyedEventHandler = {0x59dd7b4c, 0x9baa, 0x11eb, {0xa8, 0xb3, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("59dd7b4c-9baa-11eb-a8b3-0242ac130003")
+ ICoreWebView2FrameDestroyedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameDestroyedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameDestroyedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameDestroyedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameDestroyedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameDestroyedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameDestroyedEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameDestroyedEventHandlerVtbl;
+
+ interface ICoreWebView2FrameDestroyedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameDestroyedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameDestroyedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameDestroyedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameDestroyedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameDestroyedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameDestroyedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameNameChangedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameNameChangedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameNameChangedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameNameChangedEventHandler = {0x435c7dc8, 0x9baa, 0x11eb, {0xa8, 0xb3, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("435c7dc8-9baa-11eb-a8b3-0242ac130003")
+ ICoreWebView2FrameNameChangedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameNameChangedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameNameChangedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameNameChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameNameChangedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameNameChangedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameNameChangedEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameNameChangedEventHandlerVtbl;
+
+ interface ICoreWebView2FrameNameChangedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameNameChangedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameNameChangedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameNameChangedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameNameChangedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameNameChangedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameNameChangedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame2_INTERFACE_DEFINED__
+#define __ICoreWebView2Frame2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Frame2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Frame2 = {0x7a6a5834, 0xd185, 0x4dbf, {0xb6, 0x3f, 0x4a, 0x9b, 0xc4, 0x31, 0x07, 0xd4}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7a6a5834-d185-4dbf-b63f-4a9bc43107d4")
+ ICoreWebView2Frame2 : public ICoreWebView2Frame
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_NavigationStarting(
+ /* [in] */ ICoreWebView2FrameNavigationStartingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NavigationStarting(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_ContentLoading(
+ /* [in] */ ICoreWebView2FrameContentLoadingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ContentLoading(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_NavigationCompleted(
+ /* [in] */ ICoreWebView2FrameNavigationCompletedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_NavigationCompleted(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_DOMContentLoaded(
+ /* [in] */ ICoreWebView2FrameDOMContentLoadedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_DOMContentLoaded(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ExecuteScript(
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostWebMessageAsJson(
+ /* [in] */ LPCWSTR webMessageAsJson) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostWebMessageAsString(
+ /* [in] */ LPCWSTR webMessageAsString) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_WebMessageReceived(
+ /* [in] */ ICoreWebView2FrameWebMessageReceivedEventHandler * handler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_WebMessageReceived(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Frame2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Frame2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Frame2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Frame2 *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NameChanged)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NameChanged)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, AddHostObjectToScriptWithOrigins)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScriptWithOrigins)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR *origins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *add_Destroyed)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *remove_Destroyed)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, IsDestroyed)
+ HRESULT(STDMETHODCALLTYPE *IsDestroyed)(
+ ICoreWebView2Frame2 *This,
+ /* [retval][out] */ BOOL *destroyed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ ICoreWebView2FrameNavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ ICoreWebView2FrameContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ ICoreWebView2FrameNavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ ICoreWebView2FrameDOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ ICoreWebView2FrameWebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2Frame2 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2Frame2Vtbl;
+
+ interface ICoreWebView2Frame2
+ {
+ CONST_VTBL struct ICoreWebView2Frame2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Frame2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Frame2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Frame2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Frame2_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Frame2_add_NameChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NameChanged(This, eventHandler, token))
+
+#define ICoreWebView2Frame2_remove_NameChanged(This, token) \
+ ((This)->lpVtbl->remove_NameChanged(This, token))
+
+#define ICoreWebView2Frame2_AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins) \
+ ((This)->lpVtbl->AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins))
+
+#define ICoreWebView2Frame2_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2Frame2_add_Destroyed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Destroyed(This, eventHandler, token))
+
+#define ICoreWebView2Frame2_remove_Destroyed(This, token) \
+ ((This)->lpVtbl->remove_Destroyed(This, token))
+
+#define ICoreWebView2Frame2_IsDestroyed(This, destroyed) \
+ ((This)->lpVtbl->IsDestroyed(This, destroyed))
+
+#define ICoreWebView2Frame2_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame2_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2Frame2_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2Frame2_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2Frame2_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2Frame2_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2Frame2_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2Frame2_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2Frame2_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2Frame2_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2Frame2_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2Frame2_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2Frame2_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Frame2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameContentLoadingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameContentLoadingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameContentLoadingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameContentLoadingEventHandler = {0x0d6156f2, 0xd332, 0x49a7, {0x9e, 0x03, 0x7d, 0x8f, 0x2f, 0xee, 0xee, 0x54}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0d6156f2-d332-49a7-9e03-7d8f2feeee54")
+ ICoreWebView2FrameContentLoadingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2ContentLoadingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameContentLoadingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameContentLoadingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameContentLoadingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameContentLoadingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameContentLoadingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameContentLoadingEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2ContentLoadingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameContentLoadingEventHandlerVtbl;
+
+ interface ICoreWebView2FrameContentLoadingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameContentLoadingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameContentLoadingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameContentLoadingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameContentLoadingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameContentLoadingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameContentLoadingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameDOMContentLoadedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameDOMContentLoadedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameDOMContentLoadedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameDOMContentLoadedEventHandler = {0x38d9520d, 0x340f, 0x4d1e, {0xa7, 0x75, 0x43, 0xfc, 0xe9, 0x75, 0x36, 0x83}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("38d9520d-340f-4d1e-a775-43fce9753683")
+ ICoreWebView2FrameDOMContentLoadedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameDOMContentLoadedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameDOMContentLoadedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameDOMContentLoadedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameDOMContentLoadedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameDOMContentLoadedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameDOMContentLoadedEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2DOMContentLoadedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameDOMContentLoadedEventHandlerVtbl;
+
+ interface ICoreWebView2FrameDOMContentLoadedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameDOMContentLoadedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameDOMContentLoadedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameDOMContentLoadedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameDOMContentLoadedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameDOMContentLoadedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameDOMContentLoadedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameNavigationCompletedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameNavigationCompletedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameNavigationCompletedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameNavigationCompletedEventHandler = {0x609302ad, 0x0e36, 0x4f9a, {0xa2, 0x10, 0x6a, 0x45, 0x27, 0x28, 0x42, 0xa9}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("609302ad-0e36-4f9a-a210-6a45272842a9")
+ ICoreWebView2FrameNavigationCompletedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2NavigationCompletedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameNavigationCompletedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameNavigationCompletedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameNavigationCompletedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameNavigationCompletedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameNavigationCompletedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameNavigationCompletedEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2NavigationCompletedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameNavigationCompletedEventHandlerVtbl;
+
+ interface ICoreWebView2FrameNavigationCompletedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameNavigationCompletedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameNavigationCompletedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameNavigationCompletedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameNavigationCompletedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameNavigationCompletedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameNavigationCompletedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameNavigationStartingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameNavigationStartingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameNavigationStartingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameNavigationStartingEventHandler = {0xe79908bf, 0x2d5d, 0x4968, {0x83, 0xdb, 0x26, 0x3f, 0xea, 0x2c, 0x1d, 0xa3}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e79908bf-2d5d-4968-83db-263fea2c1da3")
+ ICoreWebView2FrameNavigationStartingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2NavigationStartingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameNavigationStartingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameNavigationStartingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameNavigationStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameNavigationStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameNavigationStartingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameNavigationStartingEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2NavigationStartingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameNavigationStartingEventHandlerVtbl;
+
+ interface ICoreWebView2FrameNavigationStartingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameNavigationStartingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameNavigationStartingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameNavigationStartingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameNavigationStartingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameNavigationStartingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameNavigationStartingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameWebMessageReceivedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameWebMessageReceivedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameWebMessageReceivedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameWebMessageReceivedEventHandler = {0xe371e005, 0x6d1d, 0x4517, {0x93, 0x4b, 0xa8, 0xf1, 0x62, 0x9c, 0x62, 0xa5}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e371e005-6d1d-4517-934b-a8f1629c62a5")
+ ICoreWebView2FrameWebMessageReceivedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameWebMessageReceivedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameWebMessageReceivedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameWebMessageReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameWebMessageReceivedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameWebMessageReceivedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameWebMessageReceivedEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2WebMessageReceivedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameWebMessageReceivedEventHandlerVtbl;
+
+ interface ICoreWebView2FrameWebMessageReceivedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameWebMessageReceivedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameWebMessageReceivedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameWebMessageReceivedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameWebMessageReceivedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameWebMessageReceivedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameWebMessageReceivedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame3_INTERFACE_DEFINED__
+#define __ICoreWebView2Frame3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Frame3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Frame3 = {0xb50d82cc, 0xcc28, 0x481d, {0x96, 0x14, 0xcb, 0x04, 0x88, 0x95, 0xe6, 0xa0}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b50d82cc-cc28-481d-9614-cb048895e6a0")
+ ICoreWebView2Frame3 : public ICoreWebView2Frame2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_PermissionRequested(
+ /* [in] */ ICoreWebView2FramePermissionRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_PermissionRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Frame3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Frame3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Frame3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Frame3 *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NameChanged)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NameChanged)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, AddHostObjectToScriptWithOrigins)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScriptWithOrigins)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR *origins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *add_Destroyed)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *remove_Destroyed)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, IsDestroyed)
+ HRESULT(STDMETHODCALLTYPE *IsDestroyed)(
+ ICoreWebView2Frame3 *This,
+ /* [retval][out] */ BOOL *destroyed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FrameNavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FrameContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FrameNavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FrameDOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FrameWebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ ICoreWebView2FramePermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2Frame3 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2Frame3Vtbl;
+
+ interface ICoreWebView2Frame3
+ {
+ CONST_VTBL struct ICoreWebView2Frame3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Frame3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Frame3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Frame3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Frame3_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Frame3_add_NameChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NameChanged(This, eventHandler, token))
+
+#define ICoreWebView2Frame3_remove_NameChanged(This, token) \
+ ((This)->lpVtbl->remove_NameChanged(This, token))
+
+#define ICoreWebView2Frame3_AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins) \
+ ((This)->lpVtbl->AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins))
+
+#define ICoreWebView2Frame3_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2Frame3_add_Destroyed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Destroyed(This, eventHandler, token))
+
+#define ICoreWebView2Frame3_remove_Destroyed(This, token) \
+ ((This)->lpVtbl->remove_Destroyed(This, token))
+
+#define ICoreWebView2Frame3_IsDestroyed(This, destroyed) \
+ ((This)->lpVtbl->IsDestroyed(This, destroyed))
+
+#define ICoreWebView2Frame3_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame3_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2Frame3_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2Frame3_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2Frame3_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2Frame3_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2Frame3_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2Frame3_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2Frame3_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2Frame3_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2Frame3_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2Frame3_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2Frame3_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2Frame3_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2Frame3_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Frame3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FramePermissionRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FramePermissionRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FramePermissionRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FramePermissionRequestedEventHandler = {0x845d0edd, 0x8bd8, 0x429b, {0x99, 0x15, 0x48, 0x21, 0x78, 0x9f, 0x23, 0xe9}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("845d0edd-8bd8-429b-9915-4821789f23e9")
+ ICoreWebView2FramePermissionRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2PermissionRequestedEventArgs2 * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FramePermissionRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FramePermissionRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FramePermissionRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FramePermissionRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FramePermissionRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FramePermissionRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2PermissionRequestedEventArgs2 *args);
+
+ END_INTERFACE
+ } ICoreWebView2FramePermissionRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2FramePermissionRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FramePermissionRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FramePermissionRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FramePermissionRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FramePermissionRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FramePermissionRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FramePermissionRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame4_INTERFACE_DEFINED__
+#define __ICoreWebView2Frame4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Frame4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Frame4 = {0x188782dc, 0x92aa, 0x4732, {0xab, 0x3c, 0xfc, 0xc5, 0x9f, 0x6f, 0x68, 0xb9}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("188782dc-92aa-4732-ab3c-fcc59f6f68b9")
+ ICoreWebView2Frame4 : public ICoreWebView2Frame3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PostSharedBufferToScript(
+ /* [in] */ ICoreWebView2SharedBuffer * sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Frame4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Frame4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Frame4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Frame4 *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NameChanged)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NameChanged)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, AddHostObjectToScriptWithOrigins)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScriptWithOrigins)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR *origins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *add_Destroyed)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *remove_Destroyed)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, IsDestroyed)
+ HRESULT(STDMETHODCALLTYPE *IsDestroyed)(
+ ICoreWebView2Frame4 *This,
+ /* [retval][out] */ BOOL *destroyed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FrameNavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FrameContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FrameNavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FrameDOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FrameWebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2FramePermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame4, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2Frame4 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ END_INTERFACE
+ } ICoreWebView2Frame4Vtbl;
+
+ interface ICoreWebView2Frame4
+ {
+ CONST_VTBL struct ICoreWebView2Frame4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Frame4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Frame4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Frame4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Frame4_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Frame4_add_NameChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NameChanged(This, eventHandler, token))
+
+#define ICoreWebView2Frame4_remove_NameChanged(This, token) \
+ ((This)->lpVtbl->remove_NameChanged(This, token))
+
+#define ICoreWebView2Frame4_AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins) \
+ ((This)->lpVtbl->AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins))
+
+#define ICoreWebView2Frame4_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2Frame4_add_Destroyed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Destroyed(This, eventHandler, token))
+
+#define ICoreWebView2Frame4_remove_Destroyed(This, token) \
+ ((This)->lpVtbl->remove_Destroyed(This, token))
+
+#define ICoreWebView2Frame4_IsDestroyed(This, destroyed) \
+ ((This)->lpVtbl->IsDestroyed(This, destroyed))
+
+#define ICoreWebView2Frame4_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame4_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2Frame4_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2Frame4_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2Frame4_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2Frame4_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2Frame4_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2Frame4_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2Frame4_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2Frame4_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2Frame4_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2Frame4_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2Frame4_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2Frame4_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2Frame4_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2Frame4_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Frame4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame5_INTERFACE_DEFINED__
+#define __ICoreWebView2Frame5_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Frame5 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Frame5 = {0x99d199c4, 0x7305, 0x11ee, {0xb9, 0x62, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("99d199c4-7305-11ee-b962-0242ac120002")
+ ICoreWebView2Frame5 : public ICoreWebView2Frame4
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FrameId(
+ /* [retval][out] */ UINT32 * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Frame5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Frame5 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Frame5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Frame5 *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NameChanged)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NameChanged)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, AddHostObjectToScriptWithOrigins)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScriptWithOrigins)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR *origins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *add_Destroyed)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *remove_Destroyed)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, IsDestroyed)
+ HRESULT(STDMETHODCALLTYPE *IsDestroyed)(
+ ICoreWebView2Frame5 *This,
+ /* [retval][out] */ BOOL *destroyed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FrameNavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FrameContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FrameNavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FrameDOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FrameWebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2FramePermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame4, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2Frame5 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame5, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2Frame5 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ END_INTERFACE
+ } ICoreWebView2Frame5Vtbl;
+
+ interface ICoreWebView2Frame5
+ {
+ CONST_VTBL struct ICoreWebView2Frame5Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Frame5_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Frame5_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Frame5_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Frame5_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Frame5_add_NameChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NameChanged(This, eventHandler, token))
+
+#define ICoreWebView2Frame5_remove_NameChanged(This, token) \
+ ((This)->lpVtbl->remove_NameChanged(This, token))
+
+#define ICoreWebView2Frame5_AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins) \
+ ((This)->lpVtbl->AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins))
+
+#define ICoreWebView2Frame5_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2Frame5_add_Destroyed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Destroyed(This, eventHandler, token))
+
+#define ICoreWebView2Frame5_remove_Destroyed(This, token) \
+ ((This)->lpVtbl->remove_Destroyed(This, token))
+
+#define ICoreWebView2Frame5_IsDestroyed(This, destroyed) \
+ ((This)->lpVtbl->IsDestroyed(This, destroyed))
+
+#define ICoreWebView2Frame5_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame5_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2Frame5_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2Frame5_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2Frame5_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2Frame5_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2Frame5_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2Frame5_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2Frame5_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2Frame5_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2Frame5_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2Frame5_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2Frame5_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2Frame5_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2Frame5_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2Frame5_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2Frame5_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Frame5_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame6_INTERFACE_DEFINED__
+#define __ICoreWebView2Frame6_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Frame6 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Frame6 = {0x0de611fd, 0x31e9, 0x5ddc, {0x9d, 0x71, 0x95, 0xed, 0xa2, 0x6e, 0xff, 0x32}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0de611fd-31e9-5ddc-9d71-95eda26eff32")
+ ICoreWebView2Frame6 : public ICoreWebView2Frame5
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_ScreenCaptureStarting(
+ /* [in] */ ICoreWebView2FrameScreenCaptureStartingEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_ScreenCaptureStarting(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Frame6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Frame6 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Frame6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Frame6 *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NameChanged)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NameChanged)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, AddHostObjectToScriptWithOrigins)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScriptWithOrigins)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR *origins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *add_Destroyed)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *remove_Destroyed)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, IsDestroyed)
+ HRESULT(STDMETHODCALLTYPE *IsDestroyed)(
+ ICoreWebView2Frame6 *This,
+ /* [retval][out] */ BOOL *destroyed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameNavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameNavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameDOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameWebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FramePermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame4, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame5, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2Frame6 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame6, add_ScreenCaptureStarting)
+ HRESULT(STDMETHODCALLTYPE *add_ScreenCaptureStarting)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ ICoreWebView2FrameScreenCaptureStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame6, remove_ScreenCaptureStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_ScreenCaptureStarting)(
+ ICoreWebView2Frame6 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2Frame6Vtbl;
+
+ interface ICoreWebView2Frame6
+ {
+ CONST_VTBL struct ICoreWebView2Frame6Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Frame6_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Frame6_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Frame6_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Frame6_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Frame6_add_NameChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NameChanged(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_NameChanged(This, token) \
+ ((This)->lpVtbl->remove_NameChanged(This, token))
+
+#define ICoreWebView2Frame6_AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins) \
+ ((This)->lpVtbl->AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins))
+
+#define ICoreWebView2Frame6_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2Frame6_add_Destroyed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Destroyed(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_Destroyed(This, token) \
+ ((This)->lpVtbl->remove_Destroyed(This, token))
+
+#define ICoreWebView2Frame6_IsDestroyed(This, destroyed) \
+ ((This)->lpVtbl->IsDestroyed(This, destroyed))
+
+#define ICoreWebView2Frame6_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2Frame6_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2Frame6_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2Frame6_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2Frame6_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2Frame6_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2Frame6_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2Frame6_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2Frame6_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2Frame6_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2Frame6_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2Frame6_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2Frame6_add_ScreenCaptureStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScreenCaptureStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame6_remove_ScreenCaptureStarting(This, token) \
+ ((This)->lpVtbl->remove_ScreenCaptureStarting(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Frame6_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameScreenCaptureStartingEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameScreenCaptureStartingEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameScreenCaptureStartingEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameScreenCaptureStartingEventHandler = {0xa6c1d8ad, 0xbb80, 0x59c5, {0x89, 0x5b, 0xfb, 0xa1, 0x69, 0x8b, 0x93, 0x09}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a6c1d8ad-bb80-59c5-895b-fba1698b9309")
+ ICoreWebView2FrameScreenCaptureStartingEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2ScreenCaptureStartingEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameScreenCaptureStartingEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameScreenCaptureStartingEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameScreenCaptureStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameScreenCaptureStartingEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameScreenCaptureStartingEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameScreenCaptureStartingEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2ScreenCaptureStartingEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameScreenCaptureStartingEventHandlerVtbl;
+
+ interface ICoreWebView2FrameScreenCaptureStartingEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameScreenCaptureStartingEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameScreenCaptureStartingEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameScreenCaptureStartingEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameScreenCaptureStartingEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameScreenCaptureStartingEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameScreenCaptureStartingEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Frame7_INTERFACE_DEFINED__
+#define __ICoreWebView2Frame7_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Frame7 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Frame7 = {0x3598cfa2, 0xd85d, 0x5a9f, {0x92, 0x28, 0x4d, 0xde, 0x1f, 0x59, 0xec, 0x64}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3598cfa2-d85d-5a9f-9228-4dde1f59ec64")
+ ICoreWebView2Frame7 : public ICoreWebView2Frame6
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_FrameCreated(
+ /* [in] */ ICoreWebView2FrameChildFrameCreatedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_FrameCreated(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Frame7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Frame7 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Frame7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2Frame7 *This,
+ /* [retval][out] */ LPWSTR *name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *add_NameChanged)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameNameChangedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_NameChanged)
+ HRESULT(STDMETHODCALLTYPE *remove_NameChanged)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, AddHostObjectToScriptWithOrigins)
+ HRESULT(STDMETHODCALLTYPE *AddHostObjectToScriptWithOrigins)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ VARIANT *object,
+ /* [in] */ UINT32 originsCount,
+ /* [size_is][in] */ LPCWSTR *origins);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, RemoveHostObjectFromScript)
+ HRESULT(STDMETHODCALLTYPE *RemoveHostObjectFromScript)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, add_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *add_Destroyed)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameDestroyedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, remove_Destroyed)
+ HRESULT(STDMETHODCALLTYPE *remove_Destroyed)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame, IsDestroyed)
+ HRESULT(STDMETHODCALLTYPE *IsDestroyed)(
+ ICoreWebView2Frame7 *This,
+ /* [retval][out] */ BOOL *destroyed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationStarting)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameNavigationStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationStarting)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *add_ContentLoading)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameContentLoadingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_ContentLoading)
+ HRESULT(STDMETHODCALLTYPE *remove_ContentLoading)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *add_NavigationCompleted)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameNavigationCompletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_NavigationCompleted)
+ HRESULT(STDMETHODCALLTYPE *remove_NavigationCompleted)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *add_DOMContentLoaded)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameDOMContentLoadedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_DOMContentLoaded)
+ HRESULT(STDMETHODCALLTYPE *remove_DOMContentLoaded)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, ExecuteScript)
+ HRESULT(STDMETHODCALLTYPE *ExecuteScript)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ LPCWSTR javaScript,
+ /* [in] */ ICoreWebView2ExecuteScriptCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsJson)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsJson)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ LPCWSTR webMessageAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, PostWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *PostWebMessageAsString)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ LPCWSTR webMessageAsString);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, add_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *add_WebMessageReceived)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameWebMessageReceivedEventHandler *handler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame2, remove_WebMessageReceived)
+ HRESULT(STDMETHODCALLTYPE *remove_WebMessageReceived)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, add_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *add_PermissionRequested)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FramePermissionRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame3, remove_PermissionRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_PermissionRequested)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame4, PostSharedBufferToScript)
+ HRESULT(STDMETHODCALLTYPE *PostSharedBufferToScript)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2SharedBuffer *sharedBuffer,
+ /* [in] */ COREWEBVIEW2_SHARED_BUFFER_ACCESS access,
+ /* [in] */ LPCWSTR additionalDataAsJson);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame5, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2Frame7 *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame6, add_ScreenCaptureStarting)
+ HRESULT(STDMETHODCALLTYPE *add_ScreenCaptureStarting)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameScreenCaptureStartingEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame6, remove_ScreenCaptureStarting)
+ HRESULT(STDMETHODCALLTYPE *remove_ScreenCaptureStarting)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame7, add_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *add_FrameCreated)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ ICoreWebView2FrameChildFrameCreatedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Frame7, remove_FrameCreated)
+ HRESULT(STDMETHODCALLTYPE *remove_FrameCreated)(
+ ICoreWebView2Frame7 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2Frame7Vtbl;
+
+ interface ICoreWebView2Frame7
+ {
+ CONST_VTBL struct ICoreWebView2Frame7Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Frame7_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Frame7_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Frame7_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Frame7_get_Name(This, name) \
+ ((This)->lpVtbl->get_Name(This, name))
+
+#define ICoreWebView2Frame7_add_NameChanged(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NameChanged(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_NameChanged(This, token) \
+ ((This)->lpVtbl->remove_NameChanged(This, token))
+
+#define ICoreWebView2Frame7_AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins) \
+ ((This)->lpVtbl->AddHostObjectToScriptWithOrigins(This, name, object, originsCount, origins))
+
+#define ICoreWebView2Frame7_RemoveHostObjectFromScript(This, name) \
+ ((This)->lpVtbl->RemoveHostObjectFromScript(This, name))
+
+#define ICoreWebView2Frame7_add_Destroyed(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Destroyed(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_Destroyed(This, token) \
+ ((This)->lpVtbl->remove_Destroyed(This, token))
+
+#define ICoreWebView2Frame7_IsDestroyed(This, destroyed) \
+ ((This)->lpVtbl->IsDestroyed(This, destroyed))
+
+#define ICoreWebView2Frame7_add_NavigationStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_NavigationStarting(This, token) \
+ ((This)->lpVtbl->remove_NavigationStarting(This, token))
+
+#define ICoreWebView2Frame7_add_ContentLoading(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ContentLoading(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_ContentLoading(This, token) \
+ ((This)->lpVtbl->remove_ContentLoading(This, token))
+
+#define ICoreWebView2Frame7_add_NavigationCompleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_NavigationCompleted(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_NavigationCompleted(This, token) \
+ ((This)->lpVtbl->remove_NavigationCompleted(This, token))
+
+#define ICoreWebView2Frame7_add_DOMContentLoaded(This, eventHandler, token) \
+ ((This)->lpVtbl->add_DOMContentLoaded(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_DOMContentLoaded(This, token) \
+ ((This)->lpVtbl->remove_DOMContentLoaded(This, token))
+
+#define ICoreWebView2Frame7_ExecuteScript(This, javaScript, handler) \
+ ((This)->lpVtbl->ExecuteScript(This, javaScript, handler))
+
+#define ICoreWebView2Frame7_PostWebMessageAsJson(This, webMessageAsJson) \
+ ((This)->lpVtbl->PostWebMessageAsJson(This, webMessageAsJson))
+
+#define ICoreWebView2Frame7_PostWebMessageAsString(This, webMessageAsString) \
+ ((This)->lpVtbl->PostWebMessageAsString(This, webMessageAsString))
+
+#define ICoreWebView2Frame7_add_WebMessageReceived(This, handler, token) \
+ ((This)->lpVtbl->add_WebMessageReceived(This, handler, token))
+
+#define ICoreWebView2Frame7_remove_WebMessageReceived(This, token) \
+ ((This)->lpVtbl->remove_WebMessageReceived(This, token))
+
+#define ICoreWebView2Frame7_add_PermissionRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_PermissionRequested(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_PermissionRequested(This, token) \
+ ((This)->lpVtbl->remove_PermissionRequested(This, token))
+
+#define ICoreWebView2Frame7_PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson) \
+ ((This)->lpVtbl->PostSharedBufferToScript(This, sharedBuffer, access, additionalDataAsJson))
+
+#define ICoreWebView2Frame7_get_FrameId(This, value) \
+ ((This)->lpVtbl->get_FrameId(This, value))
+
+#define ICoreWebView2Frame7_add_ScreenCaptureStarting(This, eventHandler, token) \
+ ((This)->lpVtbl->add_ScreenCaptureStarting(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_ScreenCaptureStarting(This, token) \
+ ((This)->lpVtbl->remove_ScreenCaptureStarting(This, token))
+
+#define ICoreWebView2Frame7_add_FrameCreated(This, eventHandler, token) \
+ ((This)->lpVtbl->add_FrameCreated(This, eventHandler, token))
+
+#define ICoreWebView2Frame7_remove_FrameCreated(This, token) \
+ ((This)->lpVtbl->remove_FrameCreated(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Frame7_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameChildFrameCreatedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameChildFrameCreatedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameChildFrameCreatedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameChildFrameCreatedEventHandler = {0x569e40e7, 0x46b7, 0x563d, {0x83, 0xae, 0x10, 0x73, 0x15, 0x56, 0x64, 0xd7}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("569e40e7-46b7-563d-83ae-1073155664d7")
+ ICoreWebView2FrameChildFrameCreatedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Frame * sender,
+ /* [in] */ ICoreWebView2FrameCreatedEventArgs * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameChildFrameCreatedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameChildFrameCreatedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameChildFrameCreatedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameChildFrameCreatedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameChildFrameCreatedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2FrameChildFrameCreatedEventHandler *This,
+ /* [in] */ ICoreWebView2Frame *sender,
+ /* [in] */ ICoreWebView2FrameCreatedEventArgs *args);
+
+ END_INTERFACE
+ } ICoreWebView2FrameChildFrameCreatedEventHandlerVtbl;
+
+ interface ICoreWebView2FrameChildFrameCreatedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2FrameChildFrameCreatedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameChildFrameCreatedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameChildFrameCreatedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameChildFrameCreatedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameChildFrameCreatedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameChildFrameCreatedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameCreatedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameCreatedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameCreatedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameCreatedEventArgs = {0x4d6e7b5e, 0x9baa, 0x11eb, {0xa8, 0xb3, 0x02, 0x42, 0xac, 0x13, 0x00, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4d6e7b5e-9baa-11eb-a8b3-0242ac130003")
+ ICoreWebView2FrameCreatedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Frame(
+ /* [retval][out] */ ICoreWebView2Frame * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameCreatedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameCreatedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameCreatedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameCreatedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameCreatedEventArgs, get_Frame)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Frame)(
+ ICoreWebView2FrameCreatedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Frame **value);
+
+ END_INTERFACE
+ } ICoreWebView2FrameCreatedEventArgsVtbl;
+
+ interface ICoreWebView2FrameCreatedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2FrameCreatedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameCreatedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameCreatedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameCreatedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameCreatedEventArgs_get_Frame(This, value) \
+ ((This)->lpVtbl->get_Frame(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameCreatedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfo_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameInfo_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameInfo */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameInfo = {0xda86b8a1, 0xbdf3, 0x4f11, {0x99, 0x55, 0x52, 0x8c, 0xef, 0xa5, 0x97, 0x27}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("da86b8a1-bdf3-4f11-9955-528cefa59727")
+ ICoreWebView2FrameInfo : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Name(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Source(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameInfo *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameInfo *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameInfo *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfo, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2FrameInfo *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfo, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2FrameInfo *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2FrameInfoVtbl;
+
+ interface ICoreWebView2FrameInfo
+ {
+ CONST_VTBL struct ICoreWebView2FrameInfoVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameInfo_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameInfo_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameInfo_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameInfo_get_Name(This, value) \
+ ((This)->lpVtbl->get_Name(This, value))
+
+#define ICoreWebView2FrameInfo_get_Source(This, value) \
+ ((This)->lpVtbl->get_Source(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfo2_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameInfo2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameInfo2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameInfo2 = {0x56f85cfa, 0x72c4, 0x11ee, {0xb9, 0x62, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("56f85cfa-72c4-11ee-b962-0242ac120002")
+ ICoreWebView2FrameInfo2 : public ICoreWebView2FrameInfo
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ParentFrameInfo(
+ /* [retval][out] */ ICoreWebView2FrameInfo * *frameInfo) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FrameId(
+ /* [retval][out] */ UINT32 * id) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FrameKind(
+ /* [retval][out] */ COREWEBVIEW2_FRAME_KIND * kind) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameInfo2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameInfo2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameInfo2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameInfo2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfo, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2FrameInfo2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfo, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2FrameInfo2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfo2, get_ParentFrameInfo)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ParentFrameInfo)(
+ ICoreWebView2FrameInfo2 *This,
+ /* [retval][out] */ ICoreWebView2FrameInfo **frameInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfo2, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2FrameInfo2 *This,
+ /* [retval][out] */ UINT32 *id);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfo2, get_FrameKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameKind)(
+ ICoreWebView2FrameInfo2 *This,
+ /* [retval][out] */ COREWEBVIEW2_FRAME_KIND *kind);
+
+ END_INTERFACE
+ } ICoreWebView2FrameInfo2Vtbl;
+
+ interface ICoreWebView2FrameInfo2
+ {
+ CONST_VTBL struct ICoreWebView2FrameInfo2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameInfo2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameInfo2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameInfo2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameInfo2_get_Name(This, value) \
+ ((This)->lpVtbl->get_Name(This, value))
+
+#define ICoreWebView2FrameInfo2_get_Source(This, value) \
+ ((This)->lpVtbl->get_Source(This, value))
+
+#define ICoreWebView2FrameInfo2_get_ParentFrameInfo(This, frameInfo) \
+ ((This)->lpVtbl->get_ParentFrameInfo(This, frameInfo))
+
+#define ICoreWebView2FrameInfo2_get_FrameId(This, id) \
+ ((This)->lpVtbl->get_FrameId(This, id))
+
+#define ICoreWebView2FrameInfo2_get_FrameKind(This, kind) \
+ ((This)->lpVtbl->get_FrameKind(This, kind))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameInfo2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfoCollection_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameInfoCollection_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameInfoCollection */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameInfoCollection = {0x8f834154, 0xd38e, 0x4d90, {0xaf, 0xfb, 0x68, 0x00, 0xa7, 0x27, 0x28, 0x39}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8f834154-d38e-4d90-affb-6800a7272839")
+ ICoreWebView2FrameInfoCollection : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetIterator(
+ /* [retval][out] */ ICoreWebView2FrameInfoCollectionIterator * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameInfoCollectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameInfoCollection *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameInfoCollection *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameInfoCollection *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfoCollection, GetIterator)
+ HRESULT(STDMETHODCALLTYPE *GetIterator)(
+ ICoreWebView2FrameInfoCollection *This,
+ /* [retval][out] */ ICoreWebView2FrameInfoCollectionIterator **value);
+
+ END_INTERFACE
+ } ICoreWebView2FrameInfoCollectionVtbl;
+
+ interface ICoreWebView2FrameInfoCollection
+ {
+ CONST_VTBL struct ICoreWebView2FrameInfoCollectionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameInfoCollection_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameInfoCollection_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameInfoCollection_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameInfoCollection_GetIterator(This, value) \
+ ((This)->lpVtbl->GetIterator(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameInfoCollection_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2FrameInfoCollectionIterator_INTERFACE_DEFINED__
+#define __ICoreWebView2FrameInfoCollectionIterator_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2FrameInfoCollectionIterator */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2FrameInfoCollectionIterator = {0x1bf89e2d, 0x1b2b, 0x4629, {0xb2, 0x8f, 0x05, 0x09, 0x9b, 0x41, 0xbb, 0x03}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1bf89e2d-1b2b-4629-b28f-05099b41bb03")
+ ICoreWebView2FrameInfoCollectionIterator : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasCurrent(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurrent(
+ /* [retval][out] */ ICoreWebView2FrameInfo * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MoveNext(
+ /* [retval][out] */ BOOL * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2FrameInfoCollectionIteratorVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2FrameInfoCollectionIterator *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2FrameInfoCollectionIterator *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2FrameInfoCollectionIterator *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfoCollectionIterator, get_HasCurrent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasCurrent)(
+ ICoreWebView2FrameInfoCollectionIterator *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfoCollectionIterator, GetCurrent)
+ HRESULT(STDMETHODCALLTYPE *GetCurrent)(
+ ICoreWebView2FrameInfoCollectionIterator *This,
+ /* [retval][out] */ ICoreWebView2FrameInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2FrameInfoCollectionIterator, MoveNext)
+ HRESULT(STDMETHODCALLTYPE *MoveNext)(
+ ICoreWebView2FrameInfoCollectionIterator *This,
+ /* [retval][out] */ BOOL *value);
+
+ END_INTERFACE
+ } ICoreWebView2FrameInfoCollectionIteratorVtbl;
+
+ interface ICoreWebView2FrameInfoCollectionIterator
+ {
+ CONST_VTBL struct ICoreWebView2FrameInfoCollectionIteratorVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2FrameInfoCollectionIterator_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2FrameInfoCollectionIterator_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2FrameInfoCollectionIterator_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2FrameInfoCollectionIterator_get_HasCurrent(This, value) \
+ ((This)->lpVtbl->get_HasCurrent(This, value))
+
+#define ICoreWebView2FrameInfoCollectionIterator_GetCurrent(This, value) \
+ ((This)->lpVtbl->GetCurrent(This, value))
+
+#define ICoreWebView2FrameInfoCollectionIterator_MoveNext(This, value) \
+ ((This)->lpVtbl->MoveNext(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2FrameInfoCollectionIterator_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2HttpHeadersCollectionIterator_INTERFACE_DEFINED__
+#define __ICoreWebView2HttpHeadersCollectionIterator_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2HttpHeadersCollectionIterator */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2HttpHeadersCollectionIterator = {0x0702fc30, 0xf43b, 0x47bb, {0xab, 0x52, 0xa4, 0x2c, 0xb5, 0x52, 0xad, 0x9f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0702fc30-f43b-47bb-ab52-a42cb552ad9f")
+ ICoreWebView2HttpHeadersCollectionIterator : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentHeader(
+ /* [out] */ LPWSTR * name,
+ /* [out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasCurrentHeader(
+ /* [retval][out] */ BOOL * hasCurrent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MoveNext(
+ /* [retval][out] */ BOOL * hasNext) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2HttpHeadersCollectionIteratorVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2HttpHeadersCollectionIterator *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2HttpHeadersCollectionIterator *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2HttpHeadersCollectionIterator *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpHeadersCollectionIterator, GetCurrentHeader)
+ HRESULT(STDMETHODCALLTYPE *GetCurrentHeader)(
+ ICoreWebView2HttpHeadersCollectionIterator *This,
+ /* [out] */ LPWSTR *name,
+ /* [out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpHeadersCollectionIterator, get_HasCurrentHeader)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasCurrentHeader)(
+ ICoreWebView2HttpHeadersCollectionIterator *This,
+ /* [retval][out] */ BOOL *hasCurrent);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpHeadersCollectionIterator, MoveNext)
+ HRESULT(STDMETHODCALLTYPE *MoveNext)(
+ ICoreWebView2HttpHeadersCollectionIterator *This,
+ /* [retval][out] */ BOOL *hasNext);
+
+ END_INTERFACE
+ } ICoreWebView2HttpHeadersCollectionIteratorVtbl;
+
+ interface ICoreWebView2HttpHeadersCollectionIterator
+ {
+ CONST_VTBL struct ICoreWebView2HttpHeadersCollectionIteratorVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2HttpHeadersCollectionIterator_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2HttpHeadersCollectionIterator_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2HttpHeadersCollectionIterator_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2HttpHeadersCollectionIterator_GetCurrentHeader(This, name, value) \
+ ((This)->lpVtbl->GetCurrentHeader(This, name, value))
+
+#define ICoreWebView2HttpHeadersCollectionIterator_get_HasCurrentHeader(This, hasCurrent) \
+ ((This)->lpVtbl->get_HasCurrentHeader(This, hasCurrent))
+
+#define ICoreWebView2HttpHeadersCollectionIterator_MoveNext(This, hasNext) \
+ ((This)->lpVtbl->MoveNext(This, hasNext))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2HttpHeadersCollectionIterator_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2HttpRequestHeaders_INTERFACE_DEFINED__
+#define __ICoreWebView2HttpRequestHeaders_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2HttpRequestHeaders */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2HttpRequestHeaders = {0xe86cac0e, 0x5523, 0x465c, {0xb5, 0x36, 0x8f, 0xb9, 0xfc, 0x8c, 0x8c, 0x60}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e86cac0e-5523-465c-b536-8fb9fc8c8c60")
+ ICoreWebView2HttpRequestHeaders : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetHeader(
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHeaders(
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Contains(
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHeader(
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveHeader(
+ /* [in] */ LPCWSTR name) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIterator(
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2HttpRequestHeadersVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2HttpRequestHeaders *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2HttpRequestHeaders *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2HttpRequestHeaders *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpRequestHeaders, GetHeader)
+ HRESULT(STDMETHODCALLTYPE *GetHeader)(
+ ICoreWebView2HttpRequestHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpRequestHeaders, GetHeaders)
+ HRESULT(STDMETHODCALLTYPE *GetHeaders)(
+ ICoreWebView2HttpRequestHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpRequestHeaders, Contains)
+ HRESULT(STDMETHODCALLTYPE *Contains)(
+ ICoreWebView2HttpRequestHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpRequestHeaders, SetHeader)
+ HRESULT(STDMETHODCALLTYPE *SetHeader)(
+ ICoreWebView2HttpRequestHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpRequestHeaders, RemoveHeader)
+ HRESULT(STDMETHODCALLTYPE *RemoveHeader)(
+ ICoreWebView2HttpRequestHeaders *This,
+ /* [in] */ LPCWSTR name);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpRequestHeaders, GetIterator)
+ HRESULT(STDMETHODCALLTYPE *GetIterator)(
+ ICoreWebView2HttpRequestHeaders *This,
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator **value);
+
+ END_INTERFACE
+ } ICoreWebView2HttpRequestHeadersVtbl;
+
+ interface ICoreWebView2HttpRequestHeaders
+ {
+ CONST_VTBL struct ICoreWebView2HttpRequestHeadersVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2HttpRequestHeaders_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2HttpRequestHeaders_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2HttpRequestHeaders_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2HttpRequestHeaders_GetHeader(This, name, value) \
+ ((This)->lpVtbl->GetHeader(This, name, value))
+
+#define ICoreWebView2HttpRequestHeaders_GetHeaders(This, name, value) \
+ ((This)->lpVtbl->GetHeaders(This, name, value))
+
+#define ICoreWebView2HttpRequestHeaders_Contains(This, name, value) \
+ ((This)->lpVtbl->Contains(This, name, value))
+
+#define ICoreWebView2HttpRequestHeaders_SetHeader(This, name, value) \
+ ((This)->lpVtbl->SetHeader(This, name, value))
+
+#define ICoreWebView2HttpRequestHeaders_RemoveHeader(This, name) \
+ ((This)->lpVtbl->RemoveHeader(This, name))
+
+#define ICoreWebView2HttpRequestHeaders_GetIterator(This, value) \
+ ((This)->lpVtbl->GetIterator(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2HttpRequestHeaders_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2HttpResponseHeaders_INTERFACE_DEFINED__
+#define __ICoreWebView2HttpResponseHeaders_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2HttpResponseHeaders */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2HttpResponseHeaders = {0x03c5ff5a, 0x9b45, 0x4a88, {0x88, 0x1c, 0x89, 0xa9, 0xf3, 0x28, 0x61, 0x9c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("03c5ff5a-9b45-4a88-881c-89a9f328619c")
+ ICoreWebView2HttpResponseHeaders : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AppendHeader(
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Contains(
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHeader(
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHeaders(
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIterator(
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2HttpResponseHeadersVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2HttpResponseHeaders *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2HttpResponseHeaders *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2HttpResponseHeaders *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpResponseHeaders, AppendHeader)
+ HRESULT(STDMETHODCALLTYPE *AppendHeader)(
+ ICoreWebView2HttpResponseHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpResponseHeaders, Contains)
+ HRESULT(STDMETHODCALLTYPE *Contains)(
+ ICoreWebView2HttpResponseHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpResponseHeaders, GetHeader)
+ HRESULT(STDMETHODCALLTYPE *GetHeader)(
+ ICoreWebView2HttpResponseHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpResponseHeaders, GetHeaders)
+ HRESULT(STDMETHODCALLTYPE *GetHeaders)(
+ ICoreWebView2HttpResponseHeaders *This,
+ /* [in] */ LPCWSTR name,
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2HttpResponseHeaders, GetIterator)
+ HRESULT(STDMETHODCALLTYPE *GetIterator)(
+ ICoreWebView2HttpResponseHeaders *This,
+ /* [retval][out] */ ICoreWebView2HttpHeadersCollectionIterator **value);
+
+ END_INTERFACE
+ } ICoreWebView2HttpResponseHeadersVtbl;
+
+ interface ICoreWebView2HttpResponseHeaders
+ {
+ CONST_VTBL struct ICoreWebView2HttpResponseHeadersVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2HttpResponseHeaders_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2HttpResponseHeaders_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2HttpResponseHeaders_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2HttpResponseHeaders_AppendHeader(This, name, value) \
+ ((This)->lpVtbl->AppendHeader(This, name, value))
+
+#define ICoreWebView2HttpResponseHeaders_Contains(This, name, value) \
+ ((This)->lpVtbl->Contains(This, name, value))
+
+#define ICoreWebView2HttpResponseHeaders_GetHeader(This, name, value) \
+ ((This)->lpVtbl->GetHeader(This, name, value))
+
+#define ICoreWebView2HttpResponseHeaders_GetHeaders(This, name, value) \
+ ((This)->lpVtbl->GetHeaders(This, name, value))
+
+#define ICoreWebView2HttpResponseHeaders_GetIterator(This, value) \
+ ((This)->lpVtbl->GetIterator(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2HttpResponseHeaders_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2LaunchingExternalUriSchemeEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2LaunchingExternalUriSchemeEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2LaunchingExternalUriSchemeEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2LaunchingExternalUriSchemeEventArgs = {0x07D1A6C3, 0x7175, 0x4BA1, {0x93, 0x06, 0xE5, 0x93, 0xCA, 0x07, 0xE4, 0x6C}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("07D1A6C3-7175-4BA1-9306-E593CA07E46C")
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_InitiatingOrigin(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsUserInitiated(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cancel(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Cancel(
+ /* [in] */ BOOL value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2LaunchingExternalUriSchemeEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2LaunchingExternalUriSchemeEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2LaunchingExternalUriSchemeEventArgs, get_InitiatingOrigin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_InitiatingOrigin)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2LaunchingExternalUriSchemeEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2LaunchingExternalUriSchemeEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2LaunchingExternalUriSchemeEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2LaunchingExternalUriSchemeEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **value);
+
+ END_INTERFACE
+ } ICoreWebView2LaunchingExternalUriSchemeEventArgsVtbl;
+
+ interface ICoreWebView2LaunchingExternalUriSchemeEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2LaunchingExternalUriSchemeEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_get_Uri(This, value) \
+ ((This)->lpVtbl->get_Uri(This, value))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_get_InitiatingOrigin(This, value) \
+ ((This)->lpVtbl->get_InitiatingOrigin(This, value))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_get_IsUserInitiated(This, value) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, value))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_get_Cancel(This, value) \
+ ((This)->lpVtbl->get_Cancel(This, value))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_put_Cancel(This, value) \
+ ((This)->lpVtbl->put_Cancel(This, value))
+
+#define ICoreWebView2LaunchingExternalUriSchemeEventArgs_GetDeferral(This, value) \
+ ((This)->lpVtbl->GetDeferral(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2LaunchingExternalUriSchemeEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2MoveFocusRequestedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2MoveFocusRequestedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2MoveFocusRequestedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2MoveFocusRequestedEventArgs = {0x2d6aa13b, 0x3839, 0x4a15, {0x92, 0xfc, 0xd8, 0x8b, 0x3c, 0x0d, 0x9c, 0x9d}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2d6aa13b-3839-4a15-92fc-d88b3c0d9c9d")
+ ICoreWebView2MoveFocusRequestedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Reason(
+ /* [retval][out] */ COREWEBVIEW2_MOVE_FOCUS_REASON * reason) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2MoveFocusRequestedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2MoveFocusRequestedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2MoveFocusRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2MoveFocusRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2MoveFocusRequestedEventArgs, get_Reason)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Reason)(
+ ICoreWebView2MoveFocusRequestedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_MOVE_FOCUS_REASON *reason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2MoveFocusRequestedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2MoveFocusRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2MoveFocusRequestedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2MoveFocusRequestedEventArgs *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2MoveFocusRequestedEventArgsVtbl;
+
+ interface ICoreWebView2MoveFocusRequestedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2MoveFocusRequestedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2MoveFocusRequestedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2MoveFocusRequestedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2MoveFocusRequestedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2MoveFocusRequestedEventArgs_get_Reason(This, reason) \
+ ((This)->lpVtbl->get_Reason(This, reason))
+
+#define ICoreWebView2MoveFocusRequestedEventArgs_get_Handled(This, value) \
+ ((This)->lpVtbl->get_Handled(This, value))
+
+#define ICoreWebView2MoveFocusRequestedEventArgs_put_Handled(This, value) \
+ ((This)->lpVtbl->put_Handled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2MoveFocusRequestedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationCompletedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2NavigationCompletedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NavigationCompletedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NavigationCompletedEventArgs = {0x30d68b7d, 0x20d9, 0x4752, {0xa9, 0xca, 0xec, 0x84, 0x48, 0xfb, 0xb5, 0xc1}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("30d68b7d-20d9-4752-a9ca-ec8448fbb5c1")
+ ICoreWebView2NavigationCompletedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsSuccess(
+ /* [retval][out] */ BOOL * isSuccess) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_WebErrorStatus(
+ /* [retval][out] */ COREWEBVIEW2_WEB_ERROR_STATUS * webErrorStatus) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_NavigationId(
+ /* [retval][out] */ UINT64 * navigationId) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NavigationCompletedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NavigationCompletedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NavigationCompletedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NavigationCompletedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventArgs, get_IsSuccess)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuccess)(
+ ICoreWebView2NavigationCompletedEventArgs *This,
+ /* [retval][out] */ BOOL *isSuccess);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventArgs, get_WebErrorStatus)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_WebErrorStatus)(
+ ICoreWebView2NavigationCompletedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_WEB_ERROR_STATUS *webErrorStatus);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventArgs, get_NavigationId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationId)(
+ ICoreWebView2NavigationCompletedEventArgs *This,
+ /* [retval][out] */ UINT64 *navigationId);
+
+ END_INTERFACE
+ } ICoreWebView2NavigationCompletedEventArgsVtbl;
+
+ interface ICoreWebView2NavigationCompletedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2NavigationCompletedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NavigationCompletedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NavigationCompletedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NavigationCompletedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NavigationCompletedEventArgs_get_IsSuccess(This, isSuccess) \
+ ((This)->lpVtbl->get_IsSuccess(This, isSuccess))
+
+#define ICoreWebView2NavigationCompletedEventArgs_get_WebErrorStatus(This, webErrorStatus) \
+ ((This)->lpVtbl->get_WebErrorStatus(This, webErrorStatus))
+
+#define ICoreWebView2NavigationCompletedEventArgs_get_NavigationId(This, navigationId) \
+ ((This)->lpVtbl->get_NavigationId(This, navigationId))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NavigationCompletedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationCompletedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2NavigationCompletedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NavigationCompletedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NavigationCompletedEventArgs2 = {0xfdf8b738, 0xee1e, 0x4db2, {0xa3, 0x29, 0x8d, 0x7d, 0x7b, 0x74, 0xd7, 0x92}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fdf8b738-ee1e-4db2-a329-8d7d7b74d792")
+ ICoreWebView2NavigationCompletedEventArgs2 : public ICoreWebView2NavigationCompletedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HttpStatusCode(
+ /* [retval][out] */ int *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NavigationCompletedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NavigationCompletedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NavigationCompletedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NavigationCompletedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventArgs, get_IsSuccess)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSuccess)(
+ ICoreWebView2NavigationCompletedEventArgs2 *This,
+ /* [retval][out] */ BOOL *isSuccess);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventArgs, get_WebErrorStatus)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_WebErrorStatus)(
+ ICoreWebView2NavigationCompletedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_WEB_ERROR_STATUS *webErrorStatus);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventArgs, get_NavigationId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationId)(
+ ICoreWebView2NavigationCompletedEventArgs2 *This,
+ /* [retval][out] */ UINT64 *navigationId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationCompletedEventArgs2, get_HttpStatusCode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HttpStatusCode)(
+ ICoreWebView2NavigationCompletedEventArgs2 *This,
+ /* [retval][out] */ int *value);
+
+ END_INTERFACE
+ } ICoreWebView2NavigationCompletedEventArgs2Vtbl;
+
+ interface ICoreWebView2NavigationCompletedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2NavigationCompletedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NavigationCompletedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NavigationCompletedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NavigationCompletedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NavigationCompletedEventArgs2_get_IsSuccess(This, isSuccess) \
+ ((This)->lpVtbl->get_IsSuccess(This, isSuccess))
+
+#define ICoreWebView2NavigationCompletedEventArgs2_get_WebErrorStatus(This, webErrorStatus) \
+ ((This)->lpVtbl->get_WebErrorStatus(This, webErrorStatus))
+
+#define ICoreWebView2NavigationCompletedEventArgs2_get_NavigationId(This, navigationId) \
+ ((This)->lpVtbl->get_NavigationId(This, navigationId))
+
+#define ICoreWebView2NavigationCompletedEventArgs2_get_HttpStatusCode(This, value) \
+ ((This)->lpVtbl->get_HttpStatusCode(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NavigationCompletedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2NavigationStartingEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NavigationStartingEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NavigationStartingEventArgs = {0x5b495469, 0xe119, 0x438a, {0x9b, 0x18, 0x76, 0x04, 0xf2, 0x5f, 0x2e, 0x49}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5b495469-e119-438a-9b18-7604f25f2e49")
+ ICoreWebView2NavigationStartingEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * uri) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsUserInitiated(
+ /* [retval][out] */ BOOL * isUserInitiated) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsRedirected(
+ /* [retval][out] */ BOOL * isRedirected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_RequestHeaders(
+ /* [retval][out] */ ICoreWebView2HttpRequestHeaders * *requestHeaders) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cancel(
+ /* [retval][out] */ BOOL * cancel) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Cancel(
+ /* [in] */ BOOL cancel) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_NavigationId(
+ /* [retval][out] */ UINT64 * navigationId) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NavigationStartingEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NavigationStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NavigationStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_IsRedirected)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsRedirected)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [retval][out] */ BOOL *isRedirected);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_RequestHeaders)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RequestHeaders)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [retval][out] */ ICoreWebView2HttpRequestHeaders **requestHeaders);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [retval][out] */ BOOL *cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [in] */ BOOL cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_NavigationId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationId)(
+ ICoreWebView2NavigationStartingEventArgs *This,
+ /* [retval][out] */ UINT64 *navigationId);
+
+ END_INTERFACE
+ } ICoreWebView2NavigationStartingEventArgsVtbl;
+
+ interface ICoreWebView2NavigationStartingEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2NavigationStartingEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NavigationStartingEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NavigationStartingEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NavigationStartingEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NavigationStartingEventArgs_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2NavigationStartingEventArgs_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2NavigationStartingEventArgs_get_IsRedirected(This, isRedirected) \
+ ((This)->lpVtbl->get_IsRedirected(This, isRedirected))
+
+#define ICoreWebView2NavigationStartingEventArgs_get_RequestHeaders(This, requestHeaders) \
+ ((This)->lpVtbl->get_RequestHeaders(This, requestHeaders))
+
+#define ICoreWebView2NavigationStartingEventArgs_get_Cancel(This, cancel) \
+ ((This)->lpVtbl->get_Cancel(This, cancel))
+
+#define ICoreWebView2NavigationStartingEventArgs_put_Cancel(This, cancel) \
+ ((This)->lpVtbl->put_Cancel(This, cancel))
+
+#define ICoreWebView2NavigationStartingEventArgs_get_NavigationId(This, navigationId) \
+ ((This)->lpVtbl->get_NavigationId(This, navigationId))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NavigationStartingEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2NavigationStartingEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NavigationStartingEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NavigationStartingEventArgs2 = {0x9086be93, 0x91aa, 0x472d, {0xa7, 0xe0, 0x57, 0x9f, 0x2b, 0xa0, 0x06, 0xad}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9086be93-91aa-472d-a7e0-579f2ba006ad")
+ ICoreWebView2NavigationStartingEventArgs2 : public ICoreWebView2NavigationStartingEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AdditionalAllowedFrameAncestors(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AdditionalAllowedFrameAncestors(
+ /* [in] */ LPCWSTR value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NavigationStartingEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NavigationStartingEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NavigationStartingEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_IsRedirected)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsRedirected)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [retval][out] */ BOOL *isRedirected);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_RequestHeaders)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RequestHeaders)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2HttpRequestHeaders **requestHeaders);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [retval][out] */ BOOL *cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [in] */ BOOL cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_NavigationId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationId)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [retval][out] */ UINT64 *navigationId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs2, get_AdditionalAllowedFrameAncestors)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AdditionalAllowedFrameAncestors)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs2, put_AdditionalAllowedFrameAncestors)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AdditionalAllowedFrameAncestors)(
+ ICoreWebView2NavigationStartingEventArgs2 *This,
+ /* [in] */ LPCWSTR value);
+
+ END_INTERFACE
+ } ICoreWebView2NavigationStartingEventArgs2Vtbl;
+
+ interface ICoreWebView2NavigationStartingEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2NavigationStartingEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NavigationStartingEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NavigationStartingEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NavigationStartingEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NavigationStartingEventArgs2_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2NavigationStartingEventArgs2_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2NavigationStartingEventArgs2_get_IsRedirected(This, isRedirected) \
+ ((This)->lpVtbl->get_IsRedirected(This, isRedirected))
+
+#define ICoreWebView2NavigationStartingEventArgs2_get_RequestHeaders(This, requestHeaders) \
+ ((This)->lpVtbl->get_RequestHeaders(This, requestHeaders))
+
+#define ICoreWebView2NavigationStartingEventArgs2_get_Cancel(This, cancel) \
+ ((This)->lpVtbl->get_Cancel(This, cancel))
+
+#define ICoreWebView2NavigationStartingEventArgs2_put_Cancel(This, cancel) \
+ ((This)->lpVtbl->put_Cancel(This, cancel))
+
+#define ICoreWebView2NavigationStartingEventArgs2_get_NavigationId(This, navigationId) \
+ ((This)->lpVtbl->get_NavigationId(This, navigationId))
+
+#define ICoreWebView2NavigationStartingEventArgs2_get_AdditionalAllowedFrameAncestors(This, value) \
+ ((This)->lpVtbl->get_AdditionalAllowedFrameAncestors(This, value))
+
+#define ICoreWebView2NavigationStartingEventArgs2_put_AdditionalAllowedFrameAncestors(This, value) \
+ ((This)->lpVtbl->put_AdditionalAllowedFrameAncestors(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NavigationStartingEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NavigationStartingEventArgs3_INTERFACE_DEFINED__
+#define __ICoreWebView2NavigationStartingEventArgs3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NavigationStartingEventArgs3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NavigationStartingEventArgs3 = {0xddffe494, 0x4942, 0x4bd2, {0xab, 0x73, 0x35, 0xb8, 0xff, 0x40, 0xe1, 0x9f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ddffe494-4942-4bd2-ab73-35b8ff40e19f")
+ ICoreWebView2NavigationStartingEventArgs3 : public ICoreWebView2NavigationStartingEventArgs2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_NavigationKind(
+ /* [retval][out] */ COREWEBVIEW2_NAVIGATION_KIND * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NavigationStartingEventArgs3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NavigationStartingEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NavigationStartingEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_IsRedirected)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsRedirected)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ BOOL *isRedirected);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_RequestHeaders)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RequestHeaders)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ ICoreWebView2HttpRequestHeaders **requestHeaders);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ BOOL *cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [in] */ BOOL cancel);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs, get_NavigationId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationId)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ UINT64 *navigationId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs2, get_AdditionalAllowedFrameAncestors)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AdditionalAllowedFrameAncestors)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs2, put_AdditionalAllowedFrameAncestors)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AdditionalAllowedFrameAncestors)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NavigationStartingEventArgs3, get_NavigationKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NavigationKind)(
+ ICoreWebView2NavigationStartingEventArgs3 *This,
+ /* [retval][out] */ COREWEBVIEW2_NAVIGATION_KIND *value);
+
+ END_INTERFACE
+ } ICoreWebView2NavigationStartingEventArgs3Vtbl;
+
+ interface ICoreWebView2NavigationStartingEventArgs3
+ {
+ CONST_VTBL struct ICoreWebView2NavigationStartingEventArgs3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NavigationStartingEventArgs3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NavigationStartingEventArgs3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NavigationStartingEventArgs3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_IsRedirected(This, isRedirected) \
+ ((This)->lpVtbl->get_IsRedirected(This, isRedirected))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_RequestHeaders(This, requestHeaders) \
+ ((This)->lpVtbl->get_RequestHeaders(This, requestHeaders))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_Cancel(This, cancel) \
+ ((This)->lpVtbl->get_Cancel(This, cancel))
+
+#define ICoreWebView2NavigationStartingEventArgs3_put_Cancel(This, cancel) \
+ ((This)->lpVtbl->put_Cancel(This, cancel))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_NavigationId(This, navigationId) \
+ ((This)->lpVtbl->get_NavigationId(This, navigationId))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_AdditionalAllowedFrameAncestors(This, value) \
+ ((This)->lpVtbl->get_AdditionalAllowedFrameAncestors(This, value))
+
+#define ICoreWebView2NavigationStartingEventArgs3_put_AdditionalAllowedFrameAncestors(This, value) \
+ ((This)->lpVtbl->put_AdditionalAllowedFrameAncestors(This, value))
+
+#define ICoreWebView2NavigationStartingEventArgs3_get_NavigationKind(This, value) \
+ ((This)->lpVtbl->get_NavigationKind(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NavigationStartingEventArgs3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NewWindowRequestedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NewWindowRequestedEventArgs = {0x34acb11c, 0xfc37, 0x4418, {0x91, 0x32, 0xf9, 0xc2, 0x1d, 0x1e, 0xaf, 0xb9}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("34acb11c-fc37-4418-9132-f9c21d1eafb9")
+ ICoreWebView2NewWindowRequestedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * uri) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_NewWindow(
+ /* [in] */ ICoreWebView2 * newWindow) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_NewWindow(
+ /* [retval][out] */ ICoreWebView2 * *newWindow) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL handled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * handled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsUserInitiated(
+ /* [retval][out] */ BOOL * isUserInitiated) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_WindowFeatures(
+ /* [retval][out] */ ICoreWebView2WindowFeatures * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NewWindowRequestedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NewWindowRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NewWindowRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, put_NewWindow)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_NewWindow)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [in] */ ICoreWebView2 *newWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_NewWindow)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NewWindow)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2 **newWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [in] */ BOOL handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_WindowFeatures)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_WindowFeatures)(
+ ICoreWebView2NewWindowRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2WindowFeatures **value);
+
+ END_INTERFACE
+ } ICoreWebView2NewWindowRequestedEventArgsVtbl;
+
+ interface ICoreWebView2NewWindowRequestedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2NewWindowRequestedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NewWindowRequestedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_put_NewWindow(This, newWindow) \
+ ((This)->lpVtbl->put_NewWindow(This, newWindow))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_get_NewWindow(This, newWindow) \
+ ((This)->lpVtbl->get_NewWindow(This, newWindow))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_put_Handled(This, handled) \
+ ((This)->lpVtbl->put_Handled(This, handled))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_get_Handled(This, handled) \
+ ((This)->lpVtbl->get_Handled(This, handled))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#define ICoreWebView2NewWindowRequestedEventArgs_get_WindowFeatures(This, value) \
+ ((This)->lpVtbl->get_WindowFeatures(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NewWindowRequestedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NewWindowRequestedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NewWindowRequestedEventArgs2 = {0xbbc7baed, 0x74c6, 0x4c92, {0xb6, 0x3a, 0x7f, 0x5a, 0xea, 0xe0, 0x3d, 0xe3}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bbc7baed-74c6-4c92-b63a-7f5aeae03de3")
+ ICoreWebView2NewWindowRequestedEventArgs2 : public ICoreWebView2NewWindowRequestedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Name(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NewWindowRequestedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, put_NewWindow)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_NewWindow)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [in] */ ICoreWebView2 *newWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_NewWindow)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NewWindow)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2 **newWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [in] */ BOOL handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [retval][out] */ BOOL *handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_WindowFeatures)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_WindowFeatures)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2WindowFeatures **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs2, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2NewWindowRequestedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2NewWindowRequestedEventArgs2Vtbl;
+
+ interface ICoreWebView2NewWindowRequestedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2NewWindowRequestedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_put_NewWindow(This, newWindow) \
+ ((This)->lpVtbl->put_NewWindow(This, newWindow))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_get_NewWindow(This, newWindow) \
+ ((This)->lpVtbl->get_NewWindow(This, newWindow))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_put_Handled(This, handled) \
+ ((This)->lpVtbl->put_Handled(This, handled))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_get_Handled(This, handled) \
+ ((This)->lpVtbl->get_Handled(This, handled))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_get_WindowFeatures(This, value) \
+ ((This)->lpVtbl->get_WindowFeatures(This, value))
+
+#define ICoreWebView2NewWindowRequestedEventArgs2_get_Name(This, value) \
+ ((This)->lpVtbl->get_Name(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NewWindowRequestedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NewWindowRequestedEventArgs3_INTERFACE_DEFINED__
+#define __ICoreWebView2NewWindowRequestedEventArgs3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NewWindowRequestedEventArgs3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NewWindowRequestedEventArgs3 = {0x842bed3c, 0x6ad6, 0x4dd9, {0xb9, 0x38, 0x28, 0xc9, 0x66, 0x67, 0xad, 0x66}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("842bed3c-6ad6-4dd9-b938-28c96667ad66")
+ ICoreWebView2NewWindowRequestedEventArgs3 : public ICoreWebView2NewWindowRequestedEventArgs2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_OriginalSourceFrameInfo(
+ /* [retval][out] */ ICoreWebView2FrameInfo * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NewWindowRequestedEventArgs3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, put_NewWindow)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_NewWindow)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [in] */ ICoreWebView2 *newWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_NewWindow)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_NewWindow)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ ICoreWebView2 **newWindow);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [in] */ BOOL handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ BOOL *handled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs, get_WindowFeatures)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_WindowFeatures)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ ICoreWebView2WindowFeatures **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs2, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NewWindowRequestedEventArgs3, get_OriginalSourceFrameInfo)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_OriginalSourceFrameInfo)(
+ ICoreWebView2NewWindowRequestedEventArgs3 *This,
+ /* [retval][out] */ ICoreWebView2FrameInfo **value);
+
+ END_INTERFACE
+ } ICoreWebView2NewWindowRequestedEventArgs3Vtbl;
+
+ interface ICoreWebView2NewWindowRequestedEventArgs3
+ {
+ CONST_VTBL struct ICoreWebView2NewWindowRequestedEventArgs3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_put_NewWindow(This, newWindow) \
+ ((This)->lpVtbl->put_NewWindow(This, newWindow))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_get_NewWindow(This, newWindow) \
+ ((This)->lpVtbl->get_NewWindow(This, newWindow))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_put_Handled(This, handled) \
+ ((This)->lpVtbl->put_Handled(This, handled))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_get_Handled(This, handled) \
+ ((This)->lpVtbl->get_Handled(This, handled))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_get_WindowFeatures(This, value) \
+ ((This)->lpVtbl->get_WindowFeatures(This, value))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_get_Name(This, value) \
+ ((This)->lpVtbl->get_Name(This, value))
+
+#define ICoreWebView2NewWindowRequestedEventArgs3_get_OriginalSourceFrameInfo(This, value) \
+ ((This)->lpVtbl->get_OriginalSourceFrameInfo(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NewWindowRequestedEventArgs3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NonClientRegionChangedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2NonClientRegionChangedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NonClientRegionChangedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NonClientRegionChangedEventArgs = {0xab71d500, 0x0820, 0x4a52, {0x80, 0x9c, 0x48, 0xdb, 0x04, 0xff, 0x93, 0xbf}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ab71d500-0820-4a52-809c-48db04ff93bf")
+ ICoreWebView2NonClientRegionChangedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_RegionKind(
+ /* [retval][out] */ COREWEBVIEW2_NON_CLIENT_REGION_KIND * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NonClientRegionChangedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NonClientRegionChangedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NonClientRegionChangedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NonClientRegionChangedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NonClientRegionChangedEventArgs, get_RegionKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RegionKind)(
+ ICoreWebView2NonClientRegionChangedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_NON_CLIENT_REGION_KIND *value);
+
+ END_INTERFACE
+ } ICoreWebView2NonClientRegionChangedEventArgsVtbl;
+
+ interface ICoreWebView2NonClientRegionChangedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2NonClientRegionChangedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NonClientRegionChangedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NonClientRegionChangedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NonClientRegionChangedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NonClientRegionChangedEventArgs_get_RegionKind(This, value) \
+ ((This)->lpVtbl->get_RegionKind(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NonClientRegionChangedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Notification_INTERFACE_DEFINED__
+#define __ICoreWebView2Notification_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Notification */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Notification = {0xB7434D98, 0x6BC8, 0x419D, {0x9D, 0xA5, 0xFB, 0x5A, 0x96, 0xD4, 0xDA, 0xCD}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B7434D98-6BC8-419D-9DA5-FB5A96D4DACD")
+ ICoreWebView2Notification : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE add_CloseRequested(
+ /* [in] */ ICoreWebView2NotificationCloseRequestedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_CloseRequested(
+ /* [in] */ EventRegistrationToken token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReportShown(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReportClicked(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReportClosed(void) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Body(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Direction(
+ /* [retval][out] */ COREWEBVIEW2_TEXT_DIRECTION_KIND * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Language(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Tag(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IconUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Title(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BadgeUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_BodyImageUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldRenotify(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_RequiresInteraction(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsSilent(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Timestamp(
+ /* [retval][out] */ double *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVibrationPattern(
+ /* [out] */ UINT32 * count,
+ /* [out] */ UINT64 * *vibrationPattern) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NotificationVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Notification *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Notification *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Notification *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, add_CloseRequested)
+ HRESULT(STDMETHODCALLTYPE *add_CloseRequested)(
+ ICoreWebView2Notification *This,
+ /* [in] */ ICoreWebView2NotificationCloseRequestedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, remove_CloseRequested)
+ HRESULT(STDMETHODCALLTYPE *remove_CloseRequested)(
+ ICoreWebView2Notification *This,
+ /* [in] */ EventRegistrationToken token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, ReportShown)
+ HRESULT(STDMETHODCALLTYPE *ReportShown)(
+ ICoreWebView2Notification *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, ReportClicked)
+ HRESULT(STDMETHODCALLTYPE *ReportClicked)(
+ ICoreWebView2Notification *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, ReportClosed)
+ HRESULT(STDMETHODCALLTYPE *ReportClosed)(
+ ICoreWebView2Notification *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_Body)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Body)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_Direction)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Direction)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ COREWEBVIEW2_TEXT_DIRECTION_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_Language)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Language)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_Tag)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Tag)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_IconUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IconUri)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_Title)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Title)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_BadgeUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BadgeUri)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_BodyImageUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_BodyImageUri)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_ShouldRenotify)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldRenotify)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_RequiresInteraction)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RequiresInteraction)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_IsSilent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSilent)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, get_Timestamp)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Timestamp)(
+ ICoreWebView2Notification *This,
+ /* [retval][out] */ double *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Notification, GetVibrationPattern)
+ HRESULT(STDMETHODCALLTYPE *GetVibrationPattern)(
+ ICoreWebView2Notification *This,
+ /* [out] */ UINT32 *count,
+ /* [out] */ UINT64 **vibrationPattern);
+
+ END_INTERFACE
+ } ICoreWebView2NotificationVtbl;
+
+ interface ICoreWebView2Notification
+ {
+ CONST_VTBL struct ICoreWebView2NotificationVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Notification_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Notification_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Notification_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Notification_add_CloseRequested(This, eventHandler, token) \
+ ((This)->lpVtbl->add_CloseRequested(This, eventHandler, token))
+
+#define ICoreWebView2Notification_remove_CloseRequested(This, token) \
+ ((This)->lpVtbl->remove_CloseRequested(This, token))
+
+#define ICoreWebView2Notification_ReportShown(This) \
+ ((This)->lpVtbl->ReportShown(This))
+
+#define ICoreWebView2Notification_ReportClicked(This) \
+ ((This)->lpVtbl->ReportClicked(This))
+
+#define ICoreWebView2Notification_ReportClosed(This) \
+ ((This)->lpVtbl->ReportClosed(This))
+
+#define ICoreWebView2Notification_get_Body(This, value) \
+ ((This)->lpVtbl->get_Body(This, value))
+
+#define ICoreWebView2Notification_get_Direction(This, value) \
+ ((This)->lpVtbl->get_Direction(This, value))
+
+#define ICoreWebView2Notification_get_Language(This, value) \
+ ((This)->lpVtbl->get_Language(This, value))
+
+#define ICoreWebView2Notification_get_Tag(This, value) \
+ ((This)->lpVtbl->get_Tag(This, value))
+
+#define ICoreWebView2Notification_get_IconUri(This, value) \
+ ((This)->lpVtbl->get_IconUri(This, value))
+
+#define ICoreWebView2Notification_get_Title(This, value) \
+ ((This)->lpVtbl->get_Title(This, value))
+
+#define ICoreWebView2Notification_get_BadgeUri(This, value) \
+ ((This)->lpVtbl->get_BadgeUri(This, value))
+
+#define ICoreWebView2Notification_get_BodyImageUri(This, value) \
+ ((This)->lpVtbl->get_BodyImageUri(This, value))
+
+#define ICoreWebView2Notification_get_ShouldRenotify(This, value) \
+ ((This)->lpVtbl->get_ShouldRenotify(This, value))
+
+#define ICoreWebView2Notification_get_RequiresInteraction(This, value) \
+ ((This)->lpVtbl->get_RequiresInteraction(This, value))
+
+#define ICoreWebView2Notification_get_IsSilent(This, value) \
+ ((This)->lpVtbl->get_IsSilent(This, value))
+
+#define ICoreWebView2Notification_get_Timestamp(This, value) \
+ ((This)->lpVtbl->get_Timestamp(This, value))
+
+#define ICoreWebView2Notification_GetVibrationPattern(This, count, vibrationPattern) \
+ ((This)->lpVtbl->GetVibrationPattern(This, count, vibrationPattern))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Notification_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NotificationCloseRequestedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2NotificationCloseRequestedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NotificationCloseRequestedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NotificationCloseRequestedEventHandler = {0x47c32d23, 0x1e94, 0x4733, {0x85, 0xf1, 0xd9, 0xbf, 0x4a, 0xcd, 0x09, 0x74}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("47c32d23-1e94-4733-85f1-d9bf4acd0974")
+ ICoreWebView2NotificationCloseRequestedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Notification * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NotificationCloseRequestedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NotificationCloseRequestedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NotificationCloseRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NotificationCloseRequestedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NotificationCloseRequestedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2NotificationCloseRequestedEventHandler *This,
+ /* [in] */ ICoreWebView2Notification *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2NotificationCloseRequestedEventHandlerVtbl;
+
+ interface ICoreWebView2NotificationCloseRequestedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2NotificationCloseRequestedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NotificationCloseRequestedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NotificationCloseRequestedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NotificationCloseRequestedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NotificationCloseRequestedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NotificationCloseRequestedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2NotificationReceivedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2NotificationReceivedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2NotificationReceivedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2NotificationReceivedEventArgs = {0x1512DD5B, 0x5514, 0x4F85, {0x88, 0x6E, 0x21, 0xC3, 0xA4, 0xC9, 0xCF, 0xE6}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1512DD5B-5514-4F85-886E-21C3A4C9CFE6")
+ ICoreWebView2NotificationReceivedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SenderOrigin(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Notification(
+ /* [retval][out] */ ICoreWebView2Notification * *value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2NotificationReceivedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2NotificationReceivedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2NotificationReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2NotificationReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NotificationReceivedEventArgs, get_SenderOrigin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SenderOrigin)(
+ ICoreWebView2NotificationReceivedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NotificationReceivedEventArgs, get_Notification)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Notification)(
+ ICoreWebView2NotificationReceivedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Notification **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NotificationReceivedEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2NotificationReceivedEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NotificationReceivedEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2NotificationReceivedEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2NotificationReceivedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2NotificationReceivedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2NotificationReceivedEventArgsVtbl;
+
+ interface ICoreWebView2NotificationReceivedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2NotificationReceivedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2NotificationReceivedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2NotificationReceivedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2NotificationReceivedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2NotificationReceivedEventArgs_get_SenderOrigin(This, value) \
+ ((This)->lpVtbl->get_SenderOrigin(This, value))
+
+#define ICoreWebView2NotificationReceivedEventArgs_get_Notification(This, value) \
+ ((This)->lpVtbl->get_Notification(This, value))
+
+#define ICoreWebView2NotificationReceivedEventArgs_put_Handled(This, value) \
+ ((This)->lpVtbl->put_Handled(This, value))
+
+#define ICoreWebView2NotificationReceivedEventArgs_get_Handled(This, value) \
+ ((This)->lpVtbl->get_Handled(This, value))
+
+#define ICoreWebView2NotificationReceivedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2NotificationReceivedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ObjectCollectionView_INTERFACE_DEFINED__
+#define __ICoreWebView2ObjectCollectionView_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ObjectCollectionView */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ObjectCollectionView = {0x0f36fd87, 0x4f69, 0x4415, {0x98, 0xda, 0x88, 0x8f, 0x89, 0xfb, 0x9a, 0x33}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0f36fd87-4f69-4415-98da-888f89fb9a33")
+ ICoreWebView2ObjectCollectionView : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ IUnknown * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ObjectCollectionViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ObjectCollectionView *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ObjectCollectionView *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ObjectCollectionView *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ObjectCollectionView, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2ObjectCollectionView *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ObjectCollectionView, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2ObjectCollectionView *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ IUnknown **value);
+
+ END_INTERFACE
+ } ICoreWebView2ObjectCollectionViewVtbl;
+
+ interface ICoreWebView2ObjectCollectionView
+ {
+ CONST_VTBL struct ICoreWebView2ObjectCollectionViewVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ObjectCollectionView_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ObjectCollectionView_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ObjectCollectionView_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ObjectCollectionView_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2ObjectCollectionView_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ObjectCollectionView_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ObjectCollection_INTERFACE_DEFINED__
+#define __ICoreWebView2ObjectCollection_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ObjectCollection */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ObjectCollection = {0x5cfec11c, 0x25bd, 0x4e8d, {0x9e, 0x1a, 0x7a, 0xcd, 0xae, 0xee, 0xc0, 0x47}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5cfec11c-25bd-4e8d-9e1a-7acdaeeec047")
+ ICoreWebView2ObjectCollection : public ICoreWebView2ObjectCollectionView
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RemoveValueAtIndex(
+ /* [in] */ UINT32 index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InsertValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [in] */ IUnknown * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ObjectCollectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ObjectCollection *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ObjectCollection *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ObjectCollection *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ObjectCollectionView, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2ObjectCollection *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ObjectCollectionView, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2ObjectCollection *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ IUnknown **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ObjectCollection, RemoveValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *RemoveValueAtIndex)(
+ ICoreWebView2ObjectCollection *This,
+ /* [in] */ UINT32 index);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ObjectCollection, InsertValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *InsertValueAtIndex)(
+ ICoreWebView2ObjectCollection *This,
+ /* [in] */ UINT32 index,
+ /* [in] */ IUnknown *value);
+
+ END_INTERFACE
+ } ICoreWebView2ObjectCollectionVtbl;
+
+ interface ICoreWebView2ObjectCollection
+ {
+ CONST_VTBL struct ICoreWebView2ObjectCollectionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ObjectCollection_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ObjectCollection_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ObjectCollection_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ObjectCollection_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2ObjectCollection_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#define ICoreWebView2ObjectCollection_RemoveValueAtIndex(This, index) \
+ ((This)->lpVtbl->RemoveValueAtIndex(This, index))
+
+#define ICoreWebView2ObjectCollection_InsertValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->InsertValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ObjectCollection_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PermissionRequestedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PermissionRequestedEventArgs = {0x973ae2ef, 0xff18, 0x4894, {0x8f, 0xb2, 0x3c, 0x75, 0x8f, 0x04, 0x68, 0x10}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("973ae2ef-ff18-4894-8fb2-3c758f046810")
+ ICoreWebView2PermissionRequestedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * uri) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PermissionKind(
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_KIND * permissionKind) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsUserInitiated(
+ /* [retval][out] */ BOOL * isUserInitiated) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_State(
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_STATE * state) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_State(
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE state) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PermissionRequestedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PermissionRequestedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PermissionRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PermissionRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2PermissionRequestedEventArgs *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_PermissionKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PermissionKind)(
+ ICoreWebView2PermissionRequestedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_KIND *permissionKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2PermissionRequestedEventArgs *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_State)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_State)(
+ ICoreWebView2PermissionRequestedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_STATE *state);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, put_State)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_State)(
+ ICoreWebView2PermissionRequestedEventArgs *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE state);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2PermissionRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2PermissionRequestedEventArgsVtbl;
+
+ interface ICoreWebView2PermissionRequestedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2PermissionRequestedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PermissionRequestedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PermissionRequestedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PermissionRequestedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PermissionRequestedEventArgs_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2PermissionRequestedEventArgs_get_PermissionKind(This, permissionKind) \
+ ((This)->lpVtbl->get_PermissionKind(This, permissionKind))
+
+#define ICoreWebView2PermissionRequestedEventArgs_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2PermissionRequestedEventArgs_get_State(This, state) \
+ ((This)->lpVtbl->get_State(This, state))
+
+#define ICoreWebView2PermissionRequestedEventArgs_put_State(This, state) \
+ ((This)->lpVtbl->put_State(This, state))
+
+#define ICoreWebView2PermissionRequestedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PermissionRequestedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PermissionRequestedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PermissionRequestedEventArgs2 = {0x74d7127f, 0x9de6, 0x4200, {0x87, 0x34, 0x42, 0xd6, 0xfb, 0x4f, 0xf7, 0x41}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("74d7127f-9de6-4200-8734-42d6fb4ff741")
+ ICoreWebView2PermissionRequestedEventArgs2 : public ICoreWebView2PermissionRequestedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PermissionRequestedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_PermissionKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PermissionKind)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_KIND *permissionKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_State)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_State)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_STATE *state);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, put_State)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_State)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE state);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs2, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs2, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2PermissionRequestedEventArgs2 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2PermissionRequestedEventArgs2Vtbl;
+
+ interface ICoreWebView2PermissionRequestedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2PermissionRequestedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PermissionRequestedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_get_PermissionKind(This, permissionKind) \
+ ((This)->lpVtbl->get_PermissionKind(This, permissionKind))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_get_State(This, state) \
+ ((This)->lpVtbl->get_State(This, state))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_put_State(This, state) \
+ ((This)->lpVtbl->put_State(This, state))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_get_Handled(This, value) \
+ ((This)->lpVtbl->get_Handled(This, value))
+
+#define ICoreWebView2PermissionRequestedEventArgs2_put_Handled(This, value) \
+ ((This)->lpVtbl->put_Handled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PermissionRequestedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionRequestedEventArgs3_INTERFACE_DEFINED__
+#define __ICoreWebView2PermissionRequestedEventArgs3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PermissionRequestedEventArgs3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PermissionRequestedEventArgs3 = {0xe61670bc, 0x3dce, 0x4177, {0x86, 0xd2, 0xc6, 0x29, 0xae, 0x3c, 0xb6, 0xac}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e61670bc-3dce-4177-86d2-c629ae3cb6ac")
+ ICoreWebView2PermissionRequestedEventArgs3 : public ICoreWebView2PermissionRequestedEventArgs2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SavesInProfile(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_SavesInProfile(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PermissionRequestedEventArgs3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_PermissionKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PermissionKind)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_KIND *permissionKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_IsUserInitiated)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsUserInitiated)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [retval][out] */ BOOL *isUserInitiated);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, get_State)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_State)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_STATE *state);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, put_State)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_State)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE state);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs2, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs2, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs3, get_SavesInProfile)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SavesInProfile)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionRequestedEventArgs3, put_SavesInProfile)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_SavesInProfile)(
+ ICoreWebView2PermissionRequestedEventArgs3 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2PermissionRequestedEventArgs3Vtbl;
+
+ interface ICoreWebView2PermissionRequestedEventArgs3
+ {
+ CONST_VTBL struct ICoreWebView2PermissionRequestedEventArgs3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PermissionRequestedEventArgs3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_get_PermissionKind(This, permissionKind) \
+ ((This)->lpVtbl->get_PermissionKind(This, permissionKind))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_get_IsUserInitiated(This, isUserInitiated) \
+ ((This)->lpVtbl->get_IsUserInitiated(This, isUserInitiated))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_get_State(This, state) \
+ ((This)->lpVtbl->get_State(This, state))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_put_State(This, state) \
+ ((This)->lpVtbl->put_State(This, state))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_get_Handled(This, value) \
+ ((This)->lpVtbl->get_Handled(This, value))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_put_Handled(This, value) \
+ ((This)->lpVtbl->put_Handled(This, value))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_get_SavesInProfile(This, value) \
+ ((This)->lpVtbl->get_SavesInProfile(This, value))
+
+#define ICoreWebView2PermissionRequestedEventArgs3_put_SavesInProfile(This, value) \
+ ((This)->lpVtbl->put_SavesInProfile(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PermissionRequestedEventArgs3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionSetting_INTERFACE_DEFINED__
+#define __ICoreWebView2PermissionSetting_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PermissionSetting */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PermissionSetting = {0x792b6eca, 0x5576, 0x421c, {0x91, 0x19, 0x74, 0xeb, 0xb3, 0xa4, 0xff, 0xb3}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("792b6eca-5576-421c-9119-74ebb3a4ffb3")
+ ICoreWebView2PermissionSetting : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PermissionKind(
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_KIND * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PermissionOrigin(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PermissionState(
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_STATE * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PermissionSettingVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PermissionSetting *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PermissionSetting *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PermissionSetting *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionSetting, get_PermissionKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PermissionKind)(
+ ICoreWebView2PermissionSetting *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionSetting, get_PermissionOrigin)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PermissionOrigin)(
+ ICoreWebView2PermissionSetting *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionSetting, get_PermissionState)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PermissionState)(
+ ICoreWebView2PermissionSetting *This,
+ /* [retval][out] */ COREWEBVIEW2_PERMISSION_STATE *value);
+
+ END_INTERFACE
+ } ICoreWebView2PermissionSettingVtbl;
+
+ interface ICoreWebView2PermissionSetting
+ {
+ CONST_VTBL struct ICoreWebView2PermissionSettingVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PermissionSetting_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PermissionSetting_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PermissionSetting_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PermissionSetting_get_PermissionKind(This, value) \
+ ((This)->lpVtbl->get_PermissionKind(This, value))
+
+#define ICoreWebView2PermissionSetting_get_PermissionOrigin(This, value) \
+ ((This)->lpVtbl->get_PermissionOrigin(This, value))
+
+#define ICoreWebView2PermissionSetting_get_PermissionState(This, value) \
+ ((This)->lpVtbl->get_PermissionState(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PermissionSetting_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PointerInfo_INTERFACE_DEFINED__
+#define __ICoreWebView2PointerInfo_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PointerInfo */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PointerInfo = {0xe6995887, 0xd10d, 0x4f5d, {0x93, 0x59, 0x4c, 0xe4, 0x6e, 0x4f, 0x96, 0xb9}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e6995887-d10d-4f5d-9359-4ce46e4f96b9")
+ ICoreWebView2PointerInfo : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PointerKind(
+ /* [retval][out] */ DWORD * pointerKind) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PointerKind(
+ /* [in] */ DWORD pointerKind) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PointerId(
+ /* [retval][out] */ UINT32 * pointerId) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PointerId(
+ /* [in] */ UINT32 pointerId) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FrameId(
+ /* [retval][out] */ UINT32 * frameId) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_FrameId(
+ /* [in] */ UINT32 frameId) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PointerFlags(
+ /* [retval][out] */ UINT32 * pointerFlags) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PointerFlags(
+ /* [in] */ UINT32 pointerFlags) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PointerDeviceRect(
+ /* [retval][out] */ RECT * pointerDeviceRect) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PointerDeviceRect(
+ /* [in] */ RECT pointerDeviceRect) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DisplayRect(
+ /* [retval][out] */ RECT * displayRect) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_DisplayRect(
+ /* [in] */ RECT displayRect) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PixelLocation(
+ /* [retval][out] */ POINT * pixelLocation) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PixelLocation(
+ /* [in] */ POINT pixelLocation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HimetricLocation(
+ /* [retval][out] */ POINT * himetricLocation) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_HimetricLocation(
+ /* [in] */ POINT himetricLocation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PixelLocationRaw(
+ /* [retval][out] */ POINT * pixelLocationRaw) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PixelLocationRaw(
+ /* [in] */ POINT pixelLocationRaw) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HimetricLocationRaw(
+ /* [retval][out] */ POINT * himetricLocationRaw) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_HimetricLocationRaw(
+ /* [in] */ POINT himetricLocationRaw) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Time(
+ /* [retval][out] */ DWORD * time) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Time(
+ /* [in] */ DWORD time) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HistoryCount(
+ /* [retval][out] */ UINT32 * historyCount) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_HistoryCount(
+ /* [in] */ UINT32 historyCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_InputData(
+ /* [retval][out] */ INT32 * inputData) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_InputData(
+ /* [in] */ INT32 inputData) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_KeyStates(
+ /* [retval][out] */ DWORD * keyStates) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_KeyStates(
+ /* [in] */ DWORD keyStates) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PerformanceCount(
+ /* [retval][out] */ UINT64 * performanceCount) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PerformanceCount(
+ /* [in] */ UINT64 performanceCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ButtonChangeKind(
+ /* [retval][out] */ INT32 * buttonChangeKind) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ButtonChangeKind(
+ /* [in] */ INT32 buttonChangeKind) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PenFlags(
+ /* [retval][out] */ UINT32 * penFLags) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PenFlags(
+ /* [in] */ UINT32 penFLags) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PenMask(
+ /* [retval][out] */ UINT32 * penMask) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PenMask(
+ /* [in] */ UINT32 penMask) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PenPressure(
+ /* [retval][out] */ UINT32 * penPressure) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PenPressure(
+ /* [in] */ UINT32 penPressure) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PenRotation(
+ /* [retval][out] */ UINT32 * penRotation) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PenRotation(
+ /* [in] */ UINT32 penRotation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PenTiltX(
+ /* [retval][out] */ INT32 * penTiltX) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PenTiltX(
+ /* [in] */ INT32 penTiltX) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PenTiltY(
+ /* [retval][out] */ INT32 * penTiltY) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PenTiltY(
+ /* [in] */ INT32 penTiltY) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TouchFlags(
+ /* [retval][out] */ UINT32 * touchFlags) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TouchFlags(
+ /* [in] */ UINT32 touchFlags) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TouchMask(
+ /* [retval][out] */ UINT32 * touchMask) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TouchMask(
+ /* [in] */ UINT32 touchMask) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TouchContact(
+ /* [retval][out] */ RECT * touchContact) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TouchContact(
+ /* [in] */ RECT touchContact) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TouchContactRaw(
+ /* [retval][out] */ RECT * touchContactRaw) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TouchContactRaw(
+ /* [in] */ RECT touchContactRaw) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TouchOrientation(
+ /* [retval][out] */ UINT32 * touchOrientation) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TouchOrientation(
+ /* [in] */ UINT32 touchOrientation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_TouchPressure(
+ /* [retval][out] */ UINT32 * touchPressure) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_TouchPressure(
+ /* [in] */ UINT32 touchPressure) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PointerInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PointerInfo *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PointerInfo *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PointerKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PointerKind)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ DWORD *pointerKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PointerKind)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PointerKind)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ DWORD pointerKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PointerId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PointerId)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *pointerId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PointerId)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PointerId)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 pointerId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_FrameId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameId)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *frameId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_FrameId)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_FrameId)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 frameId);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PointerFlags)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PointerFlags)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *pointerFlags);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PointerFlags)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PointerFlags)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 pointerFlags);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PointerDeviceRect)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PointerDeviceRect)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ RECT *pointerDeviceRect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PointerDeviceRect)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PointerDeviceRect)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ RECT pointerDeviceRect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_DisplayRect)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DisplayRect)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ RECT *displayRect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_DisplayRect)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DisplayRect)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ RECT displayRect);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PixelLocation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PixelLocation)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ POINT *pixelLocation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PixelLocation)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PixelLocation)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ POINT pixelLocation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_HimetricLocation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HimetricLocation)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ POINT *himetricLocation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_HimetricLocation)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HimetricLocation)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ POINT himetricLocation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PixelLocationRaw)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PixelLocationRaw)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ POINT *pixelLocationRaw);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PixelLocationRaw)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PixelLocationRaw)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ POINT pixelLocationRaw);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_HimetricLocationRaw)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HimetricLocationRaw)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ POINT *himetricLocationRaw);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_HimetricLocationRaw)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HimetricLocationRaw)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ POINT himetricLocationRaw);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_Time)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Time)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ DWORD *time);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_Time)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Time)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ DWORD time);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_HistoryCount)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HistoryCount)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *historyCount);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_HistoryCount)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HistoryCount)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 historyCount);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_InputData)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_InputData)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ INT32 *inputData);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_InputData)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_InputData)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ INT32 inputData);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_KeyStates)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_KeyStates)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ DWORD *keyStates);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_KeyStates)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_KeyStates)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ DWORD keyStates);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PerformanceCount)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PerformanceCount)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT64 *performanceCount);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PerformanceCount)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PerformanceCount)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT64 performanceCount);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_ButtonChangeKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ButtonChangeKind)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ INT32 *buttonChangeKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_ButtonChangeKind)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ButtonChangeKind)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ INT32 buttonChangeKind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PenFlags)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PenFlags)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *penFLags);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PenFlags)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PenFlags)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 penFLags);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PenMask)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PenMask)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *penMask);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PenMask)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PenMask)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 penMask);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PenPressure)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PenPressure)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *penPressure);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PenPressure)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PenPressure)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 penPressure);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PenRotation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PenRotation)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *penRotation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PenRotation)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PenRotation)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 penRotation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PenTiltX)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PenTiltX)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ INT32 *penTiltX);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PenTiltX)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PenTiltX)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ INT32 penTiltX);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_PenTiltY)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PenTiltY)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ INT32 *penTiltY);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_PenTiltY)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PenTiltY)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ INT32 penTiltY);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_TouchFlags)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TouchFlags)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *touchFlags);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_TouchFlags)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TouchFlags)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 touchFlags);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_TouchMask)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TouchMask)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *touchMask);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_TouchMask)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TouchMask)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 touchMask);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_TouchContact)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TouchContact)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ RECT *touchContact);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_TouchContact)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TouchContact)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ RECT touchContact);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_TouchContactRaw)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TouchContactRaw)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ RECT *touchContactRaw);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_TouchContactRaw)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TouchContactRaw)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ RECT touchContactRaw);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_TouchOrientation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TouchOrientation)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *touchOrientation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_TouchOrientation)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TouchOrientation)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 touchOrientation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, get_TouchPressure)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_TouchPressure)(
+ ICoreWebView2PointerInfo *This,
+ /* [retval][out] */ UINT32 *touchPressure);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PointerInfo, put_TouchPressure)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_TouchPressure)(
+ ICoreWebView2PointerInfo *This,
+ /* [in] */ UINT32 touchPressure);
+
+ END_INTERFACE
+ } ICoreWebView2PointerInfoVtbl;
+
+ interface ICoreWebView2PointerInfo
+ {
+ CONST_VTBL struct ICoreWebView2PointerInfoVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PointerInfo_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PointerInfo_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PointerInfo_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PointerInfo_get_PointerKind(This, pointerKind) \
+ ((This)->lpVtbl->get_PointerKind(This, pointerKind))
+
+#define ICoreWebView2PointerInfo_put_PointerKind(This, pointerKind) \
+ ((This)->lpVtbl->put_PointerKind(This, pointerKind))
+
+#define ICoreWebView2PointerInfo_get_PointerId(This, pointerId) \
+ ((This)->lpVtbl->get_PointerId(This, pointerId))
+
+#define ICoreWebView2PointerInfo_put_PointerId(This, pointerId) \
+ ((This)->lpVtbl->put_PointerId(This, pointerId))
+
+#define ICoreWebView2PointerInfo_get_FrameId(This, frameId) \
+ ((This)->lpVtbl->get_FrameId(This, frameId))
+
+#define ICoreWebView2PointerInfo_put_FrameId(This, frameId) \
+ ((This)->lpVtbl->put_FrameId(This, frameId))
+
+#define ICoreWebView2PointerInfo_get_PointerFlags(This, pointerFlags) \
+ ((This)->lpVtbl->get_PointerFlags(This, pointerFlags))
+
+#define ICoreWebView2PointerInfo_put_PointerFlags(This, pointerFlags) \
+ ((This)->lpVtbl->put_PointerFlags(This, pointerFlags))
+
+#define ICoreWebView2PointerInfo_get_PointerDeviceRect(This, pointerDeviceRect) \
+ ((This)->lpVtbl->get_PointerDeviceRect(This, pointerDeviceRect))
+
+#define ICoreWebView2PointerInfo_put_PointerDeviceRect(This, pointerDeviceRect) \
+ ((This)->lpVtbl->put_PointerDeviceRect(This, pointerDeviceRect))
+
+#define ICoreWebView2PointerInfo_get_DisplayRect(This, displayRect) \
+ ((This)->lpVtbl->get_DisplayRect(This, displayRect))
+
+#define ICoreWebView2PointerInfo_put_DisplayRect(This, displayRect) \
+ ((This)->lpVtbl->put_DisplayRect(This, displayRect))
+
+#define ICoreWebView2PointerInfo_get_PixelLocation(This, pixelLocation) \
+ ((This)->lpVtbl->get_PixelLocation(This, pixelLocation))
+
+#define ICoreWebView2PointerInfo_put_PixelLocation(This, pixelLocation) \
+ ((This)->lpVtbl->put_PixelLocation(This, pixelLocation))
+
+#define ICoreWebView2PointerInfo_get_HimetricLocation(This, himetricLocation) \
+ ((This)->lpVtbl->get_HimetricLocation(This, himetricLocation))
+
+#define ICoreWebView2PointerInfo_put_HimetricLocation(This, himetricLocation) \
+ ((This)->lpVtbl->put_HimetricLocation(This, himetricLocation))
+
+#define ICoreWebView2PointerInfo_get_PixelLocationRaw(This, pixelLocationRaw) \
+ ((This)->lpVtbl->get_PixelLocationRaw(This, pixelLocationRaw))
+
+#define ICoreWebView2PointerInfo_put_PixelLocationRaw(This, pixelLocationRaw) \
+ ((This)->lpVtbl->put_PixelLocationRaw(This, pixelLocationRaw))
+
+#define ICoreWebView2PointerInfo_get_HimetricLocationRaw(This, himetricLocationRaw) \
+ ((This)->lpVtbl->get_HimetricLocationRaw(This, himetricLocationRaw))
+
+#define ICoreWebView2PointerInfo_put_HimetricLocationRaw(This, himetricLocationRaw) \
+ ((This)->lpVtbl->put_HimetricLocationRaw(This, himetricLocationRaw))
+
+#define ICoreWebView2PointerInfo_get_Time(This, time) \
+ ((This)->lpVtbl->get_Time(This, time))
+
+#define ICoreWebView2PointerInfo_put_Time(This, time) \
+ ((This)->lpVtbl->put_Time(This, time))
+
+#define ICoreWebView2PointerInfo_get_HistoryCount(This, historyCount) \
+ ((This)->lpVtbl->get_HistoryCount(This, historyCount))
+
+#define ICoreWebView2PointerInfo_put_HistoryCount(This, historyCount) \
+ ((This)->lpVtbl->put_HistoryCount(This, historyCount))
+
+#define ICoreWebView2PointerInfo_get_InputData(This, inputData) \
+ ((This)->lpVtbl->get_InputData(This, inputData))
+
+#define ICoreWebView2PointerInfo_put_InputData(This, inputData) \
+ ((This)->lpVtbl->put_InputData(This, inputData))
+
+#define ICoreWebView2PointerInfo_get_KeyStates(This, keyStates) \
+ ((This)->lpVtbl->get_KeyStates(This, keyStates))
+
+#define ICoreWebView2PointerInfo_put_KeyStates(This, keyStates) \
+ ((This)->lpVtbl->put_KeyStates(This, keyStates))
+
+#define ICoreWebView2PointerInfo_get_PerformanceCount(This, performanceCount) \
+ ((This)->lpVtbl->get_PerformanceCount(This, performanceCount))
+
+#define ICoreWebView2PointerInfo_put_PerformanceCount(This, performanceCount) \
+ ((This)->lpVtbl->put_PerformanceCount(This, performanceCount))
+
+#define ICoreWebView2PointerInfo_get_ButtonChangeKind(This, buttonChangeKind) \
+ ((This)->lpVtbl->get_ButtonChangeKind(This, buttonChangeKind))
+
+#define ICoreWebView2PointerInfo_put_ButtonChangeKind(This, buttonChangeKind) \
+ ((This)->lpVtbl->put_ButtonChangeKind(This, buttonChangeKind))
+
+#define ICoreWebView2PointerInfo_get_PenFlags(This, penFLags) \
+ ((This)->lpVtbl->get_PenFlags(This, penFLags))
+
+#define ICoreWebView2PointerInfo_put_PenFlags(This, penFLags) \
+ ((This)->lpVtbl->put_PenFlags(This, penFLags))
+
+#define ICoreWebView2PointerInfo_get_PenMask(This, penMask) \
+ ((This)->lpVtbl->get_PenMask(This, penMask))
+
+#define ICoreWebView2PointerInfo_put_PenMask(This, penMask) \
+ ((This)->lpVtbl->put_PenMask(This, penMask))
+
+#define ICoreWebView2PointerInfo_get_PenPressure(This, penPressure) \
+ ((This)->lpVtbl->get_PenPressure(This, penPressure))
+
+#define ICoreWebView2PointerInfo_put_PenPressure(This, penPressure) \
+ ((This)->lpVtbl->put_PenPressure(This, penPressure))
+
+#define ICoreWebView2PointerInfo_get_PenRotation(This, penRotation) \
+ ((This)->lpVtbl->get_PenRotation(This, penRotation))
+
+#define ICoreWebView2PointerInfo_put_PenRotation(This, penRotation) \
+ ((This)->lpVtbl->put_PenRotation(This, penRotation))
+
+#define ICoreWebView2PointerInfo_get_PenTiltX(This, penTiltX) \
+ ((This)->lpVtbl->get_PenTiltX(This, penTiltX))
+
+#define ICoreWebView2PointerInfo_put_PenTiltX(This, penTiltX) \
+ ((This)->lpVtbl->put_PenTiltX(This, penTiltX))
+
+#define ICoreWebView2PointerInfo_get_PenTiltY(This, penTiltY) \
+ ((This)->lpVtbl->get_PenTiltY(This, penTiltY))
+
+#define ICoreWebView2PointerInfo_put_PenTiltY(This, penTiltY) \
+ ((This)->lpVtbl->put_PenTiltY(This, penTiltY))
+
+#define ICoreWebView2PointerInfo_get_TouchFlags(This, touchFlags) \
+ ((This)->lpVtbl->get_TouchFlags(This, touchFlags))
+
+#define ICoreWebView2PointerInfo_put_TouchFlags(This, touchFlags) \
+ ((This)->lpVtbl->put_TouchFlags(This, touchFlags))
+
+#define ICoreWebView2PointerInfo_get_TouchMask(This, touchMask) \
+ ((This)->lpVtbl->get_TouchMask(This, touchMask))
+
+#define ICoreWebView2PointerInfo_put_TouchMask(This, touchMask) \
+ ((This)->lpVtbl->put_TouchMask(This, touchMask))
+
+#define ICoreWebView2PointerInfo_get_TouchContact(This, touchContact) \
+ ((This)->lpVtbl->get_TouchContact(This, touchContact))
+
+#define ICoreWebView2PointerInfo_put_TouchContact(This, touchContact) \
+ ((This)->lpVtbl->put_TouchContact(This, touchContact))
+
+#define ICoreWebView2PointerInfo_get_TouchContactRaw(This, touchContactRaw) \
+ ((This)->lpVtbl->get_TouchContactRaw(This, touchContactRaw))
+
+#define ICoreWebView2PointerInfo_put_TouchContactRaw(This, touchContactRaw) \
+ ((This)->lpVtbl->put_TouchContactRaw(This, touchContactRaw))
+
+#define ICoreWebView2PointerInfo_get_TouchOrientation(This, touchOrientation) \
+ ((This)->lpVtbl->get_TouchOrientation(This, touchOrientation))
+
+#define ICoreWebView2PointerInfo_put_TouchOrientation(This, touchOrientation) \
+ ((This)->lpVtbl->put_TouchOrientation(This, touchOrientation))
+
+#define ICoreWebView2PointerInfo_get_TouchPressure(This, touchPressure) \
+ ((This)->lpVtbl->get_TouchPressure(This, touchPressure))
+
+#define ICoreWebView2PointerInfo_put_TouchPressure(This, touchPressure) \
+ ((This)->lpVtbl->put_TouchPressure(This, touchPressure))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PointerInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintSettings_INTERFACE_DEFINED__
+#define __ICoreWebView2PrintSettings_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PrintSettings */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PrintSettings = {0x377f3721, 0xc74e, 0x48ca, {0x8d, 0xb1, 0xdf, 0x68, 0xe5, 0x1d, 0x60, 0xe2}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("377f3721-c74e-48ca-8db1-df68e51d60e2")
+ ICoreWebView2PrintSettings : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Orientation(
+ /* [retval][out] */ COREWEBVIEW2_PRINT_ORIENTATION * orientation) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Orientation(
+ /* [in] */ COREWEBVIEW2_PRINT_ORIENTATION orientation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ScaleFactor(
+ /* [retval][out] */ double *scaleFactor) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ScaleFactor(
+ /* [in] */ double scaleFactor) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PageWidth(
+ /* [retval][out] */ double *pageWidth) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PageWidth(
+ /* [in] */ double pageWidth) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PageHeight(
+ /* [retval][out] */ double *pageHeight) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PageHeight(
+ /* [in] */ double pageHeight) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MarginTop(
+ /* [retval][out] */ double *marginTop) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_MarginTop(
+ /* [in] */ double marginTop) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MarginBottom(
+ /* [retval][out] */ double *marginBottom) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_MarginBottom(
+ /* [in] */ double marginBottom) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MarginLeft(
+ /* [retval][out] */ double *marginLeft) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_MarginLeft(
+ /* [in] */ double marginLeft) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MarginRight(
+ /* [retval][out] */ double *marginRight) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_MarginRight(
+ /* [in] */ double marginRight) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldPrintBackgrounds(
+ /* [retval][out] */ BOOL * shouldPrintBackgrounds) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ShouldPrintBackgrounds(
+ /* [in] */ BOOL shouldPrintBackgrounds) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldPrintSelectionOnly(
+ /* [retval][out] */ BOOL * shouldPrintSelectionOnly) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ShouldPrintSelectionOnly(
+ /* [in] */ BOOL shouldPrintSelectionOnly) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldPrintHeaderAndFooter(
+ /* [retval][out] */ BOOL * shouldPrintHeaderAndFooter) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ShouldPrintHeaderAndFooter(
+ /* [in] */ BOOL shouldPrintHeaderAndFooter) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HeaderTitle(
+ /* [retval][out] */ LPWSTR * headerTitle) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_HeaderTitle(
+ /* [in] */ LPCWSTR headerTitle) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FooterUri(
+ /* [retval][out] */ LPWSTR * footerUri) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_FooterUri(
+ /* [in] */ LPCWSTR footerUri) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PrintSettingsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PrintSettings *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PrintSettings *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_Orientation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Orientation)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ COREWEBVIEW2_PRINT_ORIENTATION *orientation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_Orientation)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Orientation)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ COREWEBVIEW2_PRINT_ORIENTATION orientation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ScaleFactor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ScaleFactor)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ double *scaleFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ScaleFactor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ScaleFactor)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ double scaleFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_PageWidth)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PageWidth)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ double *pageWidth);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_PageWidth)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PageWidth)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ double pageWidth);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_PageHeight)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PageHeight)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ double *pageHeight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_PageHeight)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PageHeight)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ double pageHeight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginTop)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginTop)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ double *marginTop);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginTop)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginTop)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ double marginTop);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginBottom)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginBottom)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ double *marginBottom);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginBottom)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginBottom)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ double marginBottom);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginLeft)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginLeft)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ double *marginLeft);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginLeft)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginLeft)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ double marginLeft);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginRight)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginRight)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ double *marginRight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginRight)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginRight)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ double marginRight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ShouldPrintBackgrounds)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldPrintBackgrounds)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ BOOL *shouldPrintBackgrounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ShouldPrintBackgrounds)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldPrintBackgrounds)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ BOOL shouldPrintBackgrounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ShouldPrintSelectionOnly)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldPrintSelectionOnly)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ BOOL *shouldPrintSelectionOnly);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ShouldPrintSelectionOnly)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldPrintSelectionOnly)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ BOOL shouldPrintSelectionOnly);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ShouldPrintHeaderAndFooter)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldPrintHeaderAndFooter)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ BOOL *shouldPrintHeaderAndFooter);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ShouldPrintHeaderAndFooter)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldPrintHeaderAndFooter)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ BOOL shouldPrintHeaderAndFooter);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_HeaderTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HeaderTitle)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ LPWSTR *headerTitle);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_HeaderTitle)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HeaderTitle)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ LPCWSTR headerTitle);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_FooterUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FooterUri)(
+ ICoreWebView2PrintSettings *This,
+ /* [retval][out] */ LPWSTR *footerUri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_FooterUri)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_FooterUri)(
+ ICoreWebView2PrintSettings *This,
+ /* [in] */ LPCWSTR footerUri);
+
+ END_INTERFACE
+ } ICoreWebView2PrintSettingsVtbl;
+
+ interface ICoreWebView2PrintSettings
+ {
+ CONST_VTBL struct ICoreWebView2PrintSettingsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PrintSettings_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PrintSettings_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PrintSettings_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PrintSettings_get_Orientation(This, orientation) \
+ ((This)->lpVtbl->get_Orientation(This, orientation))
+
+#define ICoreWebView2PrintSettings_put_Orientation(This, orientation) \
+ ((This)->lpVtbl->put_Orientation(This, orientation))
+
+#define ICoreWebView2PrintSettings_get_ScaleFactor(This, scaleFactor) \
+ ((This)->lpVtbl->get_ScaleFactor(This, scaleFactor))
+
+#define ICoreWebView2PrintSettings_put_ScaleFactor(This, scaleFactor) \
+ ((This)->lpVtbl->put_ScaleFactor(This, scaleFactor))
+
+#define ICoreWebView2PrintSettings_get_PageWidth(This, pageWidth) \
+ ((This)->lpVtbl->get_PageWidth(This, pageWidth))
+
+#define ICoreWebView2PrintSettings_put_PageWidth(This, pageWidth) \
+ ((This)->lpVtbl->put_PageWidth(This, pageWidth))
+
+#define ICoreWebView2PrintSettings_get_PageHeight(This, pageHeight) \
+ ((This)->lpVtbl->get_PageHeight(This, pageHeight))
+
+#define ICoreWebView2PrintSettings_put_PageHeight(This, pageHeight) \
+ ((This)->lpVtbl->put_PageHeight(This, pageHeight))
+
+#define ICoreWebView2PrintSettings_get_MarginTop(This, marginTop) \
+ ((This)->lpVtbl->get_MarginTop(This, marginTop))
+
+#define ICoreWebView2PrintSettings_put_MarginTop(This, marginTop) \
+ ((This)->lpVtbl->put_MarginTop(This, marginTop))
+
+#define ICoreWebView2PrintSettings_get_MarginBottom(This, marginBottom) \
+ ((This)->lpVtbl->get_MarginBottom(This, marginBottom))
+
+#define ICoreWebView2PrintSettings_put_MarginBottom(This, marginBottom) \
+ ((This)->lpVtbl->put_MarginBottom(This, marginBottom))
+
+#define ICoreWebView2PrintSettings_get_MarginLeft(This, marginLeft) \
+ ((This)->lpVtbl->get_MarginLeft(This, marginLeft))
+
+#define ICoreWebView2PrintSettings_put_MarginLeft(This, marginLeft) \
+ ((This)->lpVtbl->put_MarginLeft(This, marginLeft))
+
+#define ICoreWebView2PrintSettings_get_MarginRight(This, marginRight) \
+ ((This)->lpVtbl->get_MarginRight(This, marginRight))
+
+#define ICoreWebView2PrintSettings_put_MarginRight(This, marginRight) \
+ ((This)->lpVtbl->put_MarginRight(This, marginRight))
+
+#define ICoreWebView2PrintSettings_get_ShouldPrintBackgrounds(This, shouldPrintBackgrounds) \
+ ((This)->lpVtbl->get_ShouldPrintBackgrounds(This, shouldPrintBackgrounds))
+
+#define ICoreWebView2PrintSettings_put_ShouldPrintBackgrounds(This, shouldPrintBackgrounds) \
+ ((This)->lpVtbl->put_ShouldPrintBackgrounds(This, shouldPrintBackgrounds))
+
+#define ICoreWebView2PrintSettings_get_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly) \
+ ((This)->lpVtbl->get_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly))
+
+#define ICoreWebView2PrintSettings_put_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly) \
+ ((This)->lpVtbl->put_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly))
+
+#define ICoreWebView2PrintSettings_get_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter) \
+ ((This)->lpVtbl->get_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter))
+
+#define ICoreWebView2PrintSettings_put_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter) \
+ ((This)->lpVtbl->put_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter))
+
+#define ICoreWebView2PrintSettings_get_HeaderTitle(This, headerTitle) \
+ ((This)->lpVtbl->get_HeaderTitle(This, headerTitle))
+
+#define ICoreWebView2PrintSettings_put_HeaderTitle(This, headerTitle) \
+ ((This)->lpVtbl->put_HeaderTitle(This, headerTitle))
+
+#define ICoreWebView2PrintSettings_get_FooterUri(This, footerUri) \
+ ((This)->lpVtbl->get_FooterUri(This, footerUri))
+
+#define ICoreWebView2PrintSettings_put_FooterUri(This, footerUri) \
+ ((This)->lpVtbl->put_FooterUri(This, footerUri))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PrintSettings_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PrintSettings2_INTERFACE_DEFINED__
+#define __ICoreWebView2PrintSettings2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PrintSettings2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PrintSettings2 = {0xCA7F0E1F, 0x3484, 0x41D1, {0x8C, 0x1A, 0x65, 0xCD, 0x44, 0xA6, 0x3F, 0x8D}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("CA7F0E1F-3484-41D1-8C1A-65CD44A63F8D")
+ ICoreWebView2PrintSettings2 : public ICoreWebView2PrintSettings
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PageRanges(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PageRanges(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PagesPerSide(
+ /* [retval][out] */ INT32 * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PagesPerSide(
+ /* [in] */ INT32 value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Copies(
+ /* [retval][out] */ INT32 * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Copies(
+ /* [in] */ INT32 value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Collation(
+ /* [retval][out] */ COREWEBVIEW2_PRINT_COLLATION * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Collation(
+ /* [in] */ COREWEBVIEW2_PRINT_COLLATION value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ColorMode(
+ /* [retval][out] */ COREWEBVIEW2_PRINT_COLOR_MODE * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ColorMode(
+ /* [in] */ COREWEBVIEW2_PRINT_COLOR_MODE value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Duplex(
+ /* [retval][out] */ COREWEBVIEW2_PRINT_DUPLEX * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Duplex(
+ /* [in] */ COREWEBVIEW2_PRINT_DUPLEX value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_MediaSize(
+ /* [retval][out] */ COREWEBVIEW2_PRINT_MEDIA_SIZE * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_MediaSize(
+ /* [in] */ COREWEBVIEW2_PRINT_MEDIA_SIZE value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PrinterName(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PrinterName(
+ /* [in] */ LPCWSTR value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PrintSettings2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PrintSettings2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PrintSettings2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_Orientation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Orientation)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PRINT_ORIENTATION *orientation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_Orientation)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Orientation)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_ORIENTATION orientation);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ScaleFactor)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ScaleFactor)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ double *scaleFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ScaleFactor)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ScaleFactor)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ double scaleFactor);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_PageWidth)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PageWidth)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ double *pageWidth);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_PageWidth)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PageWidth)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ double pageWidth);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_PageHeight)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PageHeight)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ double *pageHeight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_PageHeight)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PageHeight)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ double pageHeight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginTop)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginTop)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ double *marginTop);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginTop)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginTop)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ double marginTop);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginBottom)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginBottom)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ double *marginBottom);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginBottom)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginBottom)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ double marginBottom);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginLeft)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginLeft)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ double *marginLeft);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginLeft)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginLeft)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ double marginLeft);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_MarginRight)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MarginRight)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ double *marginRight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_MarginRight)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MarginRight)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ double marginRight);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ShouldPrintBackgrounds)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldPrintBackgrounds)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ BOOL *shouldPrintBackgrounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ShouldPrintBackgrounds)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldPrintBackgrounds)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ BOOL shouldPrintBackgrounds);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ShouldPrintSelectionOnly)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldPrintSelectionOnly)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ BOOL *shouldPrintSelectionOnly);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ShouldPrintSelectionOnly)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldPrintSelectionOnly)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ BOOL shouldPrintSelectionOnly);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_ShouldPrintHeaderAndFooter)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldPrintHeaderAndFooter)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ BOOL *shouldPrintHeaderAndFooter);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_ShouldPrintHeaderAndFooter)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ShouldPrintHeaderAndFooter)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ BOOL shouldPrintHeaderAndFooter);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_HeaderTitle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HeaderTitle)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ LPWSTR *headerTitle);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_HeaderTitle)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HeaderTitle)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ LPCWSTR headerTitle);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, get_FooterUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FooterUri)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ LPWSTR *footerUri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings, put_FooterUri)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_FooterUri)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ LPCWSTR footerUri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_PageRanges)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PageRanges)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_PageRanges)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PageRanges)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_PagesPerSide)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PagesPerSide)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ INT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_PagesPerSide)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PagesPerSide)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ INT32 value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_Copies)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Copies)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ INT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_Copies)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Copies)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ INT32 value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_Collation)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Collation)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PRINT_COLLATION *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_Collation)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Collation)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_COLLATION value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_ColorMode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ColorMode)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PRINT_COLOR_MODE *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_ColorMode)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ColorMode)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_COLOR_MODE value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_Duplex)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Duplex)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PRINT_DUPLEX *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_Duplex)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Duplex)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_DUPLEX value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_MediaSize)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_MediaSize)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PRINT_MEDIA_SIZE *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_MediaSize)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_MediaSize)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ COREWEBVIEW2_PRINT_MEDIA_SIZE value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, get_PrinterName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PrinterName)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PrintSettings2, put_PrinterName)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PrinterName)(
+ ICoreWebView2PrintSettings2 *This,
+ /* [in] */ LPCWSTR value);
+
+ END_INTERFACE
+ } ICoreWebView2PrintSettings2Vtbl;
+
+ interface ICoreWebView2PrintSettings2
+ {
+ CONST_VTBL struct ICoreWebView2PrintSettings2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PrintSettings2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PrintSettings2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PrintSettings2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PrintSettings2_get_Orientation(This, orientation) \
+ ((This)->lpVtbl->get_Orientation(This, orientation))
+
+#define ICoreWebView2PrintSettings2_put_Orientation(This, orientation) \
+ ((This)->lpVtbl->put_Orientation(This, orientation))
+
+#define ICoreWebView2PrintSettings2_get_ScaleFactor(This, scaleFactor) \
+ ((This)->lpVtbl->get_ScaleFactor(This, scaleFactor))
+
+#define ICoreWebView2PrintSettings2_put_ScaleFactor(This, scaleFactor) \
+ ((This)->lpVtbl->put_ScaleFactor(This, scaleFactor))
+
+#define ICoreWebView2PrintSettings2_get_PageWidth(This, pageWidth) \
+ ((This)->lpVtbl->get_PageWidth(This, pageWidth))
+
+#define ICoreWebView2PrintSettings2_put_PageWidth(This, pageWidth) \
+ ((This)->lpVtbl->put_PageWidth(This, pageWidth))
+
+#define ICoreWebView2PrintSettings2_get_PageHeight(This, pageHeight) \
+ ((This)->lpVtbl->get_PageHeight(This, pageHeight))
+
+#define ICoreWebView2PrintSettings2_put_PageHeight(This, pageHeight) \
+ ((This)->lpVtbl->put_PageHeight(This, pageHeight))
+
+#define ICoreWebView2PrintSettings2_get_MarginTop(This, marginTop) \
+ ((This)->lpVtbl->get_MarginTop(This, marginTop))
+
+#define ICoreWebView2PrintSettings2_put_MarginTop(This, marginTop) \
+ ((This)->lpVtbl->put_MarginTop(This, marginTop))
+
+#define ICoreWebView2PrintSettings2_get_MarginBottom(This, marginBottom) \
+ ((This)->lpVtbl->get_MarginBottom(This, marginBottom))
+
+#define ICoreWebView2PrintSettings2_put_MarginBottom(This, marginBottom) \
+ ((This)->lpVtbl->put_MarginBottom(This, marginBottom))
+
+#define ICoreWebView2PrintSettings2_get_MarginLeft(This, marginLeft) \
+ ((This)->lpVtbl->get_MarginLeft(This, marginLeft))
+
+#define ICoreWebView2PrintSettings2_put_MarginLeft(This, marginLeft) \
+ ((This)->lpVtbl->put_MarginLeft(This, marginLeft))
+
+#define ICoreWebView2PrintSettings2_get_MarginRight(This, marginRight) \
+ ((This)->lpVtbl->get_MarginRight(This, marginRight))
+
+#define ICoreWebView2PrintSettings2_put_MarginRight(This, marginRight) \
+ ((This)->lpVtbl->put_MarginRight(This, marginRight))
+
+#define ICoreWebView2PrintSettings2_get_ShouldPrintBackgrounds(This, shouldPrintBackgrounds) \
+ ((This)->lpVtbl->get_ShouldPrintBackgrounds(This, shouldPrintBackgrounds))
+
+#define ICoreWebView2PrintSettings2_put_ShouldPrintBackgrounds(This, shouldPrintBackgrounds) \
+ ((This)->lpVtbl->put_ShouldPrintBackgrounds(This, shouldPrintBackgrounds))
+
+#define ICoreWebView2PrintSettings2_get_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly) \
+ ((This)->lpVtbl->get_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly))
+
+#define ICoreWebView2PrintSettings2_put_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly) \
+ ((This)->lpVtbl->put_ShouldPrintSelectionOnly(This, shouldPrintSelectionOnly))
+
+#define ICoreWebView2PrintSettings2_get_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter) \
+ ((This)->lpVtbl->get_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter))
+
+#define ICoreWebView2PrintSettings2_put_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter) \
+ ((This)->lpVtbl->put_ShouldPrintHeaderAndFooter(This, shouldPrintHeaderAndFooter))
+
+#define ICoreWebView2PrintSettings2_get_HeaderTitle(This, headerTitle) \
+ ((This)->lpVtbl->get_HeaderTitle(This, headerTitle))
+
+#define ICoreWebView2PrintSettings2_put_HeaderTitle(This, headerTitle) \
+ ((This)->lpVtbl->put_HeaderTitle(This, headerTitle))
+
+#define ICoreWebView2PrintSettings2_get_FooterUri(This, footerUri) \
+ ((This)->lpVtbl->get_FooterUri(This, footerUri))
+
+#define ICoreWebView2PrintSettings2_put_FooterUri(This, footerUri) \
+ ((This)->lpVtbl->put_FooterUri(This, footerUri))
+
+#define ICoreWebView2PrintSettings2_get_PageRanges(This, value) \
+ ((This)->lpVtbl->get_PageRanges(This, value))
+
+#define ICoreWebView2PrintSettings2_put_PageRanges(This, value) \
+ ((This)->lpVtbl->put_PageRanges(This, value))
+
+#define ICoreWebView2PrintSettings2_get_PagesPerSide(This, value) \
+ ((This)->lpVtbl->get_PagesPerSide(This, value))
+
+#define ICoreWebView2PrintSettings2_put_PagesPerSide(This, value) \
+ ((This)->lpVtbl->put_PagesPerSide(This, value))
+
+#define ICoreWebView2PrintSettings2_get_Copies(This, value) \
+ ((This)->lpVtbl->get_Copies(This, value))
+
+#define ICoreWebView2PrintSettings2_put_Copies(This, value) \
+ ((This)->lpVtbl->put_Copies(This, value))
+
+#define ICoreWebView2PrintSettings2_get_Collation(This, value) \
+ ((This)->lpVtbl->get_Collation(This, value))
+
+#define ICoreWebView2PrintSettings2_put_Collation(This, value) \
+ ((This)->lpVtbl->put_Collation(This, value))
+
+#define ICoreWebView2PrintSettings2_get_ColorMode(This, value) \
+ ((This)->lpVtbl->get_ColorMode(This, value))
+
+#define ICoreWebView2PrintSettings2_put_ColorMode(This, value) \
+ ((This)->lpVtbl->put_ColorMode(This, value))
+
+#define ICoreWebView2PrintSettings2_get_Duplex(This, value) \
+ ((This)->lpVtbl->get_Duplex(This, value))
+
+#define ICoreWebView2PrintSettings2_put_Duplex(This, value) \
+ ((This)->lpVtbl->put_Duplex(This, value))
+
+#define ICoreWebView2PrintSettings2_get_MediaSize(This, value) \
+ ((This)->lpVtbl->get_MediaSize(This, value))
+
+#define ICoreWebView2PrintSettings2_put_MediaSize(This, value) \
+ ((This)->lpVtbl->put_MediaSize(This, value))
+
+#define ICoreWebView2PrintSettings2_get_PrinterName(This, value) \
+ ((This)->lpVtbl->get_PrinterName(This, value))
+
+#define ICoreWebView2PrintSettings2_put_PrinterName(This, value) \
+ ((This)->lpVtbl->put_PrinterName(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PrintSettings2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessExtendedInfo_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessExtendedInfo_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessExtendedInfo */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessExtendedInfo = {0xaf4c4c2e, 0x45db, 0x11ee, {0xbe, 0x56, 0x02, 0x42, 0xac, 0x12, 0x00, 0x02}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("af4c4c2e-45db-11ee-be56-0242ac120002")
+ ICoreWebView2ProcessExtendedInfo : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ProcessInfo(
+ /* [retval][out] */ ICoreWebView2ProcessInfo * *processInfo) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AssociatedFrameInfos(
+ /* [retval][out] */ ICoreWebView2FrameInfoCollection * *frames) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessExtendedInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessExtendedInfo *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessExtendedInfo *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessExtendedInfo *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessExtendedInfo, get_ProcessInfo)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProcessInfo)(
+ ICoreWebView2ProcessExtendedInfo *This,
+ /* [retval][out] */ ICoreWebView2ProcessInfo **processInfo);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessExtendedInfo, get_AssociatedFrameInfos)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AssociatedFrameInfos)(
+ ICoreWebView2ProcessExtendedInfo *This,
+ /* [retval][out] */ ICoreWebView2FrameInfoCollection **frames);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessExtendedInfoVtbl;
+
+ interface ICoreWebView2ProcessExtendedInfo
+ {
+ CONST_VTBL struct ICoreWebView2ProcessExtendedInfoVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessExtendedInfo_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessExtendedInfo_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessExtendedInfo_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessExtendedInfo_get_ProcessInfo(This, processInfo) \
+ ((This)->lpVtbl->get_ProcessInfo(This, processInfo))
+
+#define ICoreWebView2ProcessExtendedInfo_get_AssociatedFrameInfos(This, frames) \
+ ((This)->lpVtbl->get_AssociatedFrameInfos(This, frames))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessExtendedInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessFailedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessFailedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessFailedEventArgs = {0x8155a9a4, 0x1474, 0x4a86, {0x8c, 0xae, 0x15, 0x1b, 0x0f, 0xa6, 0xb8, 0xca}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8155a9a4-1474-4a86-8cae-151b0fa6b8ca")
+ ICoreWebView2ProcessFailedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ProcessFailedKind(
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_FAILED_KIND * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessFailedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessFailedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessFailedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessFailedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs, get_ProcessFailedKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProcessFailedKind)(
+ ICoreWebView2ProcessFailedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_FAILED_KIND *value);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessFailedEventArgsVtbl;
+
+ interface ICoreWebView2ProcessFailedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2ProcessFailedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessFailedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessFailedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessFailedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessFailedEventArgs_get_ProcessFailedKind(This, value) \
+ ((This)->lpVtbl->get_ProcessFailedKind(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessFailedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessFailedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessFailedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessFailedEventArgs2 = {0x4dab9422, 0x46fa, 0x4c3e, {0xa5, 0xd2, 0x41, 0xd2, 0x07, 0x1d, 0x36, 0x80}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4dab9422-46fa-4c3e-a5d2-41d2071d3680")
+ ICoreWebView2ProcessFailedEventArgs2 : public ICoreWebView2ProcessFailedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Reason(
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_FAILED_REASON * reason) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ExitCode(
+ /* [retval][out] */ int *exitCode) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ProcessDescription(
+ /* [retval][out] */ LPWSTR * processDescription) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FrameInfosForFailedProcess(
+ /* [retval][out] */ ICoreWebView2FrameInfoCollection * *frames) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessFailedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessFailedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessFailedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessFailedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs, get_ProcessFailedKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProcessFailedKind)(
+ ICoreWebView2ProcessFailedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_FAILED_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_Reason)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Reason)(
+ ICoreWebView2ProcessFailedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_FAILED_REASON *reason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_ExitCode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ExitCode)(
+ ICoreWebView2ProcessFailedEventArgs2 *This,
+ /* [retval][out] */ int *exitCode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_ProcessDescription)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProcessDescription)(
+ ICoreWebView2ProcessFailedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *processDescription);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_FrameInfosForFailedProcess)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameInfosForFailedProcess)(
+ ICoreWebView2ProcessFailedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2FrameInfoCollection **frames);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessFailedEventArgs2Vtbl;
+
+ interface ICoreWebView2ProcessFailedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2ProcessFailedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessFailedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessFailedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessFailedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessFailedEventArgs2_get_ProcessFailedKind(This, value) \
+ ((This)->lpVtbl->get_ProcessFailedKind(This, value))
+
+#define ICoreWebView2ProcessFailedEventArgs2_get_Reason(This, reason) \
+ ((This)->lpVtbl->get_Reason(This, reason))
+
+#define ICoreWebView2ProcessFailedEventArgs2_get_ExitCode(This, exitCode) \
+ ((This)->lpVtbl->get_ExitCode(This, exitCode))
+
+#define ICoreWebView2ProcessFailedEventArgs2_get_ProcessDescription(This, processDescription) \
+ ((This)->lpVtbl->get_ProcessDescription(This, processDescription))
+
+#define ICoreWebView2ProcessFailedEventArgs2_get_FrameInfosForFailedProcess(This, frames) \
+ ((This)->lpVtbl->get_FrameInfosForFailedProcess(This, frames))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessFailedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessFailedEventArgs3_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessFailedEventArgs3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessFailedEventArgs3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessFailedEventArgs3 = {0xab667428, 0x094d, 0x5fd1, {0xb4, 0x80, 0x8b, 0x4c, 0x0f, 0xdb, 0xdf, 0x2f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ab667428-094d-5fd1-b480-8b4c0fdbdf2f")
+ ICoreWebView2ProcessFailedEventArgs3 : public ICoreWebView2ProcessFailedEventArgs2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FailureSourceModulePath(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessFailedEventArgs3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessFailedEventArgs3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessFailedEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessFailedEventArgs3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs, get_ProcessFailedKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProcessFailedKind)(
+ ICoreWebView2ProcessFailedEventArgs3 *This,
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_FAILED_KIND *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_Reason)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Reason)(
+ ICoreWebView2ProcessFailedEventArgs3 *This,
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_FAILED_REASON *reason);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_ExitCode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ExitCode)(
+ ICoreWebView2ProcessFailedEventArgs3 *This,
+ /* [retval][out] */ int *exitCode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_ProcessDescription)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProcessDescription)(
+ ICoreWebView2ProcessFailedEventArgs3 *This,
+ /* [retval][out] */ LPWSTR *processDescription);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs2, get_FrameInfosForFailedProcess)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FrameInfosForFailedProcess)(
+ ICoreWebView2ProcessFailedEventArgs3 *This,
+ /* [retval][out] */ ICoreWebView2FrameInfoCollection **frames);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessFailedEventArgs3, get_FailureSourceModulePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FailureSourceModulePath)(
+ ICoreWebView2ProcessFailedEventArgs3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessFailedEventArgs3Vtbl;
+
+ interface ICoreWebView2ProcessFailedEventArgs3
+ {
+ CONST_VTBL struct ICoreWebView2ProcessFailedEventArgs3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessFailedEventArgs3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessFailedEventArgs3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessFailedEventArgs3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessFailedEventArgs3_get_ProcessFailedKind(This, value) \
+ ((This)->lpVtbl->get_ProcessFailedKind(This, value))
+
+#define ICoreWebView2ProcessFailedEventArgs3_get_Reason(This, reason) \
+ ((This)->lpVtbl->get_Reason(This, reason))
+
+#define ICoreWebView2ProcessFailedEventArgs3_get_ExitCode(This, exitCode) \
+ ((This)->lpVtbl->get_ExitCode(This, exitCode))
+
+#define ICoreWebView2ProcessFailedEventArgs3_get_ProcessDescription(This, processDescription) \
+ ((This)->lpVtbl->get_ProcessDescription(This, processDescription))
+
+#define ICoreWebView2ProcessFailedEventArgs3_get_FrameInfosForFailedProcess(This, frames) \
+ ((This)->lpVtbl->get_FrameInfosForFailedProcess(This, frames))
+
+#define ICoreWebView2ProcessFailedEventArgs3_get_FailureSourceModulePath(This, value) \
+ ((This)->lpVtbl->get_FailureSourceModulePath(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessFailedEventArgs3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProcessInfo_INTERFACE_DEFINED__
+#define __ICoreWebView2ProcessInfo_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProcessInfo */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProcessInfo = {0x84FA7612, 0x3F3D, 0x4FBF, {0x88, 0x9D, 0xFA, 0xD0, 0x00, 0x49, 0x2D, 0x72}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("84FA7612-3F3D-4FBF-889D-FAD000492D72")
+ ICoreWebView2ProcessInfo : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ProcessId(
+ /* [retval][out] */ INT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Kind(
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_KIND * kind) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProcessInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProcessInfo *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProcessInfo *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProcessInfo *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessInfo, get_ProcessId)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProcessId)(
+ ICoreWebView2ProcessInfo *This,
+ /* [retval][out] */ INT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProcessInfo, get_Kind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Kind)(
+ ICoreWebView2ProcessInfo *This,
+ /* [retval][out] */ COREWEBVIEW2_PROCESS_KIND *kind);
+
+ END_INTERFACE
+ } ICoreWebView2ProcessInfoVtbl;
+
+ interface ICoreWebView2ProcessInfo
+ {
+ CONST_VTBL struct ICoreWebView2ProcessInfoVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProcessInfo_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProcessInfo_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProcessInfo_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProcessInfo_get_ProcessId(This, value) \
+ ((This)->lpVtbl->get_ProcessId(This, value))
+
+#define ICoreWebView2ProcessInfo_get_Kind(This, kind) \
+ ((This)->lpVtbl->get_Kind(This, kind))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProcessInfo_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile = {0x79110ad3, 0xcd5d, 0x4373, {0x8b, 0xc3, 0xc6, 0x06, 0x58, 0xf1, 0x7a, 0x5f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("79110ad3-cd5d-4373-8bc3-c60658f17a5f")
+ ICoreWebView2Profile : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ProfileName(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsInPrivateModeEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ProfilePath(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DefaultDownloadFolderPath(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_DefaultDownloadFolderPath(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PreferredColorScheme(
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PreferredColorScheme(
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProfileVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ END_INTERFACE
+ } ICoreWebView2ProfileVtbl;
+
+ interface ICoreWebView2Profile
+ {
+ CONST_VTBL struct ICoreWebView2ProfileVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile2_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile2 = {0xfa740d4b, 0x5eae, 0x4344, {0xa8, 0xad, 0x74, 0xbe, 0x31, 0x92, 0x53, 0x97}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fa740d4b-5eae-4344-a8ad-74be31925397")
+ ICoreWebView2Profile2 : public ICoreWebView2Profile
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ClearBrowsingData(
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearBrowsingDataInTimeRange(
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearBrowsingDataAll(
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Profile2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile2 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile2 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile2 *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile2 *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingData)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingData)(
+ ICoreWebView2Profile2 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataInTimeRange)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataInTimeRange)(
+ ICoreWebView2Profile2 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataAll)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataAll)(
+ ICoreWebView2Profile2 *This,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2Profile2Vtbl;
+
+ interface ICoreWebView2Profile2
+ {
+ CONST_VTBL struct ICoreWebView2Profile2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile2_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile2_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile2_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile2_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile2_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile2_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile2_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile2_ClearBrowsingData(This, dataKinds, handler) \
+ ((This)->lpVtbl->ClearBrowsingData(This, dataKinds, handler))
+
+#define ICoreWebView2Profile2_ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler))
+
+#define ICoreWebView2Profile2_ClearBrowsingDataAll(This, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataAll(This, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ClearBrowsingDataCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ClearBrowsingDataCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ClearBrowsingDataCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ClearBrowsingDataCompletedHandler = {0xe9710a06, 0x1d1d, 0x49b2, {0x82, 0x34, 0x22, 0x6f, 0x35, 0x84, 0x6a, 0xe5}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e9710a06-1d1d-49b2-8234-226f35846ae5")
+ ICoreWebView2ClearBrowsingDataCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ClearBrowsingDataCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ClearBrowsingDataCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ClearBrowsingDataCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ClearBrowsingDataCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ClearBrowsingDataCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ClearBrowsingDataCompletedHandler *This,
+ /* [in] */ HRESULT errorCode);
+
+ END_INTERFACE
+ } ICoreWebView2ClearBrowsingDataCompletedHandlerVtbl;
+
+ interface ICoreWebView2ClearBrowsingDataCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2ClearBrowsingDataCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ClearBrowsingDataCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ClearBrowsingDataCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ClearBrowsingDataCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ClearBrowsingDataCompletedHandler_Invoke(This, errorCode) \
+ ((This)->lpVtbl->Invoke(This, errorCode))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ClearBrowsingDataCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile3_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile3 = {0xb188e659, 0x5685, 0x4e05, {0xbd, 0xba, 0xfc, 0x64, 0x0e, 0x0f, 0x19, 0x92}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("b188e659-5685-4e05-bdba-fc640e0f1992")
+ ICoreWebView2Profile3 : public ICoreWebView2Profile2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_PreferredTrackingPreventionLevel(
+ /* [retval][out] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_PreferredTrackingPreventionLevel(
+ /* [in] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Profile3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile3 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile3 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile3 *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile3 *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingData)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingData)(
+ ICoreWebView2Profile3 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataInTimeRange)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataInTimeRange)(
+ ICoreWebView2Profile3 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataAll)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataAll)(
+ ICoreWebView2Profile3 *This,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, get_PreferredTrackingPreventionLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile3 *This,
+ /* [retval][out] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, put_PreferredTrackingPreventionLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile3 *This,
+ /* [in] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value);
+
+ END_INTERFACE
+ } ICoreWebView2Profile3Vtbl;
+
+ interface ICoreWebView2Profile3
+ {
+ CONST_VTBL struct ICoreWebView2Profile3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile3_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile3_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile3_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile3_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile3_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile3_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile3_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile3_ClearBrowsingData(This, dataKinds, handler) \
+ ((This)->lpVtbl->ClearBrowsingData(This, dataKinds, handler))
+
+#define ICoreWebView2Profile3_ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler))
+
+#define ICoreWebView2Profile3_ClearBrowsingDataAll(This, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataAll(This, handler))
+
+#define ICoreWebView2Profile3_get_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->get_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile3_put_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->put_PreferredTrackingPreventionLevel(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile4_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile4 = {0x8f4ae680, 0x192e, 0x4ec8, {0x83, 0x3a, 0x21, 0xcf, 0xad, 0xae, 0xf6, 0x28}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8f4ae680-192e-4ec8-833a-21cfadaef628")
+ ICoreWebView2Profile4 : public ICoreWebView2Profile3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetPermissionState(
+ /* [in] */ COREWEBVIEW2_PERMISSION_KIND PermissionKind,
+ /* [in] */ LPCWSTR origin,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE State,
+ /* [in] */ ICoreWebView2SetPermissionStateCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNonDefaultPermissionSettings(
+ /* [in] */ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Profile4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile4 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile4 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile4 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile4 *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingData)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingData)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataInTimeRange)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataInTimeRange)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataAll)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataAll)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, get_PreferredTrackingPreventionLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile4 *This,
+ /* [retval][out] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, put_PreferredTrackingPreventionLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, SetPermissionState)
+ HRESULT(STDMETHODCALLTYPE *SetPermissionState)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_KIND PermissionKind,
+ /* [in] */ LPCWSTR origin,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE State,
+ /* [in] */ ICoreWebView2SetPermissionStateCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, GetNonDefaultPermissionSettings)
+ HRESULT(STDMETHODCALLTYPE *GetNonDefaultPermissionSettings)(
+ ICoreWebView2Profile4 *This,
+ /* [in] */ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2Profile4Vtbl;
+
+ interface ICoreWebView2Profile4
+ {
+ CONST_VTBL struct ICoreWebView2Profile4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile4_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile4_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile4_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile4_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile4_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile4_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile4_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile4_ClearBrowsingData(This, dataKinds, handler) \
+ ((This)->lpVtbl->ClearBrowsingData(This, dataKinds, handler))
+
+#define ICoreWebView2Profile4_ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler))
+
+#define ICoreWebView2Profile4_ClearBrowsingDataAll(This, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataAll(This, handler))
+
+#define ICoreWebView2Profile4_get_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->get_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile4_put_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->put_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile4_SetPermissionState(This, PermissionKind, origin, State, handler) \
+ ((This)->lpVtbl->SetPermissionState(This, PermissionKind, origin, State, handler))
+
+#define ICoreWebView2Profile4_GetNonDefaultPermissionSettings(This, handler) \
+ ((This)->lpVtbl->GetNonDefaultPermissionSettings(This, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SetPermissionStateCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2SetPermissionStateCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SetPermissionStateCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SetPermissionStateCompletedHandler = {0xfc77fb30, 0x9c9e, 0x4076, {0xb8, 0xc7, 0x76, 0x44, 0xa7, 0x03, 0xca, 0x1b}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fc77fb30-9c9e-4076-b8c7-7644a703ca1b")
+ ICoreWebView2SetPermissionStateCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SetPermissionStateCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SetPermissionStateCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SetPermissionStateCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SetPermissionStateCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SetPermissionStateCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2SetPermissionStateCompletedHandler *This,
+ /* [in] */ HRESULT errorCode);
+
+ END_INTERFACE
+ } ICoreWebView2SetPermissionStateCompletedHandlerVtbl;
+
+ interface ICoreWebView2SetPermissionStateCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2SetPermissionStateCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SetPermissionStateCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SetPermissionStateCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SetPermissionStateCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SetPermissionStateCompletedHandler_Invoke(This, errorCode) \
+ ((This)->lpVtbl->Invoke(This, errorCode))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SetPermissionStateCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler = {0x38274481, 0xa15c, 0x4563, {0x94, 0xcf, 0x99, 0x0e, 0xdc, 0x9a, 0xeb, 0x95}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("38274481-a15c-4563-94cf-990edc9aeb95")
+ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2PermissionSettingCollectionView * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2PermissionSettingCollectionView *result);
+
+ END_INTERFACE
+ } ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandlerVtbl;
+
+ interface ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile5_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile5_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile5 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile5 = {0x2ee5b76e, 0x6e80, 0x4df2, {0xbc, 0xd3, 0xd4, 0xec, 0x33, 0x40, 0xa0, 0x1b}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2ee5b76e-6e80-4df2-bcd3-d4ec3340a01b")
+ ICoreWebView2Profile5 : public ICoreWebView2Profile4
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CookieManager(
+ /* [retval][out] */ ICoreWebView2CookieManager * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Profile5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile5 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile5 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile5 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile5 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile5 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile5 *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingData)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingData)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataInTimeRange)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataInTimeRange)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataAll)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataAll)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, get_PreferredTrackingPreventionLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile5 *This,
+ /* [retval][out] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, put_PreferredTrackingPreventionLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, SetPermissionState)
+ HRESULT(STDMETHODCALLTYPE *SetPermissionState)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_KIND PermissionKind,
+ /* [in] */ LPCWSTR origin,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE State,
+ /* [in] */ ICoreWebView2SetPermissionStateCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, GetNonDefaultPermissionSettings)
+ HRESULT(STDMETHODCALLTYPE *GetNonDefaultPermissionSettings)(
+ ICoreWebView2Profile5 *This,
+ /* [in] */ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile5, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2Profile5 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **value);
+
+ END_INTERFACE
+ } ICoreWebView2Profile5Vtbl;
+
+ interface ICoreWebView2Profile5
+ {
+ CONST_VTBL struct ICoreWebView2Profile5Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile5_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile5_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile5_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile5_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile5_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile5_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile5_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile5_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile5_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile5_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile5_ClearBrowsingData(This, dataKinds, handler) \
+ ((This)->lpVtbl->ClearBrowsingData(This, dataKinds, handler))
+
+#define ICoreWebView2Profile5_ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler))
+
+#define ICoreWebView2Profile5_ClearBrowsingDataAll(This, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataAll(This, handler))
+
+#define ICoreWebView2Profile5_get_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->get_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile5_put_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->put_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile5_SetPermissionState(This, PermissionKind, origin, State, handler) \
+ ((This)->lpVtbl->SetPermissionState(This, PermissionKind, origin, State, handler))
+
+#define ICoreWebView2Profile5_GetNonDefaultPermissionSettings(This, handler) \
+ ((This)->lpVtbl->GetNonDefaultPermissionSettings(This, handler))
+
+#define ICoreWebView2Profile5_get_CookieManager(This, value) \
+ ((This)->lpVtbl->get_CookieManager(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile5_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile6_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile6_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile6 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile6 = {0xBD82FA6A, 0x1D65, 0x4C33, {0xB2, 0xB4, 0x03, 0x93, 0x02, 0x0C, 0xC6, 0x1B}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("BD82FA6A-1D65-4C33-B2B4-0393020CC61B")
+ ICoreWebView2Profile6 : public ICoreWebView2Profile5
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsPasswordAutosaveEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsPasswordAutosaveEnabled(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsGeneralAutofillEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsGeneralAutofillEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Profile6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile6 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingData)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingData)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataInTimeRange)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataInTimeRange)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataAll)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataAll)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, get_PreferredTrackingPreventionLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, put_PreferredTrackingPreventionLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, SetPermissionState)
+ HRESULT(STDMETHODCALLTYPE *SetPermissionState)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_KIND PermissionKind,
+ /* [in] */ LPCWSTR origin,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE State,
+ /* [in] */ ICoreWebView2SetPermissionStateCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, GetNonDefaultPermissionSettings)
+ HRESULT(STDMETHODCALLTYPE *GetNonDefaultPermissionSettings)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile5, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Profile6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Profile6 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Profile6Vtbl;
+
+ interface ICoreWebView2Profile6
+ {
+ CONST_VTBL struct ICoreWebView2Profile6Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile6_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile6_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile6_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile6_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile6_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile6_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile6_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile6_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile6_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile6_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile6_ClearBrowsingData(This, dataKinds, handler) \
+ ((This)->lpVtbl->ClearBrowsingData(This, dataKinds, handler))
+
+#define ICoreWebView2Profile6_ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler))
+
+#define ICoreWebView2Profile6_ClearBrowsingDataAll(This, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataAll(This, handler))
+
+#define ICoreWebView2Profile6_get_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->get_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile6_put_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->put_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile6_SetPermissionState(This, PermissionKind, origin, State, handler) \
+ ((This)->lpVtbl->SetPermissionState(This, PermissionKind, origin, State, handler))
+
+#define ICoreWebView2Profile6_GetNonDefaultPermissionSettings(This, handler) \
+ ((This)->lpVtbl->GetNonDefaultPermissionSettings(This, handler))
+
+#define ICoreWebView2Profile6_get_CookieManager(This, value) \
+ ((This)->lpVtbl->get_CookieManager(This, value))
+
+#define ICoreWebView2Profile6_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Profile6_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Profile6_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Profile6_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile6_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile7_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile7_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile7 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile7 = {0x7b4c7906, 0xa1aa, 0x4cb4, {0xb7, 0x23, 0xdb, 0x09, 0xf8, 0x13, 0xd5, 0x41}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7b4c7906-a1aa-4cb4-b723-db09f813d541")
+ ICoreWebView2Profile7 : public ICoreWebView2Profile6
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AddBrowserExtension(
+ /* [in] */ LPCWSTR extensionFolderPath,
+ /* [in] */ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler * handler) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBrowserExtensions(
+ /* [in] */ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Profile7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile7 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingData)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingData)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataInTimeRange)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataInTimeRange)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataAll)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataAll)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, get_PreferredTrackingPreventionLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, put_PreferredTrackingPreventionLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, SetPermissionState)
+ HRESULT(STDMETHODCALLTYPE *SetPermissionState)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_KIND PermissionKind,
+ /* [in] */ LPCWSTR origin,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE State,
+ /* [in] */ ICoreWebView2SetPermissionStateCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, GetNonDefaultPermissionSettings)
+ HRESULT(STDMETHODCALLTYPE *GetNonDefaultPermissionSettings)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile5, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Profile7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile7, AddBrowserExtension)
+ HRESULT(STDMETHODCALLTYPE *AddBrowserExtension)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ LPCWSTR extensionFolderPath,
+ /* [in] */ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile7, GetBrowserExtensions)
+ HRESULT(STDMETHODCALLTYPE *GetBrowserExtensions)(
+ ICoreWebView2Profile7 *This,
+ /* [in] */ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2Profile7Vtbl;
+
+ interface ICoreWebView2Profile7
+ {
+ CONST_VTBL struct ICoreWebView2Profile7Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile7_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile7_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile7_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile7_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile7_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile7_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile7_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile7_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile7_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile7_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile7_ClearBrowsingData(This, dataKinds, handler) \
+ ((This)->lpVtbl->ClearBrowsingData(This, dataKinds, handler))
+
+#define ICoreWebView2Profile7_ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler))
+
+#define ICoreWebView2Profile7_ClearBrowsingDataAll(This, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataAll(This, handler))
+
+#define ICoreWebView2Profile7_get_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->get_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile7_put_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->put_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile7_SetPermissionState(This, PermissionKind, origin, State, handler) \
+ ((This)->lpVtbl->SetPermissionState(This, PermissionKind, origin, State, handler))
+
+#define ICoreWebView2Profile7_GetNonDefaultPermissionSettings(This, handler) \
+ ((This)->lpVtbl->GetNonDefaultPermissionSettings(This, handler))
+
+#define ICoreWebView2Profile7_get_CookieManager(This, value) \
+ ((This)->lpVtbl->get_CookieManager(This, value))
+
+#define ICoreWebView2Profile7_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Profile7_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Profile7_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Profile7_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Profile7_AddBrowserExtension(This, extensionFolderPath, handler) \
+ ((This)->lpVtbl->AddBrowserExtension(This, extensionFolderPath, handler))
+
+#define ICoreWebView2Profile7_GetBrowserExtensions(This, handler) \
+ ((This)->lpVtbl->GetBrowserExtensions(This, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile7_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProfileAddBrowserExtensionCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProfileAddBrowserExtensionCompletedHandler = {0xdf1aab27, 0x82b9, 0x4ab6, {0xaa, 0xe8, 0x01, 0x7a, 0x49, 0x39, 0x8c, 0x14}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("df1aab27-82b9-4ab6-aae8-017a49398c14")
+ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2BrowserExtension * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProfileAddBrowserExtensionCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProfileAddBrowserExtensionCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2BrowserExtension *result);
+
+ END_INTERFACE
+ } ICoreWebView2ProfileAddBrowserExtensionCompletedHandlerVtbl;
+
+ interface ICoreWebView2ProfileAddBrowserExtensionCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2ProfileAddBrowserExtensionCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProfileAddBrowserExtensionCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler = {0xfce16a1c, 0xf107, 0x4601, {0x8b, 0x75, 0xfc, 0x49, 0x40, 0xae, 0x25, 0xd0}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fce16a1c-f107-4601-8b75-fc4940ae25d0")
+ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2BrowserExtensionList * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProfileGetBrowserExtensionsCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ ICoreWebView2BrowserExtensionList *result);
+
+ END_INTERFACE
+ } ICoreWebView2ProfileGetBrowserExtensionsCompletedHandlerVtbl;
+
+ interface ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2ProfileGetBrowserExtensionsCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2BrowserExtensionList_INTERFACE_DEFINED__
+#define __ICoreWebView2BrowserExtensionList_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2BrowserExtensionList */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2BrowserExtensionList = {0x2ef3d2dc, 0xbd5f, 0x4f4d, {0x90, 0xaf, 0xfd, 0x67, 0x79, 0x8f, 0x0c, 0x2f}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2ef3d2dc-bd5f-4f4d-90af-fd67798f0c2f")
+ ICoreWebView2BrowserExtensionList : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2BrowserExtension * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2BrowserExtensionListVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2BrowserExtensionList *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2BrowserExtensionList *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2BrowserExtensionList *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtensionList, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2BrowserExtensionList *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2BrowserExtensionList, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2BrowserExtensionList *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2BrowserExtension **value);
+
+ END_INTERFACE
+ } ICoreWebView2BrowserExtensionListVtbl;
+
+ interface ICoreWebView2BrowserExtensionList
+ {
+ CONST_VTBL struct ICoreWebView2BrowserExtensionListVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2BrowserExtensionList_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2BrowserExtensionList_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2BrowserExtensionList_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2BrowserExtensionList_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#define ICoreWebView2BrowserExtensionList_GetValueAtIndex(This, index, value) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2BrowserExtensionList_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Profile8_INTERFACE_DEFINED__
+#define __ICoreWebView2Profile8_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Profile8 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Profile8 = {0xfbf70c2f, 0xeb1f, 0x4383, {0x85, 0xa0, 0x16, 0x3e, 0x92, 0x04, 0x40, 0x11}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fbf70c2f-eb1f-4383-85a0-163e92044011")
+ ICoreWebView2Profile8 : public ICoreWebView2Profile7
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Delete(void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_Deleted(
+ /* [in] */ ICoreWebView2ProfileDeletedEventHandler * eventHandler,
+ /* [out] */ EventRegistrationToken * token) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE remove_Deleted(
+ /* [in] */ EventRegistrationToken token) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Profile8Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Profile8 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Profile8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfileName)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfileName)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_IsInPrivateModeEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsInPrivateModeEnabled)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_ProfilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ProfilePath)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_DefaultDownloadFolderPath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_DefaultDownloadFolderPath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_DefaultDownloadFolderPath)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, get_PreferredColorScheme)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredColorScheme)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile, put_PreferredColorScheme)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredColorScheme)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ COREWEBVIEW2_PREFERRED_COLOR_SCHEME value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingData)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingData)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataInTimeRange)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataInTimeRange)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ COREWEBVIEW2_BROWSING_DATA_KINDS dataKinds,
+ /* [in] */ double startTime,
+ /* [in] */ double endTime,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile2, ClearBrowsingDataAll)
+ HRESULT(STDMETHODCALLTYPE *ClearBrowsingDataAll)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ ICoreWebView2ClearBrowsingDataCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, get_PreferredTrackingPreventionLevel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile3, put_PreferredTrackingPreventionLevel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_PreferredTrackingPreventionLevel)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ COREWEBVIEW2_TRACKING_PREVENTION_LEVEL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, SetPermissionState)
+ HRESULT(STDMETHODCALLTYPE *SetPermissionState)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ COREWEBVIEW2_PERMISSION_KIND PermissionKind,
+ /* [in] */ LPCWSTR origin,
+ /* [in] */ COREWEBVIEW2_PERMISSION_STATE State,
+ /* [in] */ ICoreWebView2SetPermissionStateCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile4, GetNonDefaultPermissionSettings)
+ HRESULT(STDMETHODCALLTYPE *GetNonDefaultPermissionSettings)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ ICoreWebView2GetNonDefaultPermissionSettingsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile5, get_CookieManager)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CookieManager)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ ICoreWebView2CookieManager **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Profile8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile6, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile7, AddBrowserExtension)
+ HRESULT(STDMETHODCALLTYPE *AddBrowserExtension)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ LPCWSTR extensionFolderPath,
+ /* [in] */ ICoreWebView2ProfileAddBrowserExtensionCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile7, GetBrowserExtensions)
+ HRESULT(STDMETHODCALLTYPE *GetBrowserExtensions)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ ICoreWebView2ProfileGetBrowserExtensionsCompletedHandler *handler);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile8, Delete)
+ HRESULT(STDMETHODCALLTYPE *Delete)(
+ ICoreWebView2Profile8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile8, add_Deleted)
+ HRESULT(STDMETHODCALLTYPE *add_Deleted)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ ICoreWebView2ProfileDeletedEventHandler *eventHandler,
+ /* [out] */ EventRegistrationToken *token);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Profile8, remove_Deleted)
+ HRESULT(STDMETHODCALLTYPE *remove_Deleted)(
+ ICoreWebView2Profile8 *This,
+ /* [in] */ EventRegistrationToken token);
+
+ END_INTERFACE
+ } ICoreWebView2Profile8Vtbl;
+
+ interface ICoreWebView2Profile8
+ {
+ CONST_VTBL struct ICoreWebView2Profile8Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Profile8_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Profile8_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Profile8_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Profile8_get_ProfileName(This, value) \
+ ((This)->lpVtbl->get_ProfileName(This, value))
+
+#define ICoreWebView2Profile8_get_IsInPrivateModeEnabled(This, value) \
+ ((This)->lpVtbl->get_IsInPrivateModeEnabled(This, value))
+
+#define ICoreWebView2Profile8_get_ProfilePath(This, value) \
+ ((This)->lpVtbl->get_ProfilePath(This, value))
+
+#define ICoreWebView2Profile8_get_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->get_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile8_put_DefaultDownloadFolderPath(This, value) \
+ ((This)->lpVtbl->put_DefaultDownloadFolderPath(This, value))
+
+#define ICoreWebView2Profile8_get_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->get_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile8_put_PreferredColorScheme(This, value) \
+ ((This)->lpVtbl->put_PreferredColorScheme(This, value))
+
+#define ICoreWebView2Profile8_ClearBrowsingData(This, dataKinds, handler) \
+ ((This)->lpVtbl->ClearBrowsingData(This, dataKinds, handler))
+
+#define ICoreWebView2Profile8_ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataInTimeRange(This, dataKinds, startTime, endTime, handler))
+
+#define ICoreWebView2Profile8_ClearBrowsingDataAll(This, handler) \
+ ((This)->lpVtbl->ClearBrowsingDataAll(This, handler))
+
+#define ICoreWebView2Profile8_get_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->get_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile8_put_PreferredTrackingPreventionLevel(This, value) \
+ ((This)->lpVtbl->put_PreferredTrackingPreventionLevel(This, value))
+
+#define ICoreWebView2Profile8_SetPermissionState(This, PermissionKind, origin, State, handler) \
+ ((This)->lpVtbl->SetPermissionState(This, PermissionKind, origin, State, handler))
+
+#define ICoreWebView2Profile8_GetNonDefaultPermissionSettings(This, handler) \
+ ((This)->lpVtbl->GetNonDefaultPermissionSettings(This, handler))
+
+#define ICoreWebView2Profile8_get_CookieManager(This, value) \
+ ((This)->lpVtbl->get_CookieManager(This, value))
+
+#define ICoreWebView2Profile8_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Profile8_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Profile8_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Profile8_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Profile8_AddBrowserExtension(This, extensionFolderPath, handler) \
+ ((This)->lpVtbl->AddBrowserExtension(This, extensionFolderPath, handler))
+
+#define ICoreWebView2Profile8_GetBrowserExtensions(This, handler) \
+ ((This)->lpVtbl->GetBrowserExtensions(This, handler))
+
+#define ICoreWebView2Profile8_Delete(This) \
+ ((This)->lpVtbl->Delete(This))
+
+#define ICoreWebView2Profile8_add_Deleted(This, eventHandler, token) \
+ ((This)->lpVtbl->add_Deleted(This, eventHandler, token))
+
+#define ICoreWebView2Profile8_remove_Deleted(This, token) \
+ ((This)->lpVtbl->remove_Deleted(This, token))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Profile8_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ProfileDeletedEventHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2ProfileDeletedEventHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ProfileDeletedEventHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ProfileDeletedEventHandler = {0xdf35055d, 0x772e, 0x4dbe, {0xb7, 0x43, 0x5f, 0xbf, 0x74, 0xa2, 0xb2, 0x58}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("df35055d-772e-4dbe-b743-5fbf74a2b258")
+ ICoreWebView2ProfileDeletedEventHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ ICoreWebView2Profile * sender,
+ /* [in] */ IUnknown * args) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ProfileDeletedEventHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ProfileDeletedEventHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ProfileDeletedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ProfileDeletedEventHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ProfileDeletedEventHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2ProfileDeletedEventHandler *This,
+ /* [in] */ ICoreWebView2Profile *sender,
+ /* [in] */ IUnknown *args);
+
+ END_INTERFACE
+ } ICoreWebView2ProfileDeletedEventHandlerVtbl;
+
+ interface ICoreWebView2ProfileDeletedEventHandler
+ {
+ CONST_VTBL struct ICoreWebView2ProfileDeletedEventHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ProfileDeletedEventHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ProfileDeletedEventHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ProfileDeletedEventHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ProfileDeletedEventHandler_Invoke(This, sender, args) \
+ ((This)->lpVtbl->Invoke(This, sender, args))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ProfileDeletedEventHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveAsUIShowingEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2SaveAsUIShowingEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SaveAsUIShowingEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SaveAsUIShowingEventArgs = {0x55902952, 0x0e0d, 0x5aaa, {0xa7, 0xd0, 0xe8, 0x33, 0xcd, 0xb3, 0x4f, 0x62}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("55902952-0e0d-5aaa-a7d0-e833cdb34f62")
+ ICoreWebView2SaveAsUIShowingEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ContentMimeType(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Cancel(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cancel(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_SuppressDefaultDialog(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SuppressDefaultDialog(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_SaveAsFilePath(
+ /* [in] */ LPCWSTR value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SaveAsFilePath(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AllowReplace(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AllowReplace(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Kind(
+ /* [in] */ COREWEBVIEW2_SAVE_AS_KIND value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Kind(
+ /* [retval][out] */ COREWEBVIEW2_SAVE_AS_KIND * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SaveAsUIShowingEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, get_ContentMimeType)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ContentMimeType)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, put_SuppressDefaultDialog)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_SuppressDefaultDialog)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, get_SuppressDefaultDialog)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SuppressDefaultDialog)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, put_SaveAsFilePath)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_SaveAsFilePath)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, get_SaveAsFilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SaveAsFilePath)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, put_AllowReplace)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AllowReplace)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, get_AllowReplace)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AllowReplace)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, put_Kind)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Kind)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [in] */ COREWEBVIEW2_SAVE_AS_KIND value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveAsUIShowingEventArgs, get_Kind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Kind)(
+ ICoreWebView2SaveAsUIShowingEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_SAVE_AS_KIND *value);
+
+ END_INTERFACE
+ } ICoreWebView2SaveAsUIShowingEventArgsVtbl;
+
+ interface ICoreWebView2SaveAsUIShowingEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2SaveAsUIShowingEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_get_ContentMimeType(This, value) \
+ ((This)->lpVtbl->get_ContentMimeType(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_put_Cancel(This, value) \
+ ((This)->lpVtbl->put_Cancel(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_get_Cancel(This, value) \
+ ((This)->lpVtbl->get_Cancel(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_put_SuppressDefaultDialog(This, value) \
+ ((This)->lpVtbl->put_SuppressDefaultDialog(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_get_SuppressDefaultDialog(This, value) \
+ ((This)->lpVtbl->get_SuppressDefaultDialog(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_GetDeferral(This, value) \
+ ((This)->lpVtbl->GetDeferral(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_put_SaveAsFilePath(This, value) \
+ ((This)->lpVtbl->put_SaveAsFilePath(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_get_SaveAsFilePath(This, value) \
+ ((This)->lpVtbl->get_SaveAsFilePath(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_put_AllowReplace(This, value) \
+ ((This)->lpVtbl->put_AllowReplace(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_get_AllowReplace(This, value) \
+ ((This)->lpVtbl->get_AllowReplace(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_put_Kind(This, value) \
+ ((This)->lpVtbl->put_Kind(This, value))
+
+#define ICoreWebView2SaveAsUIShowingEventArgs_get_Kind(This, value) \
+ ((This)->lpVtbl->get_Kind(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SaveAsUIShowingEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SaveFileSecurityCheckStartingEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2SaveFileSecurityCheckStartingEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SaveFileSecurityCheckStartingEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SaveFileSecurityCheckStartingEventArgs = {0xcf4ff1d1, 0x5a67, 0x5660, {0x8d, 0x63, 0xef, 0x69, 0x98, 0x81, 0xea, 0x65}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("cf4ff1d1-5a67-5660-8d63-ef699881ea65")
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_CancelSave(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_CancelSave(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DocumentOriginUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FileExtension(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FilePath(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_SuppressDefaultPolicy(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_SuppressDefaultPolicy(
+ /* [in] */ BOOL value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SaveFileSecurityCheckStartingEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, get_CancelSave)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_CancelSave)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, put_CancelSave)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_CancelSave)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, get_DocumentOriginUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DocumentOriginUri)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, get_FileExtension)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FileExtension)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, get_FilePath)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FilePath)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, get_SuppressDefaultPolicy)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_SuppressDefaultPolicy)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, put_SuppressDefaultPolicy)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_SuppressDefaultPolicy)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SaveFileSecurityCheckStartingEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2SaveFileSecurityCheckStartingEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **value);
+
+ END_INTERFACE
+ } ICoreWebView2SaveFileSecurityCheckStartingEventArgsVtbl;
+
+ interface ICoreWebView2SaveFileSecurityCheckStartingEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2SaveFileSecurityCheckStartingEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_get_CancelSave(This, value) \
+ ((This)->lpVtbl->get_CancelSave(This, value))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_put_CancelSave(This, value) \
+ ((This)->lpVtbl->put_CancelSave(This, value))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_get_DocumentOriginUri(This, value) \
+ ((This)->lpVtbl->get_DocumentOriginUri(This, value))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_get_FileExtension(This, value) \
+ ((This)->lpVtbl->get_FileExtension(This, value))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_get_FilePath(This, value) \
+ ((This)->lpVtbl->get_FilePath(This, value))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_get_SuppressDefaultPolicy(This, value) \
+ ((This)->lpVtbl->get_SuppressDefaultPolicy(This, value))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_put_SuppressDefaultPolicy(This, value) \
+ ((This)->lpVtbl->put_SuppressDefaultPolicy(This, value))
+
+#define ICoreWebView2SaveFileSecurityCheckStartingEventArgs_GetDeferral(This, value) \
+ ((This)->lpVtbl->GetDeferral(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SaveFileSecurityCheckStartingEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ScreenCaptureStartingEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2ScreenCaptureStartingEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ScreenCaptureStartingEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ScreenCaptureStartingEventArgs = {0x892c03fd, 0xaee3, 0x5eba, {0xa1, 0xfa, 0x6f, 0xd2, 0xf6, 0x48, 0x4b, 0x2b}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("892c03fd-aee3-5eba-a1fa-6fd2f6484b2b")
+ ICoreWebView2ScreenCaptureStartingEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Cancel(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Cancel(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Handled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Handled(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_OriginalSourceFrameInfo(
+ /* [retval][out] */ ICoreWebView2FrameInfo * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ScreenCaptureStartingEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScreenCaptureStartingEventArgs, get_Cancel)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Cancel)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScreenCaptureStartingEventArgs, put_Cancel)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Cancel)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScreenCaptureStartingEventArgs, get_Handled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Handled)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScreenCaptureStartingEventArgs, put_Handled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Handled)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScreenCaptureStartingEventArgs, get_OriginalSourceFrameInfo)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_OriginalSourceFrameInfo)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This,
+ /* [retval][out] */ ICoreWebView2FrameInfo **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScreenCaptureStartingEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2ScreenCaptureStartingEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **value);
+
+ END_INTERFACE
+ } ICoreWebView2ScreenCaptureStartingEventArgsVtbl;
+
+ interface ICoreWebView2ScreenCaptureStartingEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2ScreenCaptureStartingEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_get_Cancel(This, value) \
+ ((This)->lpVtbl->get_Cancel(This, value))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_put_Cancel(This, value) \
+ ((This)->lpVtbl->put_Cancel(This, value))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_get_Handled(This, value) \
+ ((This)->lpVtbl->get_Handled(This, value))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_put_Handled(This, value) \
+ ((This)->lpVtbl->put_Handled(This, value))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_get_OriginalSourceFrameInfo(This, value) \
+ ((This)->lpVtbl->get_OriginalSourceFrameInfo(This, value))
+
+#define ICoreWebView2ScreenCaptureStartingEventArgs_GetDeferral(This, value) \
+ ((This)->lpVtbl->GetDeferral(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ScreenCaptureStartingEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ScriptDialogOpeningEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2ScriptDialogOpeningEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ScriptDialogOpeningEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ScriptDialogOpeningEventArgs = {0x7390bb70, 0xabe0, 0x4843, {0x95, 0x29, 0xf1, 0x43, 0xb3, 0x1b, 0x03, 0xd6}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7390bb70-abe0-4843-9529-f143b31b03d6")
+ ICoreWebView2ScriptDialogOpeningEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * uri) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Kind(
+ /* [retval][out] */ COREWEBVIEW2_SCRIPT_DIALOG_KIND * kind) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Message(
+ /* [retval][out] */ LPWSTR * message) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Accept(void) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_DefaultText(
+ /* [retval][out] */ LPWSTR * defaultText) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ResultText(
+ /* [retval][out] */ LPWSTR * resultText) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ResultText(
+ /* [in] */ LPCWSTR resultText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ScriptDialogOpeningEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, get_Kind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Kind)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_SCRIPT_DIALOG_KIND *kind);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, get_Message)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Message)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [retval][out] */ LPWSTR *message);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, Accept)
+ HRESULT(STDMETHODCALLTYPE *Accept)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, get_DefaultText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_DefaultText)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [retval][out] */ LPWSTR *defaultText);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, get_ResultText)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ResultText)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [retval][out] */ LPWSTR *resultText);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, put_ResultText)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ResultText)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [in] */ LPCWSTR resultText);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptDialogOpeningEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2ScriptDialogOpeningEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2ScriptDialogOpeningEventArgsVtbl;
+
+ interface ICoreWebView2ScriptDialogOpeningEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2ScriptDialogOpeningEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_get_Kind(This, kind) \
+ ((This)->lpVtbl->get_Kind(This, kind))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_get_Message(This, message) \
+ ((This)->lpVtbl->get_Message(This, message))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_Accept(This) \
+ ((This)->lpVtbl->Accept(This))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_get_DefaultText(This, defaultText) \
+ ((This)->lpVtbl->get_DefaultText(This, defaultText))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_get_ResultText(This, resultText) \
+ ((This)->lpVtbl->get_ResultText(This, resultText))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_put_ResultText(This, resultText) \
+ ((This)->lpVtbl->put_ResultText(This, resultText))
+
+#define ICoreWebView2ScriptDialogOpeningEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ScriptDialogOpeningEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ScriptException_INTERFACE_DEFINED__
+#define __ICoreWebView2ScriptException_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ScriptException */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ScriptException = {0x054DAE00, 0x84A3, 0x49FF, {0xBC, 0x17, 0x40, 0x12, 0xA9, 0x0B, 0xC9, 0xFD}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("054DAE00-84A3-49FF-BC17-4012A90BC9FD")
+ ICoreWebView2ScriptException : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_LineNumber(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ColumnNumber(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Name(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Message(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ToJson(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ScriptExceptionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ScriptException *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ScriptException *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ScriptException *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptException, get_LineNumber)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_LineNumber)(
+ ICoreWebView2ScriptException *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptException, get_ColumnNumber)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ColumnNumber)(
+ ICoreWebView2ScriptException *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptException, get_Name)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Name)(
+ ICoreWebView2ScriptException *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptException, get_Message)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Message)(
+ ICoreWebView2ScriptException *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ScriptException, get_ToJson)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ToJson)(
+ ICoreWebView2ScriptException *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2ScriptExceptionVtbl;
+
+ interface ICoreWebView2ScriptException
+ {
+ CONST_VTBL struct ICoreWebView2ScriptExceptionVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ScriptException_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ScriptException_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ScriptException_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ScriptException_get_LineNumber(This, value) \
+ ((This)->lpVtbl->get_LineNumber(This, value))
+
+#define ICoreWebView2ScriptException_get_ColumnNumber(This, value) \
+ ((This)->lpVtbl->get_ColumnNumber(This, value))
+
+#define ICoreWebView2ScriptException_get_Name(This, value) \
+ ((This)->lpVtbl->get_Name(This, value))
+
+#define ICoreWebView2ScriptException_get_Message(This, value) \
+ ((This)->lpVtbl->get_Message(This, value))
+
+#define ICoreWebView2ScriptException_get_ToJson(This, value) \
+ ((This)->lpVtbl->get_ToJson(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ScriptException_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2ServerCertificateErrorDetectedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2ServerCertificateErrorDetectedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2ServerCertificateErrorDetectedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2ServerCertificateErrorDetectedEventArgs = {0x012193ED, 0x7C13, 0x48FF, {0x96, 0x9D, 0xA8, 0x4C, 0x1F, 0x43, 0x2A, 0x14}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("012193ED-7C13-48FF-969D-A84C1F432A14")
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ErrorStatus(
+ /* [retval][out] */ COREWEBVIEW2_WEB_ERROR_STATUS * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_RequestUri(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ServerCertificate(
+ /* [retval][out] */ ICoreWebView2Certificate * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Action(
+ /* [retval][out] */ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Action(
+ /* [in] */ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2ServerCertificateErrorDetectedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ServerCertificateErrorDetectedEventArgs, get_ErrorStatus)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ErrorStatus)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_WEB_ERROR_STATUS *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ServerCertificateErrorDetectedEventArgs, get_RequestUri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RequestUri)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ServerCertificateErrorDetectedEventArgs, get_ServerCertificate)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ServerCertificate)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Certificate **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ServerCertificateErrorDetectedEventArgs, get_Action)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Action)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ServerCertificateErrorDetectedEventArgs, put_Action)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Action)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This,
+ /* [in] */ COREWEBVIEW2_SERVER_CERTIFICATE_ERROR_ACTION value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2ServerCertificateErrorDetectedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2ServerCertificateErrorDetectedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ END_INTERFACE
+ } ICoreWebView2ServerCertificateErrorDetectedEventArgsVtbl;
+
+ interface ICoreWebView2ServerCertificateErrorDetectedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2ServerCertificateErrorDetectedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_get_ErrorStatus(This, value) \
+ ((This)->lpVtbl->get_ErrorStatus(This, value))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_get_RequestUri(This, value) \
+ ((This)->lpVtbl->get_RequestUri(This, value))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_get_ServerCertificate(This, value) \
+ ((This)->lpVtbl->get_ServerCertificate(This, value))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_get_Action(This, value) \
+ ((This)->lpVtbl->get_Action(This, value))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_put_Action(This, value) \
+ ((This)->lpVtbl->put_Action(This, value))
+
+#define ICoreWebView2ServerCertificateErrorDetectedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2ServerCertificateErrorDetectedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings = {0xe562e4f0, 0xd7fa, 0x43ac, {0x8d, 0x71, 0xc0, 0x51, 0x50, 0x49, 0x9f, 0x00}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e562e4f0-d7fa-43ac-8d71-c05150499f00")
+ ICoreWebView2Settings : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsScriptEnabled(
+ /* [retval][out] */ BOOL * isScriptEnabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsScriptEnabled(
+ /* [in] */ BOOL isScriptEnabled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsWebMessageEnabled(
+ /* [retval][out] */ BOOL * isWebMessageEnabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsWebMessageEnabled(
+ /* [in] */ BOOL isWebMessageEnabled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AreDefaultScriptDialogsEnabled(
+ /* [retval][out] */ BOOL * areDefaultScriptDialogsEnabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AreDefaultScriptDialogsEnabled(
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsStatusBarEnabled(
+ /* [retval][out] */ BOOL * isStatusBarEnabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsStatusBarEnabled(
+ /* [in] */ BOOL isStatusBarEnabled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AreDevToolsEnabled(
+ /* [retval][out] */ BOOL * areDevToolsEnabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AreDevToolsEnabled(
+ /* [in] */ BOOL areDevToolsEnabled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AreDefaultContextMenusEnabled(
+ /* [retval][out] */ BOOL * enabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AreDefaultContextMenusEnabled(
+ /* [in] */ BOOL enabled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AreHostObjectsAllowed(
+ /* [retval][out] */ BOOL * allowed) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AreHostObjectsAllowed(
+ /* [in] */ BOOL allowed) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsZoomControlEnabled(
+ /* [retval][out] */ BOOL * enabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsZoomControlEnabled(
+ /* [in] */ BOOL enabled) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsBuiltInErrorPageEnabled(
+ /* [retval][out] */ BOOL * enabled) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsBuiltInErrorPageEnabled(
+ /* [in] */ BOOL enabled) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SettingsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings *This,
+ /* [in] */ BOOL enabled);
+
+ END_INTERFACE
+ } ICoreWebView2SettingsVtbl;
+
+ interface ICoreWebView2Settings
+ {
+ CONST_VTBL struct ICoreWebView2SettingsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings2_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings2 = {0xee9a0f68, 0xf46c, 0x4e32, {0xac, 0x23, 0xef, 0x8c, 0xac, 0x22, 0x4d, 0x2a}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ee9a0f68-f46c-4e32-ac23-ef8cac224d2a")
+ ICoreWebView2Settings2 : public ICoreWebView2Settings
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_UserAgent(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_UserAgent(
+ /* [in] */ LPCWSTR value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings2 *This,
+ /* [in] */ LPCWSTR value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings2Vtbl;
+
+ interface ICoreWebView2Settings2
+ {
+ CONST_VTBL struct ICoreWebView2Settings2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings2_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings2_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings2_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings2_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings2_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings2_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings2_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings2_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings2_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings2_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings2_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings2_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings2_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings2_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings2_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings2_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings2_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings2_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings2_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings2_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings3_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings3_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings3 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings3 = {0xfdb5ab74, 0xaf33, 0x4854, {0x84, 0xf0, 0x0a, 0x63, 0x1d, 0xeb, 0x5e, 0xba}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fdb5ab74-af33-4854-84f0-0a631deb5eba")
+ ICoreWebView2Settings3 : public ICoreWebView2Settings2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AreBrowserAcceleratorKeysEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_AreBrowserAcceleratorKeysEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings3 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings3 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, get_AreBrowserAcceleratorKeysEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, put_AreBrowserAcceleratorKeysEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings3 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings3Vtbl;
+
+ interface ICoreWebView2Settings3
+ {
+ CONST_VTBL struct ICoreWebView2Settings3Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings3_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings3_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings3_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings3_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings3_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings3_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings3_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings3_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings3_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings3_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings3_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings3_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings3_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings3_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings3_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings3_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings3_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings3_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings3_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings3_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings3_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings3_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings3_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#define ICoreWebView2Settings3_get_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings3_put_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings3_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings4_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings4_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings4 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings4 = {0xcb56846c, 0x4168, 0x4d53, {0xb0, 0x4f, 0x03, 0xb6, 0xd6, 0x79, 0x6f, 0xf2}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("cb56846c-4168-4d53-b04f-03b6d6796ff2")
+ ICoreWebView2Settings4 : public ICoreWebView2Settings3
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsPasswordAutosaveEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsPasswordAutosaveEnabled(
+ /* [in] */ BOOL value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsGeneralAutofillEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsGeneralAutofillEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings4 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings4 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, get_AreBrowserAcceleratorKeysEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, put_AreBrowserAcceleratorKeysEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings4 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings4Vtbl;
+
+ interface ICoreWebView2Settings4
+ {
+ CONST_VTBL struct ICoreWebView2Settings4Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings4_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings4_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings4_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings4_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings4_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings4_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings4_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings4_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings4_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings4_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings4_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings4_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings4_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings4_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings4_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings4_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings4_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings4_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings4_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings4_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings4_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings4_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings4_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#define ICoreWebView2Settings4_get_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings4_put_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings4_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings4_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings4_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings4_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings4_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings5_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings5_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings5 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings5 = {0x183e7052, 0x1d03, 0x43a0, {0xab, 0x99, 0x98, 0xe0, 0x43, 0xb6, 0x6b, 0x39}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("183e7052-1d03-43a0-ab99-98e043b66b39")
+ ICoreWebView2Settings5 : public ICoreWebView2Settings4
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsPinchZoomEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsPinchZoomEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings5 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings5 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, get_AreBrowserAcceleratorKeysEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, put_AreBrowserAcceleratorKeysEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, get_IsPinchZoomEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPinchZoomEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, put_IsPinchZoomEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPinchZoomEnabled)(
+ ICoreWebView2Settings5 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings5Vtbl;
+
+ interface ICoreWebView2Settings5
+ {
+ CONST_VTBL struct ICoreWebView2Settings5Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings5_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings5_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings5_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings5_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings5_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings5_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings5_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings5_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings5_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings5_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings5_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings5_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings5_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings5_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings5_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings5_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings5_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings5_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings5_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings5_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings5_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings5_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings5_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#define ICoreWebView2Settings5_get_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings5_put_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings5_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings5_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings5_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings5_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings5_get_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings5_put_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPinchZoomEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings5_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings6_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings6_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings6 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings6 = {0x11cb3acd, 0x9bc8, 0x43b8, {0x83, 0xbf, 0xf4, 0x07, 0x53, 0x71, 0x4f, 0x87}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("11cb3acd-9bc8-43b8-83bf-f40753714f87")
+ ICoreWebView2Settings6 : public ICoreWebView2Settings5
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsSwipeNavigationEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsSwipeNavigationEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings6Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings6 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings6 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, get_AreBrowserAcceleratorKeysEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, put_AreBrowserAcceleratorKeysEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, get_IsPinchZoomEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPinchZoomEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, put_IsPinchZoomEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPinchZoomEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, get_IsSwipeNavigationEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, put_IsSwipeNavigationEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings6 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings6Vtbl;
+
+ interface ICoreWebView2Settings6
+ {
+ CONST_VTBL struct ICoreWebView2Settings6Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings6_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings6_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings6_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings6_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings6_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings6_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings6_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings6_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings6_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings6_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings6_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings6_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings6_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings6_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings6_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings6_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings6_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings6_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings6_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings6_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings6_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings6_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings6_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#define ICoreWebView2Settings6_get_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings6_put_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings6_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings6_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings6_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings6_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings6_get_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings6_put_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings6_get_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->get_IsSwipeNavigationEnabled(This, value))
+
+#define ICoreWebView2Settings6_put_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->put_IsSwipeNavigationEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings6_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings7_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings7_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings7 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings7 = {0x488dc902, 0x35ef, 0x42d2, {0xbc, 0x7d, 0x94, 0xb6, 0x5c, 0x4b, 0xc4, 0x9c}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("488dc902-35ef-42d2-bc7d-94b65c4bc49c")
+ ICoreWebView2Settings7 : public ICoreWebView2Settings6
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HiddenPdfToolbarItems(
+ /* [retval][out] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_HiddenPdfToolbarItems(
+ /* [in] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings7Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings7 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings7 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, get_AreBrowserAcceleratorKeysEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, put_AreBrowserAcceleratorKeysEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, get_IsPinchZoomEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPinchZoomEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, put_IsPinchZoomEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPinchZoomEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, get_IsSwipeNavigationEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, put_IsSwipeNavigationEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings7, get_HiddenPdfToolbarItems)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HiddenPdfToolbarItems)(
+ ICoreWebView2Settings7 *This,
+ /* [retval][out] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings7, put_HiddenPdfToolbarItems)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HiddenPdfToolbarItems)(
+ ICoreWebView2Settings7 *This,
+ /* [in] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings7Vtbl;
+
+ interface ICoreWebView2Settings7
+ {
+ CONST_VTBL struct ICoreWebView2Settings7Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings7_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings7_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings7_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings7_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings7_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings7_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings7_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings7_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings7_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings7_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings7_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings7_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings7_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings7_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings7_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings7_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings7_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings7_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings7_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings7_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings7_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings7_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings7_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#define ICoreWebView2Settings7_get_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings7_put_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings7_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings7_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings7_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings7_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings7_get_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings7_put_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings7_get_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->get_IsSwipeNavigationEnabled(This, value))
+
+#define ICoreWebView2Settings7_put_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->put_IsSwipeNavigationEnabled(This, value))
+
+#define ICoreWebView2Settings7_get_HiddenPdfToolbarItems(This, value) \
+ ((This)->lpVtbl->get_HiddenPdfToolbarItems(This, value))
+
+#define ICoreWebView2Settings7_put_HiddenPdfToolbarItems(This, value) \
+ ((This)->lpVtbl->put_HiddenPdfToolbarItems(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings7_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings8_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings8_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings8 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings8 = {0x9e6b0e8f, 0x86ad, 0x4e81, {0x81, 0x47, 0xa9, 0xb5, 0xed, 0xb6, 0x86, 0x50}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9e6b0e8f-86ad-4e81-8147-a9b5edb68650")
+ ICoreWebView2Settings8 : public ICoreWebView2Settings7
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsReputationCheckingRequired(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsReputationCheckingRequired(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings8Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings8 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings8 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, get_AreBrowserAcceleratorKeysEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, put_AreBrowserAcceleratorKeysEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, get_IsPinchZoomEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPinchZoomEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, put_IsPinchZoomEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPinchZoomEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, get_IsSwipeNavigationEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, put_IsSwipeNavigationEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings7, get_HiddenPdfToolbarItems)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HiddenPdfToolbarItems)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings7, put_HiddenPdfToolbarItems)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HiddenPdfToolbarItems)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings8, get_IsReputationCheckingRequired)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsReputationCheckingRequired)(
+ ICoreWebView2Settings8 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings8, put_IsReputationCheckingRequired)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsReputationCheckingRequired)(
+ ICoreWebView2Settings8 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings8Vtbl;
+
+ interface ICoreWebView2Settings8
+ {
+ CONST_VTBL struct ICoreWebView2Settings8Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings8_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings8_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings8_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings8_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings8_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings8_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings8_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings8_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings8_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings8_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings8_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings8_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings8_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings8_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings8_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings8_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings8_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings8_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings8_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings8_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings8_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings8_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings8_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#define ICoreWebView2Settings8_get_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings8_put_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings8_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings8_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings8_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings8_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings8_get_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings8_put_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings8_get_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->get_IsSwipeNavigationEnabled(This, value))
+
+#define ICoreWebView2Settings8_put_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->put_IsSwipeNavigationEnabled(This, value))
+
+#define ICoreWebView2Settings8_get_HiddenPdfToolbarItems(This, value) \
+ ((This)->lpVtbl->get_HiddenPdfToolbarItems(This, value))
+
+#define ICoreWebView2Settings8_put_HiddenPdfToolbarItems(This, value) \
+ ((This)->lpVtbl->put_HiddenPdfToolbarItems(This, value))
+
+#define ICoreWebView2Settings8_get_IsReputationCheckingRequired(This, value) \
+ ((This)->lpVtbl->get_IsReputationCheckingRequired(This, value))
+
+#define ICoreWebView2Settings8_put_IsReputationCheckingRequired(This, value) \
+ ((This)->lpVtbl->put_IsReputationCheckingRequired(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings8_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2Settings9_INTERFACE_DEFINED__
+#define __ICoreWebView2Settings9_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2Settings9 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2Settings9 = {0x0528a73b, 0xe92d, 0x49f4, {0x92, 0x7a, 0xe5, 0x47, 0xdd, 0xda, 0xa3, 0x7d}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0528a73b-e92d-49f4-927a-e547dddaa37d")
+ ICoreWebView2Settings9 : public ICoreWebView2Settings8
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsNonClientRegionSupportEnabled(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_IsNonClientRegionSupportEnabled(
+ /* [in] */ BOOL value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2Settings9Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2Settings9 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2Settings9 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsScriptEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsScriptEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsScriptEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsScriptEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL isScriptEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsWebMessageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsWebMessageEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsWebMessageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsWebMessageEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL isWebMessageEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultScriptDialogsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultScriptDialogsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultScriptDialogsEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL areDefaultScriptDialogsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsStatusBarEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsStatusBarEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsStatusBarEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsStatusBarEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL isStatusBarEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDevToolsEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDevToolsEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDevToolsEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDevToolsEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL areDevToolsEnabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreDefaultContextMenusEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreDefaultContextMenusEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreDefaultContextMenusEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_AreHostObjectsAllowed)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreHostObjectsAllowed)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_AreHostObjectsAllowed)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreHostObjectsAllowed)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL allowed);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsZoomControlEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsZoomControlEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsZoomControlEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsZoomControlEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, get_IsBuiltInErrorPageEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings, put_IsBuiltInErrorPageEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsBuiltInErrorPageEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL enabled);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, get_UserAgent)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_UserAgent)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings2, put_UserAgent)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_UserAgent)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ LPCWSTR value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, get_AreBrowserAcceleratorKeysEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings3, put_AreBrowserAcceleratorKeysEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_AreBrowserAcceleratorKeysEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsPasswordAutosaveEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsPasswordAutosaveEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPasswordAutosaveEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, get_IsGeneralAutofillEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings4, put_IsGeneralAutofillEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsGeneralAutofillEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, get_IsPinchZoomEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsPinchZoomEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings5, put_IsPinchZoomEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsPinchZoomEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, get_IsSwipeNavigationEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings6, put_IsSwipeNavigationEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsSwipeNavigationEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings7, get_HiddenPdfToolbarItems)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HiddenPdfToolbarItems)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings7, put_HiddenPdfToolbarItems)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_HiddenPdfToolbarItems)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ COREWEBVIEW2_PDF_TOOLBAR_ITEMS value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings8, get_IsReputationCheckingRequired)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsReputationCheckingRequired)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings8, put_IsReputationCheckingRequired)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsReputationCheckingRequired)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings9, get_IsNonClientRegionSupportEnabled)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsNonClientRegionSupportEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2Settings9, put_IsNonClientRegionSupportEnabled)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_IsNonClientRegionSupportEnabled)(
+ ICoreWebView2Settings9 *This,
+ /* [in] */ BOOL value);
+
+ END_INTERFACE
+ } ICoreWebView2Settings9Vtbl;
+
+ interface ICoreWebView2Settings9
+ {
+ CONST_VTBL struct ICoreWebView2Settings9Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2Settings9_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2Settings9_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2Settings9_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2Settings9_get_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->get_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings9_put_IsScriptEnabled(This, isScriptEnabled) \
+ ((This)->lpVtbl->put_IsScriptEnabled(This, isScriptEnabled))
+
+#define ICoreWebView2Settings9_get_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->get_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings9_put_IsWebMessageEnabled(This, isWebMessageEnabled) \
+ ((This)->lpVtbl->put_IsWebMessageEnabled(This, isWebMessageEnabled))
+
+#define ICoreWebView2Settings9_get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->get_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings9_put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled) \
+ ((This)->lpVtbl->put_AreDefaultScriptDialogsEnabled(This, areDefaultScriptDialogsEnabled))
+
+#define ICoreWebView2Settings9_get_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->get_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings9_put_IsStatusBarEnabled(This, isStatusBarEnabled) \
+ ((This)->lpVtbl->put_IsStatusBarEnabled(This, isStatusBarEnabled))
+
+#define ICoreWebView2Settings9_get_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->get_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings9_put_AreDevToolsEnabled(This, areDevToolsEnabled) \
+ ((This)->lpVtbl->put_AreDevToolsEnabled(This, areDevToolsEnabled))
+
+#define ICoreWebView2Settings9_get_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->get_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings9_put_AreDefaultContextMenusEnabled(This, enabled) \
+ ((This)->lpVtbl->put_AreDefaultContextMenusEnabled(This, enabled))
+
+#define ICoreWebView2Settings9_get_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->get_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings9_put_AreHostObjectsAllowed(This, allowed) \
+ ((This)->lpVtbl->put_AreHostObjectsAllowed(This, allowed))
+
+#define ICoreWebView2Settings9_get_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings9_put_IsZoomControlEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsZoomControlEnabled(This, enabled))
+
+#define ICoreWebView2Settings9_get_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->get_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings9_put_IsBuiltInErrorPageEnabled(This, enabled) \
+ ((This)->lpVtbl->put_IsBuiltInErrorPageEnabled(This, enabled))
+
+#define ICoreWebView2Settings9_get_UserAgent(This, value) \
+ ((This)->lpVtbl->get_UserAgent(This, value))
+
+#define ICoreWebView2Settings9_put_UserAgent(This, value) \
+ ((This)->lpVtbl->put_UserAgent(This, value))
+
+#define ICoreWebView2Settings9_get_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->get_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings9_put_AreBrowserAcceleratorKeysEnabled(This, value) \
+ ((This)->lpVtbl->put_AreBrowserAcceleratorKeysEnabled(This, value))
+
+#define ICoreWebView2Settings9_get_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings9_put_IsPasswordAutosaveEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPasswordAutosaveEnabled(This, value))
+
+#define ICoreWebView2Settings9_get_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->get_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings9_put_IsGeneralAutofillEnabled(This, value) \
+ ((This)->lpVtbl->put_IsGeneralAutofillEnabled(This, value))
+
+#define ICoreWebView2Settings9_get_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->get_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings9_put_IsPinchZoomEnabled(This, value) \
+ ((This)->lpVtbl->put_IsPinchZoomEnabled(This, value))
+
+#define ICoreWebView2Settings9_get_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->get_IsSwipeNavigationEnabled(This, value))
+
+#define ICoreWebView2Settings9_put_IsSwipeNavigationEnabled(This, value) \
+ ((This)->lpVtbl->put_IsSwipeNavigationEnabled(This, value))
+
+#define ICoreWebView2Settings9_get_HiddenPdfToolbarItems(This, value) \
+ ((This)->lpVtbl->get_HiddenPdfToolbarItems(This, value))
+
+#define ICoreWebView2Settings9_put_HiddenPdfToolbarItems(This, value) \
+ ((This)->lpVtbl->put_HiddenPdfToolbarItems(This, value))
+
+#define ICoreWebView2Settings9_get_IsReputationCheckingRequired(This, value) \
+ ((This)->lpVtbl->get_IsReputationCheckingRequired(This, value))
+
+#define ICoreWebView2Settings9_put_IsReputationCheckingRequired(This, value) \
+ ((This)->lpVtbl->put_IsReputationCheckingRequired(This, value))
+
+#define ICoreWebView2Settings9_get_IsNonClientRegionSupportEnabled(This, value) \
+ ((This)->lpVtbl->get_IsNonClientRegionSupportEnabled(This, value))
+
+#define ICoreWebView2Settings9_put_IsNonClientRegionSupportEnabled(This, value) \
+ ((This)->lpVtbl->put_IsNonClientRegionSupportEnabled(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2Settings9_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SharedBuffer_INTERFACE_DEFINED__
+#define __ICoreWebView2SharedBuffer_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SharedBuffer */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SharedBuffer = {0xB747A495, 0x0C6F, 0x449E, {0x97, 0xB8, 0x2F, 0x81, 0xE9, 0xD6, 0xAB, 0x43}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B747A495-0C6F-449E-97B8-2F81E9D6AB43")
+ ICoreWebView2SharedBuffer : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Size(
+ /* [retval][out] */ UINT64 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Buffer(
+ /* [retval][out] */ BYTE * *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenStream(
+ /* [retval][out] */ IStream * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_FileMappingHandle(
+ /* [retval][out] */ HANDLE * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Close(void) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SharedBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SharedBuffer *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SharedBuffer *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SharedBuffer *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SharedBuffer, get_Size)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Size)(
+ ICoreWebView2SharedBuffer *This,
+ /* [retval][out] */ UINT64 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SharedBuffer, get_Buffer)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Buffer)(
+ ICoreWebView2SharedBuffer *This,
+ /* [retval][out] */ BYTE **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SharedBuffer, OpenStream)
+ HRESULT(STDMETHODCALLTYPE *OpenStream)(
+ ICoreWebView2SharedBuffer *This,
+ /* [retval][out] */ IStream **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SharedBuffer, get_FileMappingHandle)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_FileMappingHandle)(
+ ICoreWebView2SharedBuffer *This,
+ /* [retval][out] */ HANDLE *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SharedBuffer, Close)
+ HRESULT(STDMETHODCALLTYPE *Close)(
+ ICoreWebView2SharedBuffer *This);
+
+ END_INTERFACE
+ } ICoreWebView2SharedBufferVtbl;
+
+ interface ICoreWebView2SharedBuffer
+ {
+ CONST_VTBL struct ICoreWebView2SharedBufferVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SharedBuffer_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SharedBuffer_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SharedBuffer_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SharedBuffer_get_Size(This, value) \
+ ((This)->lpVtbl->get_Size(This, value))
+
+#define ICoreWebView2SharedBuffer_get_Buffer(This, value) \
+ ((This)->lpVtbl->get_Buffer(This, value))
+
+#define ICoreWebView2SharedBuffer_OpenStream(This, value) \
+ ((This)->lpVtbl->OpenStream(This, value))
+
+#define ICoreWebView2SharedBuffer_get_FileMappingHandle(This, value) \
+ ((This)->lpVtbl->get_FileMappingHandle(This, value))
+
+#define ICoreWebView2SharedBuffer_Close(This) \
+ ((This)->lpVtbl->Close(This))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SharedBuffer_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2SourceChangedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2SourceChangedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2SourceChangedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2SourceChangedEventArgs = {0x31e0e545, 0x1dba, 0x4266, {0x89, 0x14, 0xf6, 0x38, 0x48, 0xa1, 0xf7, 0xd7}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("31e0e545-1dba-4266-8914-f63848a1f7d7")
+ ICoreWebView2SourceChangedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_IsNewDocument(
+ /* [retval][out] */ BOOL * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2SourceChangedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2SourceChangedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2SourceChangedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2SourceChangedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2SourceChangedEventArgs, get_IsNewDocument)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_IsNewDocument)(
+ ICoreWebView2SourceChangedEventArgs *This,
+ /* [retval][out] */ BOOL *value);
+
+ END_INTERFACE
+ } ICoreWebView2SourceChangedEventArgsVtbl;
+
+ interface ICoreWebView2SourceChangedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2SourceChangedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2SourceChangedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2SourceChangedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2SourceChangedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2SourceChangedEventArgs_get_IsNewDocument(This, value) \
+ ((This)->lpVtbl->get_IsNewDocument(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2SourceChangedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebMessageReceivedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2WebMessageReceivedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebMessageReceivedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebMessageReceivedEventArgs = {0x0f99a40c, 0xe962, 0x4207, {0x9e, 0x92, 0xe3, 0xd5, 0x42, 0xef, 0xf8, 0x49}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0f99a40c-e962-4207-9e92-e3d542eff849")
+ ICoreWebView2WebMessageReceivedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Source(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_WebMessageAsJson(
+ /* [retval][out] */ LPWSTR * value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TryGetWebMessageAsString(
+ /* [retval][out] */ LPWSTR * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebMessageReceivedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebMessageReceivedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebMessageReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebMessageReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventArgs, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2WebMessageReceivedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventArgs, get_WebMessageAsJson)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_WebMessageAsJson)(
+ ICoreWebView2WebMessageReceivedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventArgs, TryGetWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *TryGetWebMessageAsString)(
+ ICoreWebView2WebMessageReceivedEventArgs *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ END_INTERFACE
+ } ICoreWebView2WebMessageReceivedEventArgsVtbl;
+
+ interface ICoreWebView2WebMessageReceivedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2WebMessageReceivedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebMessageReceivedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebMessageReceivedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebMessageReceivedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebMessageReceivedEventArgs_get_Source(This, value) \
+ ((This)->lpVtbl->get_Source(This, value))
+
+#define ICoreWebView2WebMessageReceivedEventArgs_get_WebMessageAsJson(This, value) \
+ ((This)->lpVtbl->get_WebMessageAsJson(This, value))
+
+#define ICoreWebView2WebMessageReceivedEventArgs_TryGetWebMessageAsString(This, value) \
+ ((This)->lpVtbl->TryGetWebMessageAsString(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebMessageReceivedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebMessageReceivedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2WebMessageReceivedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebMessageReceivedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebMessageReceivedEventArgs2 = {0x06fc7ab7, 0xc90c, 0x4297, {0x93, 0x89, 0x33, 0xca, 0x01, 0xcf, 0x6d, 0x5e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("06fc7ab7-c90c-4297-9389-33ca01cf6d5e")
+ ICoreWebView2WebMessageReceivedEventArgs2 : public ICoreWebView2WebMessageReceivedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_AdditionalObjects(
+ /* [retval][out] */ ICoreWebView2ObjectCollectionView * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebMessageReceivedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebMessageReceivedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebMessageReceivedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebMessageReceivedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventArgs, get_Source)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Source)(
+ ICoreWebView2WebMessageReceivedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventArgs, get_WebMessageAsJson)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_WebMessageAsJson)(
+ ICoreWebView2WebMessageReceivedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventArgs, TryGetWebMessageAsString)
+ HRESULT(STDMETHODCALLTYPE *TryGetWebMessageAsString)(
+ ICoreWebView2WebMessageReceivedEventArgs2 *This,
+ /* [retval][out] */ LPWSTR *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebMessageReceivedEventArgs2, get_AdditionalObjects)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_AdditionalObjects)(
+ ICoreWebView2WebMessageReceivedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2ObjectCollectionView **value);
+
+ END_INTERFACE
+ } ICoreWebView2WebMessageReceivedEventArgs2Vtbl;
+
+ interface ICoreWebView2WebMessageReceivedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2WebMessageReceivedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebMessageReceivedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebMessageReceivedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebMessageReceivedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebMessageReceivedEventArgs2_get_Source(This, value) \
+ ((This)->lpVtbl->get_Source(This, value))
+
+#define ICoreWebView2WebMessageReceivedEventArgs2_get_WebMessageAsJson(This, value) \
+ ((This)->lpVtbl->get_WebMessageAsJson(This, value))
+
+#define ICoreWebView2WebMessageReceivedEventArgs2_TryGetWebMessageAsString(This, value) \
+ ((This)->lpVtbl->TryGetWebMessageAsString(This, value))
+
+#define ICoreWebView2WebMessageReceivedEventArgs2_get_AdditionalObjects(This, value) \
+ ((This)->lpVtbl->get_AdditionalObjects(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebMessageReceivedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequest_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceRequest_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceRequest */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceRequest = {0x97055cd4, 0x512c, 0x4264, {0x8b, 0x5f, 0xe3, 0xf4, 0x46, 0xce, 0xa6, 0xa5}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("97055cd4-512c-4264-8b5f-e3f446cea6a5")
+ ICoreWebView2WebResourceRequest : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Uri(
+ /* [retval][out] */ LPWSTR * uri) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Uri(
+ /* [in] */ LPCWSTR uri) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Method(
+ /* [retval][out] */ LPWSTR * method) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Method(
+ /* [in] */ LPCWSTR method) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Content(
+ /* [retval][out] */ IStream * *content) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Content(
+ /* [in] */ IStream * content) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Headers(
+ /* [retval][out] */ ICoreWebView2HttpRequestHeaders * *headers) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceRequestVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceRequest *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceRequest *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequest, get_Uri)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Uri)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [retval][out] */ LPWSTR *uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequest, put_Uri)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Uri)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [in] */ LPCWSTR uri);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequest, get_Method)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Method)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [retval][out] */ LPWSTR *method);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequest, put_Method)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Method)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [in] */ LPCWSTR method);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequest, get_Content)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Content)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [retval][out] */ IStream **content);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequest, put_Content)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Content)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [in] */ IStream *content);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequest, get_Headers)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Headers)(
+ ICoreWebView2WebResourceRequest *This,
+ /* [retval][out] */ ICoreWebView2HttpRequestHeaders **headers);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceRequestVtbl;
+
+ interface ICoreWebView2WebResourceRequest
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceRequestVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceRequest_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceRequest_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceRequest_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceRequest_get_Uri(This, uri) \
+ ((This)->lpVtbl->get_Uri(This, uri))
+
+#define ICoreWebView2WebResourceRequest_put_Uri(This, uri) \
+ ((This)->lpVtbl->put_Uri(This, uri))
+
+#define ICoreWebView2WebResourceRequest_get_Method(This, method) \
+ ((This)->lpVtbl->get_Method(This, method))
+
+#define ICoreWebView2WebResourceRequest_put_Method(This, method) \
+ ((This)->lpVtbl->put_Method(This, method))
+
+#define ICoreWebView2WebResourceRequest_get_Content(This, content) \
+ ((This)->lpVtbl->get_Content(This, content))
+
+#define ICoreWebView2WebResourceRequest_put_Content(This, content) \
+ ((This)->lpVtbl->put_Content(This, content))
+
+#define ICoreWebView2WebResourceRequest_get_Headers(This, headers) \
+ ((This)->lpVtbl->get_Headers(This, headers))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceRequest_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequestedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceRequestedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceRequestedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceRequestedEventArgs = {0x453e667f, 0x12c7, 0x49d4, {0xbe, 0x6d, 0xdd, 0xbe, 0x79, 0x56, 0xf5, 0x7a}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("453e667f-12c7-49d4-be6d-ddbe7956f57a")
+ ICoreWebView2WebResourceRequestedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Request(
+ /* [retval][out] */ ICoreWebView2WebResourceRequest * *request) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Response(
+ /* [retval][out] */ ICoreWebView2WebResourceResponse * *response) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Response(
+ /* [in] */ ICoreWebView2WebResourceResponse * response) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeferral(
+ /* [retval][out] */ ICoreWebView2Deferral * *deferral) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ResourceContext(
+ /* [retval][out] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT * context) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceRequestedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceRequestedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceRequestedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, get_Request)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Request)(
+ ICoreWebView2WebResourceRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, get_Response)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Response)(
+ ICoreWebView2WebResourceRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, put_Response)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Response)(
+ ICoreWebView2WebResourceRequestedEventArgs *This,
+ /* [in] */ ICoreWebView2WebResourceResponse *response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2WebResourceRequestedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, get_ResourceContext)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ResourceContext)(
+ ICoreWebView2WebResourceRequestedEventArgs *This,
+ /* [retval][out] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT *context);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceRequestedEventArgsVtbl;
+
+ interface ICoreWebView2WebResourceRequestedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceRequestedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceRequestedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceRequestedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceRequestedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceRequestedEventArgs_get_Request(This, request) \
+ ((This)->lpVtbl->get_Request(This, request))
+
+#define ICoreWebView2WebResourceRequestedEventArgs_get_Response(This, response) \
+ ((This)->lpVtbl->get_Response(This, response))
+
+#define ICoreWebView2WebResourceRequestedEventArgs_put_Response(This, response) \
+ ((This)->lpVtbl->put_Response(This, response))
+
+#define ICoreWebView2WebResourceRequestedEventArgs_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#define ICoreWebView2WebResourceRequestedEventArgs_get_ResourceContext(This, context) \
+ ((This)->lpVtbl->get_ResourceContext(This, context))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceRequestedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceRequestedEventArgs2_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceRequestedEventArgs2_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceRequestedEventArgs2 */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceRequestedEventArgs2 = {0x9c562c24, 0xb219, 0x4d7f, {0x92, 0xf6, 0xb1, 0x87, 0xfb, 0xba, 0xdd, 0x56}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9c562c24-b219-4d7f-92f6-b187fbbadd56")
+ ICoreWebView2WebResourceRequestedEventArgs2 : public ICoreWebView2WebResourceRequestedEventArgs
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_RequestedSourceKind(
+ /* [retval][out] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceRequestedEventArgs2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, get_Request)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Request)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **request);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, get_Response)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Response)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2WebResourceResponse **response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, put_Response)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Response)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This,
+ /* [in] */ ICoreWebView2WebResourceResponse *response);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, GetDeferral)
+ HRESULT(STDMETHODCALLTYPE *GetDeferral)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This,
+ /* [retval][out] */ ICoreWebView2Deferral **deferral);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs, get_ResourceContext)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ResourceContext)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_WEB_RESOURCE_CONTEXT *context);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceRequestedEventArgs2, get_RequestedSourceKind)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_RequestedSourceKind)(
+ ICoreWebView2WebResourceRequestedEventArgs2 *This,
+ /* [retval][out] */ COREWEBVIEW2_WEB_RESOURCE_REQUEST_SOURCE_KINDS *value);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceRequestedEventArgs2Vtbl;
+
+ interface ICoreWebView2WebResourceRequestedEventArgs2
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceRequestedEventArgs2Vtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_get_Request(This, request) \
+ ((This)->lpVtbl->get_Request(This, request))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_get_Response(This, response) \
+ ((This)->lpVtbl->get_Response(This, response))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_put_Response(This, response) \
+ ((This)->lpVtbl->put_Response(This, response))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_GetDeferral(This, deferral) \
+ ((This)->lpVtbl->GetDeferral(This, deferral))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_get_ResourceContext(This, context) \
+ ((This)->lpVtbl->get_ResourceContext(This, context))
+
+#define ICoreWebView2WebResourceRequestedEventArgs2_get_RequestedSourceKind(This, value) \
+ ((This)->lpVtbl->get_RequestedSourceKind(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceRequestedEventArgs2_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponse_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceResponse_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceResponse */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceResponse = {0xaafcc94f, 0xfa27, 0x48fd, {0x97, 0xdf, 0x83, 0x0e, 0xf7, 0x5a, 0xae, 0xc9}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("aafcc94f-fa27-48fd-97df-830ef75aaec9")
+ ICoreWebView2WebResourceResponse : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Content(
+ /* [retval][out] */ IStream * *content) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_Content(
+ /* [in] */ IStream * content) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Headers(
+ /* [retval][out] */ ICoreWebView2HttpResponseHeaders * *headers) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_StatusCode(
+ /* [retval][out] */ int *statusCode) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_StatusCode(
+ /* [in] */ int statusCode) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ReasonPhrase(
+ /* [retval][out] */ LPWSTR * reasonPhrase) = 0;
+
+ virtual /* [propput] */ HRESULT STDMETHODCALLTYPE put_ReasonPhrase(
+ /* [in] */ LPCWSTR reasonPhrase) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceResponseVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceResponse *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceResponse *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponse, get_Content)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Content)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [retval][out] */ IStream **content);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponse, put_Content)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_Content)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [in] */ IStream *content);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponse, get_Headers)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Headers)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [retval][out] */ ICoreWebView2HttpResponseHeaders **headers);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponse, get_StatusCode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusCode)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [retval][out] */ int *statusCode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponse, put_StatusCode)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_StatusCode)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [in] */ int statusCode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponse, get_ReasonPhrase)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ReasonPhrase)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [retval][out] */ LPWSTR *reasonPhrase);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponse, put_ReasonPhrase)
+ /* [propput] */ HRESULT(STDMETHODCALLTYPE *put_ReasonPhrase)(
+ ICoreWebView2WebResourceResponse *This,
+ /* [in] */ LPCWSTR reasonPhrase);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceResponseVtbl;
+
+ interface ICoreWebView2WebResourceResponse
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceResponseVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceResponse_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceResponse_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceResponse_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceResponse_get_Content(This, content) \
+ ((This)->lpVtbl->get_Content(This, content))
+
+#define ICoreWebView2WebResourceResponse_put_Content(This, content) \
+ ((This)->lpVtbl->put_Content(This, content))
+
+#define ICoreWebView2WebResourceResponse_get_Headers(This, headers) \
+ ((This)->lpVtbl->get_Headers(This, headers))
+
+#define ICoreWebView2WebResourceResponse_get_StatusCode(This, statusCode) \
+ ((This)->lpVtbl->get_StatusCode(This, statusCode))
+
+#define ICoreWebView2WebResourceResponse_put_StatusCode(This, statusCode) \
+ ((This)->lpVtbl->put_StatusCode(This, statusCode))
+
+#define ICoreWebView2WebResourceResponse_get_ReasonPhrase(This, reasonPhrase) \
+ ((This)->lpVtbl->get_ReasonPhrase(This, reasonPhrase))
+
+#define ICoreWebView2WebResourceResponse_put_ReasonPhrase(This, reasonPhrase) \
+ ((This)->lpVtbl->put_ReasonPhrase(This, reasonPhrase))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceResponse_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseReceivedEventArgs_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceResponseReceivedEventArgs_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceResponseReceivedEventArgs */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceResponseReceivedEventArgs = {0xd1db483d, 0x6796, 0x4b8b, {0x80, 0xfc, 0x13, 0x71, 0x2b, 0xb7, 0x16, 0xf4}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d1db483d-6796-4b8b-80fc-13712bb716f4")
+ ICoreWebView2WebResourceResponseReceivedEventArgs : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Request(
+ /* [retval][out] */ ICoreWebView2WebResourceRequest * *value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Response(
+ /* [retval][out] */ ICoreWebView2WebResourceResponseView * *value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceResponseReceivedEventArgsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceResponseReceivedEventArgs *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceResponseReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceResponseReceivedEventArgs *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseReceivedEventArgs, get_Request)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Request)(
+ ICoreWebView2WebResourceResponseReceivedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2WebResourceRequest **value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseReceivedEventArgs, get_Response)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Response)(
+ ICoreWebView2WebResourceResponseReceivedEventArgs *This,
+ /* [retval][out] */ ICoreWebView2WebResourceResponseView **value);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceResponseReceivedEventArgsVtbl;
+
+ interface ICoreWebView2WebResourceResponseReceivedEventArgs
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceResponseReceivedEventArgsVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceResponseReceivedEventArgs_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceResponseReceivedEventArgs_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceResponseReceivedEventArgs_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceResponseReceivedEventArgs_get_Request(This, value) \
+ ((This)->lpVtbl->get_Request(This, value))
+
+#define ICoreWebView2WebResourceResponseReceivedEventArgs_get_Response(This, value) \
+ ((This)->lpVtbl->get_Response(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceResponseReceivedEventArgs_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseView_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceResponseView_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceResponseView */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceResponseView = {0x79701053, 0x7759, 0x4162, {0x8F, 0x7D, 0xF1, 0xB3, 0xF0, 0x84, 0x92, 0x8D}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("79701053-7759-4162-8F7D-F1B3F084928D")
+ ICoreWebView2WebResourceResponseView : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Headers(
+ /* [retval][out] */ ICoreWebView2HttpResponseHeaders * *headers) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_StatusCode(
+ /* [retval][out] */ int *statusCode) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ReasonPhrase(
+ /* [retval][out] */ LPWSTR * reasonPhrase) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContent(
+ /* [in] */ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler * handler) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceResponseViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceResponseView *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceResponseView *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceResponseView *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseView, get_Headers)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Headers)(
+ ICoreWebView2WebResourceResponseView *This,
+ /* [retval][out] */ ICoreWebView2HttpResponseHeaders **headers);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseView, get_StatusCode)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_StatusCode)(
+ ICoreWebView2WebResourceResponseView *This,
+ /* [retval][out] */ int *statusCode);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseView, get_ReasonPhrase)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ReasonPhrase)(
+ ICoreWebView2WebResourceResponseView *This,
+ /* [retval][out] */ LPWSTR *reasonPhrase);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseView, GetContent)
+ HRESULT(STDMETHODCALLTYPE *GetContent)(
+ ICoreWebView2WebResourceResponseView *This,
+ /* [in] */ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler *handler);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceResponseViewVtbl;
+
+ interface ICoreWebView2WebResourceResponseView
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceResponseViewVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceResponseView_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceResponseView_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceResponseView_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceResponseView_get_Headers(This, headers) \
+ ((This)->lpVtbl->get_Headers(This, headers))
+
+#define ICoreWebView2WebResourceResponseView_get_StatusCode(This, statusCode) \
+ ((This)->lpVtbl->get_StatusCode(This, statusCode))
+
+#define ICoreWebView2WebResourceResponseView_get_ReasonPhrase(This, reasonPhrase) \
+ ((This)->lpVtbl->get_ReasonPhrase(This, reasonPhrase))
+
+#define ICoreWebView2WebResourceResponseView_GetContent(This, handler) \
+ ((This)->lpVtbl->GetContent(This, handler))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceResponseView_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_INTERFACE_DEFINED__
+#define __ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WebResourceResponseViewGetContentCompletedHandler */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WebResourceResponseViewGetContentCompletedHandler = {0x875738e1, 0x9fa2, 0x40e3, {0x8b, 0x74, 0x2e, 0x89, 0x72, 0xdd, 0x6f, 0xe7}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("875738e1-9fa2-40e3-8b74-2e8972dd6fe7")
+ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ IStream * result) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WebResourceResponseViewGetContentCompletedHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WebResourceResponseViewGetContentCompletedHandler, Invoke)
+ HRESULT(STDMETHODCALLTYPE *Invoke)(
+ ICoreWebView2WebResourceResponseViewGetContentCompletedHandler *This,
+ /* [in] */ HRESULT errorCode,
+ /* [in] */ IStream *result);
+
+ END_INTERFACE
+ } ICoreWebView2WebResourceResponseViewGetContentCompletedHandlerVtbl;
+
+ interface ICoreWebView2WebResourceResponseViewGetContentCompletedHandler
+ {
+ CONST_VTBL struct ICoreWebView2WebResourceResponseViewGetContentCompletedHandlerVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_Invoke(This, errorCode, result) \
+ ((This)->lpVtbl->Invoke(This, errorCode, result))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WebResourceResponseViewGetContentCompletedHandler_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2WindowFeatures_INTERFACE_DEFINED__
+#define __ICoreWebView2WindowFeatures_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2WindowFeatures */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2WindowFeatures = {0x5eaf559f, 0xb46e, 0x4397, {0x88, 0x60, 0xe4, 0x22, 0xf2, 0x87, 0xff, 0x1e}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5eaf559f-b46e-4397-8860-e422f287ff1e")
+ ICoreWebView2WindowFeatures : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasPosition(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_HasSize(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Left(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Top(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Height(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Width(
+ /* [retval][out] */ UINT32 * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldDisplayMenuBar(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldDisplayStatus(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldDisplayToolbar(
+ /* [retval][out] */ BOOL * value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_ShouldDisplayScrollBars(
+ /* [retval][out] */ BOOL * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2WindowFeaturesVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2WindowFeatures *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2WindowFeatures *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2WindowFeatures *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_HasPosition)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasPosition)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_HasSize)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_HasSize)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_Left)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Left)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_Top)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Top)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_Height)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Height)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_Width)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Width)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ UINT32 *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_ShouldDisplayMenuBar)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldDisplayMenuBar)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_ShouldDisplayStatus)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldDisplayStatus)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_ShouldDisplayToolbar)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldDisplayToolbar)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ BOOL *value);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2WindowFeatures, get_ShouldDisplayScrollBars)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_ShouldDisplayScrollBars)(
+ ICoreWebView2WindowFeatures *This,
+ /* [retval][out] */ BOOL *value);
+
+ END_INTERFACE
+ } ICoreWebView2WindowFeaturesVtbl;
+
+ interface ICoreWebView2WindowFeatures
+ {
+ CONST_VTBL struct ICoreWebView2WindowFeaturesVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2WindowFeatures_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2WindowFeatures_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2WindowFeatures_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2WindowFeatures_get_HasPosition(This, value) \
+ ((This)->lpVtbl->get_HasPosition(This, value))
+
+#define ICoreWebView2WindowFeatures_get_HasSize(This, value) \
+ ((This)->lpVtbl->get_HasSize(This, value))
+
+#define ICoreWebView2WindowFeatures_get_Left(This, value) \
+ ((This)->lpVtbl->get_Left(This, value))
+
+#define ICoreWebView2WindowFeatures_get_Top(This, value) \
+ ((This)->lpVtbl->get_Top(This, value))
+
+#define ICoreWebView2WindowFeatures_get_Height(This, value) \
+ ((This)->lpVtbl->get_Height(This, value))
+
+#define ICoreWebView2WindowFeatures_get_Width(This, value) \
+ ((This)->lpVtbl->get_Width(This, value))
+
+#define ICoreWebView2WindowFeatures_get_ShouldDisplayMenuBar(This, value) \
+ ((This)->lpVtbl->get_ShouldDisplayMenuBar(This, value))
+
+#define ICoreWebView2WindowFeatures_get_ShouldDisplayStatus(This, value) \
+ ((This)->lpVtbl->get_ShouldDisplayStatus(This, value))
+
+#define ICoreWebView2WindowFeatures_get_ShouldDisplayToolbar(This, value) \
+ ((This)->lpVtbl->get_ShouldDisplayToolbar(This, value))
+
+#define ICoreWebView2WindowFeatures_get_ShouldDisplayScrollBars(This, value) \
+ ((This)->lpVtbl->get_ShouldDisplayScrollBars(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2WindowFeatures_INTERFACE_DEFINED__ */
+
+#ifndef __ICoreWebView2PermissionSettingCollectionView_INTERFACE_DEFINED__
+#define __ICoreWebView2PermissionSettingCollectionView_INTERFACE_DEFINED__
+
+ /* interface ICoreWebView2PermissionSettingCollectionView */
+ /* [unique][object][uuid] */
+
+ EXTERN_C __declspec(selectany) const IID IID_ICoreWebView2PermissionSettingCollectionView = {0xf5596f62, 0x3de5, 0x47b1, {0x91, 0xe8, 0xa4, 0x10, 0x4b, 0x59, 0x6b, 0x96}};
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f5596f62-3de5-47b1-91e8-a4104b596b96")
+ ICoreWebView2PermissionSettingCollectionView : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetValueAtIndex(
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2PermissionSetting * *permissionSetting) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_Count(
+ /* [retval][out] */ UINT32 * value) = 0;
+ };
+
+#else /* C style interface */
+
+ typedef struct ICoreWebView2PermissionSettingCollectionViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT(STDMETHODCALLTYPE *QueryInterface)(
+ ICoreWebView2PermissionSettingCollectionView *This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG(STDMETHODCALLTYPE *AddRef)(
+ ICoreWebView2PermissionSettingCollectionView *This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG(STDMETHODCALLTYPE *Release)(
+ ICoreWebView2PermissionSettingCollectionView *This);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionSettingCollectionView, GetValueAtIndex)
+ HRESULT(STDMETHODCALLTYPE *GetValueAtIndex)(
+ ICoreWebView2PermissionSettingCollectionView *This,
+ /* [in] */ UINT32 index,
+ /* [retval][out] */ ICoreWebView2PermissionSetting **permissionSetting);
+
+ DECLSPEC_XFGVIRT(ICoreWebView2PermissionSettingCollectionView, get_Count)
+ /* [propget] */ HRESULT(STDMETHODCALLTYPE *get_Count)(
+ ICoreWebView2PermissionSettingCollectionView *This,
+ /* [retval][out] */ UINT32 *value);
+
+ END_INTERFACE
+ } ICoreWebView2PermissionSettingCollectionViewVtbl;
+
+ interface ICoreWebView2PermissionSettingCollectionView
+ {
+ CONST_VTBL struct ICoreWebView2PermissionSettingCollectionViewVtbl *lpVtbl;
+ };
+
+#ifdef COBJMACROS
+
+#define ICoreWebView2PermissionSettingCollectionView_QueryInterface(This, riid, ppvObject) \
+ ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
+
+#define ICoreWebView2PermissionSettingCollectionView_AddRef(This) \
+ ((This)->lpVtbl->AddRef(This))
+
+#define ICoreWebView2PermissionSettingCollectionView_Release(This) \
+ ((This)->lpVtbl->Release(This))
+
+#define ICoreWebView2PermissionSettingCollectionView_GetValueAtIndex(This, index, permissionSetting) \
+ ((This)->lpVtbl->GetValueAtIndex(This, index, permissionSetting))
+
+#define ICoreWebView2PermissionSettingCollectionView_get_Count(This, value) \
+ ((This)->lpVtbl->get_Count(This, value))
+
+#endif /* COBJMACROS */
+
+#endif /* C style interface */
+
+#endif /* __ICoreWebView2PermissionSettingCollectionView_INTERFACE_DEFINED__ */
+
+#endif /* __WebView2_LIBRARY_DEFINED__ */
+
+ /* Additional Prototypes for ALL interfaces */
+
+ /* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/app/webview/glue.c b/app/webview/glue.c
new file mode 100644
index 000000000..835f8e654
--- /dev/null
+++ b/app/webview/glue.c
@@ -0,0 +1,36 @@
+#include "webview.h"
+
+#include
+#include
+
+struct binding_context {
+ webview_t w;
+ uintptr_t index;
+};
+
+void _webviewDispatchGoCallback(void *);
+void _webviewBindingGoCallback(webview_t, char *, char *, uintptr_t);
+
+static void _webview_dispatch_cb(webview_t w, void *arg) {
+ _webviewDispatchGoCallback(arg);
+}
+
+static void _webview_binding_cb(const char *id, const char *req, void *arg) {
+ struct binding_context *ctx = (struct binding_context *) arg;
+ _webviewBindingGoCallback(ctx->w, (char *)id, (char *)req, ctx->index);
+}
+
+void CgoWebViewDispatch(webview_t w, uintptr_t arg) {
+ webview_dispatch(w, _webview_dispatch_cb, (void *)arg);
+}
+
+void CgoWebViewBind(webview_t w, const char *name, uintptr_t index) {
+ struct binding_context *ctx = calloc(1, sizeof(struct binding_context));
+ ctx->w = w;
+ ctx->index = index;
+ webview_bind(w, name, _webview_binding_cb, (void *)ctx);
+}
+
+void CgoWebViewUnbind(webview_t w, const char *name) {
+ webview_unbind(w, name);
+}
diff --git a/app/webview/webview.cc b/app/webview/webview.cc
new file mode 100644
index 000000000..2e2d7dc97
--- /dev/null
+++ b/app/webview/webview.cc
@@ -0,0 +1 @@
+#include "webview.h"
\ No newline at end of file
diff --git a/app/webview/webview.go b/app/webview/webview.go
new file mode 100644
index 000000000..76bc50c23
--- /dev/null
+++ b/app/webview/webview.go
@@ -0,0 +1,368 @@
+//go:build windows || darwin
+
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 Serge Zaitsev
+ * Copyright (c) 2022 Steffen André Langnes
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package webview
+
+/*
+#cgo CFLAGS: -I${SRCDIR}/libs/webview/include
+#cgo CXXFLAGS: -I${SRCDIR}/libs/webview/include -DWEBVIEW_STATIC
+
+#cgo darwin CXXFLAGS: -DWEBVIEW_COCOA -std=c++11
+#cgo darwin LDFLAGS: -framework WebKit -ldl
+
+#cgo windows CXXFLAGS: -DWEBVIEW_EDGE -std=c++14 -I${SRCDIR}/libs/mswebview2/include
+#cgo windows LDFLAGS: -static -ladvapi32 -lole32 -lshell32 -lshlwapi -luser32 -lversion
+
+#include "webview.h"
+
+#include
+#include
+
+void CgoWebViewDispatch(webview_t w, uintptr_t arg);
+void CgoWebViewBind(webview_t w, const char *name, uintptr_t index);
+void CgoWebViewUnbind(webview_t w, const char *name);
+
+void webview_set_zoom(webview_t w, double level);
+double webview_get_zoom(webview_t w);
+*/
+import "C"
+
+import (
+ "encoding/json"
+ "errors"
+ "reflect"
+ "runtime"
+ "sync"
+ "unsafe"
+)
+
+func init() {
+ // Ensure that main.main is called from the main thread
+ runtime.LockOSThread()
+}
+
+// Hints are used to configure window sizing and resizing
+type Hint int
+
+const (
+ // Width and height are default size
+ HintNone = C.WEBVIEW_HINT_NONE
+
+ // Window size can not be changed by a user
+ HintFixed = C.WEBVIEW_HINT_FIXED
+
+ // Width and height are minimum bounds
+ HintMin = C.WEBVIEW_HINT_MIN
+
+ // Width and height are maximum bounds
+ HintMax = C.WEBVIEW_HINT_MAX
+)
+
+type WebView interface {
+ // Run runs the main loop until it's terminated. After this function exits -
+ // you must destroy the webview.
+ Run()
+
+ // Terminate stops the main loop. It is safe to call this function from
+ // a background thread.
+ Terminate()
+
+ // Dispatch posts a function to be executed on the main thread. You normally
+ // do not need to call this function, unless you want to tweak the native
+ // window.
+ Dispatch(f func())
+
+ // Destroy destroys a webview and closes the native window.
+ Destroy()
+
+ // Window returns a native window handle pointer. When using GTK backend the
+ // pointer is GtkWindow pointer, when using Cocoa backend the pointer is
+ // NSWindow pointer, when using Win32 backend the pointer is HWND pointer.
+ Window() unsafe.Pointer
+
+ // SetTitle updates the title of the native window. Must be called from the UI
+ // thread.
+ SetTitle(title string)
+
+ // SetSize updates native window size. See Hint constants.
+ SetSize(w int, h int, hint Hint)
+
+ // Navigate navigates webview to the given URL. URL may be a properly encoded data.
+ // URI. Examples:
+ // w.Navigate("https://github.com/webview/webview")
+ // w.Navigate("data:text/html,%3Ch1%3EHello%3C%2Fh1%3E")
+ // w.Navigate("data:text/html;base64,PGgxPkhlbGxvPC9oMT4=")
+ Navigate(url string)
+
+ // SetHtml sets the webview HTML directly.
+ // Example: w.SetHtml(w, "Hello ");
+ SetHtml(html string)
+
+ // Init injects JavaScript code at the initialization of the new page. Every
+ // time the webview will open a the new page - this initialization code will
+ // be executed. It is guaranteed that code is executed before window.onload.
+ Init(js string)
+
+ // Eval evaluates arbitrary JavaScript code. Evaluation happens asynchronously,
+ // also the result of the expression is ignored. Use RPC bindings if you want
+ // to receive notifications about the results of the evaluation.
+ Eval(js string)
+
+ // Bind binds a callback function so that it will appear under the given name
+ // as a global JavaScript function. Internally it uses webview_init().
+ // Callback receives a request string and a user-provided argument pointer.
+ // Request string is a JSON array of all the arguments passed to the
+ // JavaScript function.
+ //
+ // f must be a function
+ // f must return either value and error or just error
+ Bind(name string, f interface{}) error
+
+ // Removes a callback that was previously set by Bind.
+ Unbind(name string) error
+
+ // SetZoom sets the zoom level of the webview.
+ // level: 1.0 is normal size, >1.0 zooms in, <1.0 zooms out.
+ SetZoom(level float64)
+
+ // GetZoom returns the current zoom level of the webview.
+ GetZoom() float64
+}
+
+type webview struct {
+ w C.webview_t
+}
+
+var (
+ m sync.Mutex
+ index uintptr
+ dispatch = map[uintptr]func(){}
+ bindings = map[uintptr]func(id, req string) (interface{}, error){}
+)
+
+func boolToInt(b bool) C.int {
+ if b {
+ return 1
+ }
+ return 0
+}
+
+// New calls NewWindow to create a new window and a new webview instance. If debug
+// is non-zero - developer tools will be enabled (if the platform supports them).
+func New(debug bool) WebView { return NewWindow(debug, nil) }
+
+// NewWindow creates a new webview instance. If debug is non-zero - developer
+// tools will be enabled (if the platform supports them). Window parameter can be
+// a pointer to the native window handle. If it's non-null - then child WebView is
+// embedded into the given parent window. Otherwise a new window is created.
+// Depending on the platform, a GtkWindow, NSWindow or HWND pointer can be passed
+// here.
+func NewWindow(debug bool, window unsafe.Pointer) WebView {
+ w := &webview{}
+ w.w = C.webview_create(boolToInt(debug), window)
+ return w
+}
+
+func (w *webview) Destroy() {
+ C.webview_destroy(w.w)
+}
+
+func (w *webview) Run() {
+ C.webview_run(w.w)
+}
+
+func (w *webview) Terminate() {
+ C.webview_terminate(w.w)
+}
+
+func (w *webview) Window() unsafe.Pointer {
+ return C.webview_get_window(w.w)
+}
+
+func (w *webview) Navigate(url string) {
+ s := C.CString(url)
+ defer C.free(unsafe.Pointer(s))
+ C.webview_navigate(w.w, s)
+}
+
+func (w *webview) SetHtml(html string) {
+ s := C.CString(html)
+ defer C.free(unsafe.Pointer(s))
+ C.webview_set_html(w.w, s)
+}
+
+func (w *webview) SetTitle(title string) {
+ s := C.CString(title)
+ defer C.free(unsafe.Pointer(s))
+ C.webview_set_title(w.w, s)
+}
+
+func (w *webview) SetSize(width int, height int, hint Hint) {
+ C.webview_set_size(w.w, C.int(width), C.int(height), C.webview_hint_t(hint))
+}
+
+func (w *webview) Init(js string) {
+ s := C.CString(js)
+ defer C.free(unsafe.Pointer(s))
+ C.webview_init(w.w, s)
+}
+
+func (w *webview) Eval(js string) {
+ s := C.CString(js)
+ defer C.free(unsafe.Pointer(s))
+ C.webview_eval(w.w, s)
+}
+
+func (w *webview) Dispatch(f func()) {
+ m.Lock()
+ for ; dispatch[index] != nil; index++ {
+ }
+ dispatch[index] = f
+ m.Unlock()
+ C.CgoWebViewDispatch(w.w, C.uintptr_t(index))
+}
+
+//export _webviewDispatchGoCallback
+func _webviewDispatchGoCallback(index unsafe.Pointer) {
+ m.Lock()
+ f := dispatch[uintptr(index)]
+ delete(dispatch, uintptr(index))
+ m.Unlock()
+ f()
+}
+
+//export _webviewBindingGoCallback
+func _webviewBindingGoCallback(w C.webview_t, id *C.char, req *C.char, index uintptr) {
+ m.Lock()
+ f := bindings[index]
+ m.Unlock()
+ jsString := func(v interface{}) string { b, _ := json.Marshal(v); return string(b) }
+ status := 0
+ var result string
+ if res, err := f(C.GoString(id), C.GoString(req)); err != nil {
+ status = -1
+ result = jsString(err.Error())
+ } else if b, err := json.Marshal(res); err != nil {
+ status = -1
+ result = jsString(err.Error())
+ } else {
+ status = 0
+ result = string(b)
+ }
+ s := C.CString(result)
+ defer C.free(unsafe.Pointer(s))
+ C.webview_return(w, id, C.int(status), s)
+}
+
+func (w *webview) Bind(name string, f interface{}) error {
+ v := reflect.ValueOf(f)
+ // f must be a function
+ if v.Kind() != reflect.Func {
+ return errors.New("only functions can be bound")
+ }
+ // f must return either value and error or just error
+ if n := v.Type().NumOut(); n > 2 {
+ return errors.New("function may only return a value or a value+error")
+ }
+
+ binding := func(id, req string) (interface{}, error) {
+ raw := []json.RawMessage{}
+ if err := json.Unmarshal([]byte(req), &raw); err != nil {
+ return nil, err
+ }
+
+ isVariadic := v.Type().IsVariadic()
+ numIn := v.Type().NumIn()
+ if (isVariadic && len(raw) < numIn-1) || (!isVariadic && len(raw) != numIn) {
+ return nil, errors.New("function arguments mismatch")
+ }
+ args := []reflect.Value{}
+ for i := range raw {
+ var arg reflect.Value
+ if isVariadic && i >= numIn-1 {
+ arg = reflect.New(v.Type().In(numIn - 1).Elem())
+ } else {
+ arg = reflect.New(v.Type().In(i))
+ }
+ if err := json.Unmarshal(raw[i], arg.Interface()); err != nil {
+ return nil, err
+ }
+ args = append(args, arg.Elem())
+ }
+ errorType := reflect.TypeOf((*error)(nil)).Elem()
+ res := v.Call(args)
+ switch len(res) {
+ case 0:
+ // No results from the function, just return nil
+ return nil, nil
+ case 1:
+ // One result may be a value, or an error
+ if res[0].Type().Implements(errorType) {
+ if res[0].Interface() != nil {
+ return nil, res[0].Interface().(error)
+ }
+ return nil, nil
+ }
+ return res[0].Interface(), nil
+ case 2:
+ // Two results: first one is value, second is error
+ if !res[1].Type().Implements(errorType) {
+ return nil, errors.New("second return value must be an error")
+ }
+ if res[1].Interface() == nil {
+ return res[0].Interface(), nil
+ }
+ return res[0].Interface(), res[1].Interface().(error)
+ default:
+ return nil, errors.New("unexpected number of return values")
+ }
+ }
+
+ m.Lock()
+ for ; bindings[index] != nil; index++ {
+ }
+ bindings[index] = binding
+ m.Unlock()
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+ C.CgoWebViewBind(w.w, cname, C.uintptr_t(index))
+ return nil
+}
+
+func (w *webview) Unbind(name string) error {
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+ C.CgoWebViewUnbind(w.w, cname)
+ return nil
+}
+
+func (w *webview) SetZoom(level float64) {
+ C.webview_set_zoom(w.w, C.double(level))
+}
+
+func (w *webview) GetZoom() float64 {
+ return float64(C.webview_get_zoom(w.w))
+}
diff --git a/app/webview/webview.h b/app/webview/webview.h
new file mode 100644
index 000000000..0a14f380e
--- /dev/null
+++ b/app/webview/webview.h
@@ -0,0 +1,3997 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 Serge Zaitsev
+ * Copyright (c) 2022 Steffen André Langnes
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/// @file webview.h
+
+#ifndef WEBVIEW_H
+#define WEBVIEW_H
+
+/**
+ * Used to specify function linkage such as extern, inline, etc.
+ *
+ * When @c WEBVIEW_API is not already defined, the defaults are as follows:
+ *
+ * - @c inline when compiling C++ code.
+ * - @c extern when compiling C code.
+ *
+ * The following macros can be used to automatically set an appropriate
+ * value for @c WEBVIEW_API:
+ *
+ * - Define @c WEBVIEW_BUILD_SHARED when building a shared library.
+ * - Define @c WEBVIEW_SHARED when using a shared library.
+ * - Define @c WEBVIEW_STATIC when building or using a static library.
+ */
+#ifndef WEBVIEW_API
+#if defined(WEBVIEW_SHARED) || defined(WEBVIEW_BUILD_SHARED)
+#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(WEBVIEW_BUILD_SHARED)
+#define WEBVIEW_API __declspec(dllexport)
+#else
+#define WEBVIEW_API __declspec(dllimport)
+#endif
+#else
+#define WEBVIEW_API __attribute__((visibility("default")))
+#endif
+#elif !defined(WEBVIEW_STATIC) && defined(__cplusplus)
+#define WEBVIEW_API inline
+#else
+#define WEBVIEW_API extern
+#endif
+#endif
+
+/// @name Version
+/// @{
+
+#ifndef WEBVIEW_VERSION_MAJOR
+/// The current library major version.
+#define WEBVIEW_VERSION_MAJOR 0
+#endif
+
+#ifndef WEBVIEW_VERSION_MINOR
+/// The current library minor version.
+#define WEBVIEW_VERSION_MINOR 11
+#endif
+
+#ifndef WEBVIEW_VERSION_PATCH
+/// The current library patch version.
+#define WEBVIEW_VERSION_PATCH 0
+#endif
+
+#ifndef WEBVIEW_VERSION_PRE_RELEASE
+/// SemVer 2.0.0 pre-release labels prefixed with "-".
+#define WEBVIEW_VERSION_PRE_RELEASE ""
+#endif
+
+#ifndef WEBVIEW_VERSION_BUILD_METADATA
+/// SemVer 2.0.0 build metadata prefixed with "+".
+#define WEBVIEW_VERSION_BUILD_METADATA ""
+#endif
+
+/// @}
+
+/// @name Used internally
+/// @{
+
+/// Utility macro for stringifying a macro argument.
+#define WEBVIEW_STRINGIFY(x) #x
+
+/// Utility macro for stringifying the result of a macro argument expansion.
+#define WEBVIEW_EXPAND_AND_STRINGIFY(x) WEBVIEW_STRINGIFY(x)
+
+/// @}
+
+/// @name Version
+/// @{
+
+/// SemVer 2.0.0 version number in MAJOR.MINOR.PATCH format.
+#define WEBVIEW_VERSION_NUMBER \
+ WEBVIEW_EXPAND_AND_STRINGIFY(WEBVIEW_VERSION_MAJOR) \
+ "." WEBVIEW_EXPAND_AND_STRINGIFY( \
+ WEBVIEW_VERSION_MINOR) "." WEBVIEW_EXPAND_AND_STRINGIFY(WEBVIEW_VERSION_PATCH)
+
+/// @}
+
+/// Holds the elements of a MAJOR.MINOR.PATCH version number.
+typedef struct {
+ /// Major version.
+ unsigned int major;
+ /// Minor version.
+ unsigned int minor;
+ /// Patch version.
+ unsigned int patch;
+} webview_version_t;
+
+/// Holds the library's version information.
+typedef struct {
+ /// The elements of the version number.
+ webview_version_t version;
+ /// SemVer 2.0.0 version number in MAJOR.MINOR.PATCH format.
+ char version_number[32];
+ /// SemVer 2.0.0 pre-release labels prefixed with "-" if specified, otherwise
+ /// an empty string.
+ char pre_release[48];
+ /// SemVer 2.0.0 build metadata prefixed with "+", otherwise an empty string.
+ char build_metadata[48];
+} webview_version_info_t;
+
+/// Pointer to a webview instance.
+typedef void *webview_t;
+
+/// Native handle kind. The actual type depends on the backend.
+typedef enum {
+ /// Top-level window. @c GtkWindow pointer (GTK), @c NSWindow pointer (Cocoa)
+ /// or @c HWND (Win32).
+ WEBVIEW_NATIVE_HANDLE_KIND_UI_WINDOW,
+ /// Browser widget. @c GtkWidget pointer (GTK), @c NSView pointer (Cocoa) or
+ /// @c HWND (Win32).
+ WEBVIEW_NATIVE_HANDLE_KIND_UI_WIDGET,
+ /// Browser controller. @c WebKitWebView pointer (WebKitGTK), @c WKWebView
+ /// pointer (Cocoa/WebKit) or @c ICoreWebView2Controller pointer
+ /// (Win32/WebView2).
+ WEBVIEW_NATIVE_HANDLE_KIND_BROWSER_CONTROLLER
+} webview_native_handle_kind_t;
+
+/// Window size hints
+typedef enum {
+ /// Width and height are default size.
+ WEBVIEW_HINT_NONE,
+ /// Width and height are minimum bounds.
+ WEBVIEW_HINT_MIN,
+ /// Width and height are maximum bounds.
+ WEBVIEW_HINT_MAX,
+ /// Window size can not be changed by a user.
+ WEBVIEW_HINT_FIXED
+} webview_hint_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Creates a new webview instance.
+ *
+ * @param debug Enable developer tools if supported by the backend.
+ * @param window Optional native window handle, i.e. @c GtkWindow pointer
+ * @c NSWindow pointer (Cocoa) or @c HWND (Win32). If non-null,
+ * the webview widget is embedded into the given window, and the
+ * caller is expected to assume responsibility for the window as
+ * well as application lifecycle. If the window handle is null,
+ * a new window is created and both the window and application
+ * lifecycle are managed by the webview instance.
+ * @remark Win32: The function also accepts a pointer to @c HWND (Win32) in the
+ * window parameter for backward compatibility.
+ * @remark Win32/WebView2: @c CoInitializeEx should be called with
+ * @c COINIT_APARTMENTTHREADED before attempting to call this function
+ * with an existing window. Omitting this step may cause WebView2
+ * initialization to fail.
+ * @return @c NULL on failure. Creation can fail for various reasons such
+ * as when required runtime dependencies are missing or when window
+ * creation fails.
+ */
+WEBVIEW_API webview_t webview_create(int debug, void *window);
+
+/**
+ * Destroys a webview instance and closes the native window.
+ *
+ * @param w The webview instance.
+ */
+WEBVIEW_API void webview_destroy(webview_t w);
+
+/**
+ * Runs the main loop until it's terminated.
+ *
+ * @param w The webview instance.
+ */
+WEBVIEW_API void webview_run(webview_t w);
+
+/**
+ * Stops the main loop. It is safe to call this function from another other
+ * background thread.
+ *
+ * @param w The webview instance.
+ */
+WEBVIEW_API void webview_terminate(webview_t w);
+
+/**
+ * Schedules a function to be invoked on the thread with the run/event loop.
+ * Use this function e.g. to interact with the library or native handles.
+ *
+ * @param w The webview instance.
+ * @param fn The function to be invoked.
+ * @param arg An optional argument passed along to the callback function.
+ */
+WEBVIEW_API void
+webview_dispatch(webview_t w, void (*fn)(webview_t w, void *arg), void *arg);
+
+/**
+ * Returns the native handle of the window associated with the webview instance.
+ * The handle can be a @c GtkWindow pointer (GTK), @c NSWindow pointer (Cocoa)
+ * or @c HWND (Win32).
+ *
+ * @param w The webview instance.
+ * @return The handle of the native window.
+ */
+WEBVIEW_API void *webview_get_window(webview_t w);
+
+/**
+ * Get a native handle of choice.
+ *
+ * @param w The webview instance.
+ * @param kind The kind of handle to retrieve.
+ * @return The native handle or @c NULL.
+ * @since 0.11
+ */
+WEBVIEW_API void *webview_get_native_handle(webview_t w,
+ webview_native_handle_kind_t kind);
+
+/**
+ * Updates the title of the native window.
+ *
+ * @param w The webview instance.
+ * @param title The new title.
+ */
+WEBVIEW_API void webview_set_title(webview_t w, const char *title);
+
+/**
+ * Updates the size of the native window.
+ *
+ * @param w The webview instance.
+ * @param width New width.
+ * @param height New height.
+ * @param hints Size hints.
+ */
+WEBVIEW_API void webview_set_size(webview_t w, int width, int height,
+ webview_hint_t hints);
+
+/**
+ * Navigates webview to the given URL. URL may be a properly encoded data URI.
+ *
+ * Example:
+ * @code{.c}
+ * webview_navigate(w, "https://github.com/webview/webview");
+ * webview_navigate(w, "data:text/html,%3Ch1%3EHello%3C%2Fh1%3E");
+ * webview_navigate(w, "data:text/html;base64,PGgxPkhlbGxvPC9oMT4=");
+ * @endcode
+ *
+ * @param w The webview instance.
+ * @param url URL.
+ */
+WEBVIEW_API void webview_navigate(webview_t w, const char *url);
+
+/**
+ * Load HTML content into the webview.
+ *
+ * Example:
+ * @code{.c}
+ * webview_set_html(w, "Hello ");
+ * @endcode
+ *
+ * @param w The webview instance.
+ * @param html HTML content.
+ */
+WEBVIEW_API void webview_set_html(webview_t w, const char *html);
+
+/**
+ * Injects JavaScript code to be executed immediately upon loading a page.
+ * The code will be executed before @c window.onload.
+ *
+ * @param w The webview instance.
+ * @param js JS content.
+ */
+WEBVIEW_API void webview_init(webview_t w, const char *js);
+
+/**
+ * Evaluates arbitrary JavaScript code.
+ *
+ * Use bindings if you need to communicate the result of the evaluation.
+ *
+ * @param w The webview instance.
+ * @param js JS content.
+ */
+WEBVIEW_API void webview_eval(webview_t w, const char *js);
+
+/**
+ * Binds a function pointer to a new global JavaScript function.
+ *
+ * Internally, JS glue code is injected to create the JS function by the
+ * given name. The callback function is passed a sequential request
+ * identifier, a request string and a user-provided argument. The request
+ * string is a JSON array of the arguments passed to the JS function.
+ *
+ * @param w The webview instance.
+ * @param name Name of the JS function.
+ * @param fn Callback function.
+ * @param arg User argument.
+ */
+WEBVIEW_API void webview_bind(webview_t w, const char *name,
+ void (*fn)(const char *seq, const char *req,
+ void *arg),
+ void *arg);
+
+/**
+ * Removes a binding created with webview_bind().
+ *
+ * @param w The webview instance.
+ * @param name Name of the binding.
+ */
+WEBVIEW_API void webview_unbind(webview_t w, const char *name);
+
+/**
+ * Responds to a binding call from the JS side.
+ *
+ * @param w The webview instance.
+ * @param seq The sequence number of the binding call. Pass along the value
+ * received in the binding handler (see webview_bind()).
+ * @param status A status of zero tells the JS side that the binding call was
+ * succesful; any other value indicates an error.
+ * @param result The result of the binding call to be returned to the JS side.
+ * This must either be a valid JSON value or an empty string for
+ * the primitive JS value @c undefined.
+ */
+WEBVIEW_API void webview_return(webview_t w, const char *seq, int status,
+ const char *result);
+
+/**
+ * Get the library's version information.
+ *
+ * @since 0.10
+ */
+WEBVIEW_API const webview_version_info_t *webview_version(void);
+
+/**
+ * Set the zoom level of the webview.
+ *
+ * @param w The webview instance.
+ * @param level The zoom level. 1.0 is normal size, >1.0 zooms in, <1.0 zooms out.
+ */
+WEBVIEW_API void webview_set_zoom(webview_t w, double level);
+
+/**
+ * Get the current zoom level of the webview.
+ *
+ * @param w The webview instance.
+ * @return The current zoom level.
+ */
+WEBVIEW_API double webview_get_zoom(webview_t w);
+
+// TODO (jmorganca): these forward declarations should be
+// in a header file but due to linking issues they live here for now
+typedef struct
+{
+ char *label;
+ int enabled;
+ int separator;
+} menuItem;
+int menu_get_item_count();
+void *menu_get_items();
+void menu_handle_selection(char *item);
+
+#ifdef __cplusplus
+}
+
+#ifndef WEBVIEW_HEADER
+
+#if !defined(WEBVIEW_GTK) && !defined(WEBVIEW_COCOA) && !defined(WEBVIEW_EDGE)
+#if defined(__APPLE__)
+#define WEBVIEW_COCOA
+#elif defined(__unix__)
+#define WEBVIEW_GTK
+#elif defined(_WIN32)
+#define WEBVIEW_EDGE
+#else
+#error "please, specify webview backend"
+#endif
+#endif
+
+#ifndef WEBVIEW_DEPRECATED
+#if __cplusplus >= 201402L
+#define WEBVIEW_DEPRECATED(reason) [[deprecated(reason)]]
+#elif defined(_MSC_VER)
+#define WEBVIEW_DEPRECATED(reason) __declspec(deprecated(reason))
+#else
+#define WEBVIEW_DEPRECATED(reason) __attribute__((deprecated(reason)))
+#endif
+#endif
+
+#ifndef WEBVIEW_DEPRECATED_PRIVATE
+#define WEBVIEW_DEPRECATED_PRIVATE \
+ WEBVIEW_DEPRECATED("Private API should not be used")
+#endif
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#if defined(_WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include
+#else
+#include
+#endif
+
+namespace webview {
+
+using dispatch_fn_t = std::function;
+
+namespace detail {
+
+// The library's version information.
+constexpr const webview_version_info_t library_version_info{
+ {WEBVIEW_VERSION_MAJOR, WEBVIEW_VERSION_MINOR, WEBVIEW_VERSION_PATCH},
+ WEBVIEW_VERSION_NUMBER,
+ WEBVIEW_VERSION_PRE_RELEASE,
+ WEBVIEW_VERSION_BUILD_METADATA};
+
+#if defined(_WIN32)
+// Converts a narrow (UTF-8-encoded) string into a wide (UTF-16-encoded) string.
+inline std::wstring widen_string(const std::string &input) {
+ if (input.empty()) {
+ return std::wstring();
+ }
+ UINT cp = CP_UTF8;
+ DWORD flags = MB_ERR_INVALID_CHARS;
+ auto input_c = input.c_str();
+ auto input_length = static_cast(input.size());
+ auto required_length =
+ MultiByteToWideChar(cp, flags, input_c, input_length, nullptr, 0);
+ if (required_length > 0) {
+ std::wstring output(static_cast(required_length), L'\0');
+ if (MultiByteToWideChar(cp, flags, input_c, input_length, &output[0],
+ required_length) > 0) {
+ return output;
+ }
+ }
+ // Failed to convert string from UTF-8 to UTF-16
+ return std::wstring();
+}
+
+// Converts a wide (UTF-16-encoded) string into a narrow (UTF-8-encoded) string.
+inline std::string narrow_string(const std::wstring &input) {
+ struct wc_flags {
+ enum TYPE : unsigned int {
+ // WC_ERR_INVALID_CHARS
+ err_invalid_chars = 0x00000080U
+ };
+ };
+ if (input.empty()) {
+ return std::string();
+ }
+ UINT cp = CP_UTF8;
+ DWORD flags = wc_flags::err_invalid_chars;
+ auto input_c = input.c_str();
+ auto input_length = static_cast(input.size());
+ auto required_length = WideCharToMultiByte(cp, flags, input_c, input_length,
+ nullptr, 0, nullptr, nullptr);
+ if (required_length > 0) {
+ std::string output(static_cast(required_length), '\0');
+ if (WideCharToMultiByte(cp, flags, input_c, input_length, &output[0],
+ required_length, nullptr, nullptr) > 0) {
+ return output;
+ }
+ }
+ // Failed to convert string from UTF-16 to UTF-8
+ return std::string();
+}
+#endif
+
+inline int json_parse_c(const char *s, size_t sz, const char *key, size_t keysz,
+ const char **value, size_t *valuesz) {
+ enum {
+ JSON_STATE_VALUE,
+ JSON_STATE_LITERAL,
+ JSON_STATE_STRING,
+ JSON_STATE_ESCAPE,
+ JSON_STATE_UTF8
+ } state = JSON_STATE_VALUE;
+ const char *k = nullptr;
+ int index = 1;
+ int depth = 0;
+ int utf8_bytes = 0;
+
+ *value = nullptr;
+ *valuesz = 0;
+
+ if (key == nullptr) {
+ index = static_cast(keysz);
+ if (index < 0) {
+ return -1;
+ }
+ keysz = 0;
+ }
+
+ for (; sz > 0; s++, sz--) {
+ enum {
+ JSON_ACTION_NONE,
+ JSON_ACTION_START,
+ JSON_ACTION_END,
+ JSON_ACTION_START_STRUCT,
+ JSON_ACTION_END_STRUCT
+ } action = JSON_ACTION_NONE;
+ auto c = static_cast(*s);
+ switch (state) {
+ case JSON_STATE_VALUE:
+ if (c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == ',' ||
+ c == ':') {
+ continue;
+ } else if (c == '"') {
+ action = JSON_ACTION_START;
+ state = JSON_STATE_STRING;
+ } else if (c == '{' || c == '[') {
+ action = JSON_ACTION_START_STRUCT;
+ } else if (c == '}' || c == ']') {
+ action = JSON_ACTION_END_STRUCT;
+ } else if (c == 't' || c == 'f' || c == 'n' || c == '-' ||
+ (c >= '0' && c <= '9')) {
+ action = JSON_ACTION_START;
+ state = JSON_STATE_LITERAL;
+ } else {
+ return -1;
+ }
+ break;
+ case JSON_STATE_LITERAL:
+ if (c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == ',' ||
+ c == ']' || c == '}' || c == ':') {
+ state = JSON_STATE_VALUE;
+ s--;
+ sz++;
+ action = JSON_ACTION_END;
+ } else if (c < 32 || c > 126) {
+ return -1;
+ } // fallthrough
+ case JSON_STATE_STRING:
+ if (c < 32 || (c > 126 && c < 192)) {
+ return -1;
+ } else if (c == '"') {
+ action = JSON_ACTION_END;
+ state = JSON_STATE_VALUE;
+ } else if (c == '\\') {
+ state = JSON_STATE_ESCAPE;
+ } else if (c >= 192 && c < 224) {
+ utf8_bytes = 1;
+ state = JSON_STATE_UTF8;
+ } else if (c >= 224 && c < 240) {
+ utf8_bytes = 2;
+ state = JSON_STATE_UTF8;
+ } else if (c >= 240 && c < 247) {
+ utf8_bytes = 3;
+ state = JSON_STATE_UTF8;
+ } else if (c >= 128 && c < 192) {
+ return -1;
+ }
+ break;
+ case JSON_STATE_ESCAPE:
+ if (c == '"' || c == '\\' || c == '/' || c == 'b' || c == 'f' ||
+ c == 'n' || c == 'r' || c == 't' || c == 'u') {
+ state = JSON_STATE_STRING;
+ } else {
+ return -1;
+ }
+ break;
+ case JSON_STATE_UTF8:
+ if (c < 128 || c > 191) {
+ return -1;
+ }
+ utf8_bytes--;
+ if (utf8_bytes == 0) {
+ state = JSON_STATE_STRING;
+ }
+ break;
+ default:
+ return -1;
+ }
+
+ if (action == JSON_ACTION_END_STRUCT) {
+ depth--;
+ }
+
+ if (depth == 1) {
+ if (action == JSON_ACTION_START || action == JSON_ACTION_START_STRUCT) {
+ if (index == 0) {
+ *value = s;
+ } else if (keysz > 0 && index == 1) {
+ k = s;
+ } else {
+ index--;
+ }
+ } else if (action == JSON_ACTION_END ||
+ action == JSON_ACTION_END_STRUCT) {
+ if (*value != nullptr && index == 0) {
+ *valuesz = (size_t)(s + 1 - *value);
+ return 0;
+ } else if (keysz > 0 && k != nullptr) {
+ if (keysz == (size_t)(s - k - 1) && memcmp(key, k + 1, keysz) == 0) {
+ index = 0;
+ } else {
+ index = 2;
+ }
+ k = nullptr;
+ }
+ }
+ }
+
+ if (action == JSON_ACTION_START_STRUCT) {
+ depth++;
+ }
+ }
+ return -1;
+}
+
+constexpr bool is_json_special_char(char c) {
+ return c == '"' || c == '\\' || c == '\b' || c == '\f' || c == '\n' ||
+ c == '\r' || c == '\t';
+}
+
+constexpr bool is_ascii_control_char(char c) { return c >= 0 && c <= 0x1f; }
+
+inline std::string json_escape(const std::string &s, bool add_quotes = true) {
+ // Calculate the size of the resulting string.
+ // Add space for the double quotes.
+ size_t required_length = add_quotes ? 2 : 0;
+ for (auto c : s) {
+ if (is_json_special_char(c)) {
+ // '\' and a single following character
+ required_length += 2;
+ continue;
+ }
+ if (is_ascii_control_char(c)) {
+ // '\', 'u', 4 digits
+ required_length += 6;
+ continue;
+ }
+ ++required_length;
+ }
+ // Allocate memory for resulting string only once.
+ std::string result;
+ result.reserve(required_length);
+ if (add_quotes) {
+ result += '"';
+ }
+ // Copy string while escaping characters.
+ for (auto c : s) {
+ if (is_json_special_char(c)) {
+ static constexpr char special_escape_table[256] =
+ "\0\0\0\0\0\0\0\0btn\0fr\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\"\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\\";
+ result += '\\';
+ // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index)
+ result += special_escape_table[static_cast(c)];
+ continue;
+ }
+ if (is_ascii_control_char(c)) {
+ // Escape as \u00xx
+ static constexpr char hex_alphabet[]{"0123456789abcdef"};
+ auto uc = static_cast(c);
+ auto h = (uc >> 4) & 0x0f;
+ auto l = uc & 0x0f;
+ result += "\\u00";
+ // NOLINTBEGIN(cppcoreguidelines-pro-bounds-constant-array-index)
+ result += hex_alphabet[h];
+ result += hex_alphabet[l];
+ // NOLINTEND(cppcoreguidelines-pro-bounds-constant-array-index)
+ continue;
+ }
+ result += c;
+ }
+ if (add_quotes) {
+ result += '"';
+ }
+ // Should have calculated the exact amount of memory needed
+ assert(required_length == result.size());
+ return result;
+}
+
+inline int json_unescape(const char *s, size_t n, char *out) {
+ int r = 0;
+ if (*s++ != '"') {
+ return -1;
+ }
+ while (n > 2) {
+ char c = *s;
+ if (c == '\\') {
+ s++;
+ n--;
+ switch (*s) {
+ case 'b':
+ c = '\b';
+ break;
+ case 'f':
+ c = '\f';
+ break;
+ case 'n':
+ c = '\n';
+ break;
+ case 'r':
+ c = '\r';
+ break;
+ case 't':
+ c = '\t';
+ break;
+ case '\\':
+ c = '\\';
+ break;
+ case '/':
+ c = '/';
+ break;
+ case '\"':
+ c = '\"';
+ break;
+ default: // TODO: support unicode decoding
+ return -1;
+ }
+ }
+ if (out != nullptr) {
+ *out++ = c;
+ }
+ s++;
+ n--;
+ r++;
+ }
+ if (*s != '"') {
+ return -1;
+ }
+ if (out != nullptr) {
+ *out = '\0';
+ }
+ return r;
+}
+
+inline std::string json_parse(const std::string &s, const std::string &key,
+ const int index) {
+ const char *value;
+ size_t value_sz;
+ if (key.empty()) {
+ json_parse_c(s.c_str(), s.length(), nullptr, index, &value, &value_sz);
+ } else {
+ json_parse_c(s.c_str(), s.length(), key.c_str(), key.length(), &value,
+ &value_sz);
+ }
+ if (value != nullptr) {
+ if (value[0] != '"') {
+ return {value, value_sz};
+ }
+ int n = json_unescape(value, value_sz, nullptr);
+ if (n > 0) {
+ char *decoded = new char[n + 1];
+ json_unescape(value, value_sz, decoded);
+ std::string result(decoded, n);
+ delete[] decoded;
+ return result;
+ }
+ }
+ return "";
+}
+
+// Holds a symbol name and associated type for code clarity.
+template class library_symbol {
+public:
+ using type = T;
+
+ constexpr explicit library_symbol(const char *name) : m_name(name) {}
+ constexpr const char *get_name() const { return m_name; }
+
+private:
+ const char *m_name;
+};
+
+// Loads a native shared library and allows one to get addresses for those
+// symbols.
+class native_library {
+public:
+ native_library() = default;
+
+ explicit native_library(const std::string &name)
+ : m_handle{load_library(name)} {}
+
+#ifdef _WIN32
+ explicit native_library(const std::wstring &name)
+ : m_handle{load_library(name)} {}
+#endif
+
+ ~native_library() {
+ if (m_handle) {
+#ifdef _WIN32
+ FreeLibrary(m_handle);
+#else
+ dlclose(m_handle);
+#endif
+ m_handle = nullptr;
+ }
+ }
+
+ native_library(const native_library &other) = delete;
+ native_library &operator=(const native_library &other) = delete;
+ native_library(native_library &&other) noexcept { *this = std::move(other); }
+
+ native_library &operator=(native_library &&other) noexcept {
+ if (this == &other) {
+ return *this;
+ }
+ m_handle = other.m_handle;
+ other.m_handle = nullptr;
+ return *this;
+ }
+
+ // Returns true if the library is currently loaded; otherwise false.
+ operator bool() const { return is_loaded(); }
+
+ // Get the address for the specified symbol or nullptr if not found.
+ template
+ typename Symbol::type get(const Symbol &symbol) const {
+ if (is_loaded()) {
+ // NOLINTBEGIN(cppcoreguidelines-pro-type-reinterpret-cast)
+#ifdef _WIN32
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wcast-function-type"
+#endif
+ return reinterpret_cast(
+ GetProcAddress(m_handle, symbol.get_name()));
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+#else
+ return reinterpret_cast(
+ dlsym(m_handle, symbol.get_name()));
+#endif
+ // NOLINTEND(cppcoreguidelines-pro-type-reinterpret-cast)
+ }
+ return nullptr;
+ }
+
+ // Returns true if the library is currently loaded; otherwise false.
+ bool is_loaded() const { return !!m_handle; }
+
+ void detach() { m_handle = nullptr; }
+
+ // Returns true if the library by the given name is currently loaded; otherwise false.
+ static inline bool is_loaded(const std::string &name) {
+#ifdef _WIN32
+ auto handle = GetModuleHandleW(widen_string(name).c_str());
+#else
+ auto handle = dlopen(name.c_str(), RTLD_NOW | RTLD_NOLOAD);
+ if (handle) {
+ dlclose(handle);
+ }
+#endif
+ return !!handle;
+ }
+
+private:
+#ifdef _WIN32
+ using mod_handle_t = HMODULE;
+#else
+ using mod_handle_t = void *;
+#endif
+
+ static inline mod_handle_t load_library(const std::string &name) {
+#ifdef _WIN32
+ return load_library(widen_string(name));
+#else
+ return dlopen(name.c_str(), RTLD_NOW);
+#endif
+ }
+
+#ifdef _WIN32
+ static inline mod_handle_t load_library(const std::wstring &name) {
+ return LoadLibraryW(name.c_str());
+ }
+#endif
+
+ mod_handle_t m_handle{};
+};
+
+class engine_base {
+public:
+ virtual ~engine_base() = default;
+
+ void navigate(const std::string &url) {
+ if (url.empty()) {
+ navigate_impl("about:blank");
+ return;
+ }
+ navigate_impl(url);
+ }
+
+ using binding_t = std::function;
+ class binding_ctx_t {
+ public:
+ binding_ctx_t(binding_t callback, void *arg)
+ : callback(callback), arg(arg) {}
+ // This function is called upon execution of the bound JS function
+ binding_t callback;
+ // This user-supplied argument is passed to the callback
+ void *arg;
+ };
+
+ using sync_binding_t = std::function;
+
+ // Synchronous bind
+ void bind(const std::string &name, sync_binding_t fn) {
+ auto wrapper = [this, fn](const std::string &seq, const std::string &req,
+ void * /*arg*/) { resolve(seq, 0, fn(req)); };
+ bind(name, wrapper, nullptr);
+ }
+
+ // Asynchronous bind
+ void bind(const std::string &name, binding_t fn, void *arg) {
+ // NOLINTNEXTLINE(readability-container-contains): contains() requires C++20
+ if (bindings.count(name) > 0) {
+ return;
+ }
+ bindings.emplace(name, binding_ctx_t(fn, arg));
+ auto js = "(function() { var name = '" + name + "';" + R""(
+ var RPC = window._rpc = (window._rpc || {nextSeq: 1});
+ window[name] = function() {
+ var seq = RPC.nextSeq++;
+ var promise = new Promise(function(resolve, reject) {
+ RPC[seq] = {
+ resolve: resolve,
+ reject: reject,
+ };
+ });
+ window.external.invoke(JSON.stringify({
+ id: seq,
+ method: name,
+ params: Array.prototype.slice.call(arguments),
+ }));
+ return promise;
+ }
+ })())"";
+ init(js);
+ eval(js);
+ }
+
+ void unbind(const std::string &name) {
+ auto found = bindings.find(name);
+ if (found != bindings.end()) {
+ auto js = "delete window['" + name + "'];";
+ init(js);
+ eval(js);
+ bindings.erase(found);
+ }
+ }
+
+ void resolve(const std::string &seq, int status, const std::string &result) {
+ // NOLINTNEXTLINE(modernize-avoid-bind): Lambda with move requires C++14
+ dispatch(std::bind(
+ [seq, status, this](std::string escaped_result) {
+ std::string js;
+ js += "(function(){var seq = \"";
+ js += seq;
+ js += "\";\n";
+ js += "var status = ";
+ js += std::to_string(status);
+ js += ";\n";
+ js += "var result = ";
+ js += escaped_result;
+ js += ";\
+var promise = window._rpc[seq];\
+delete window._rpc[seq];\
+if (result !== undefined) {\
+ try {\
+ result = JSON.parse(result);\
+ } catch {\
+ promise.reject(new Error(\"Failed to parse binding result as JSON\"));\
+ return;\
+ }\
+}\
+if (status === 0) {\
+ promise.resolve(result);\
+} else {\
+ promise.reject(result);\
+}\
+})()";
+ eval(js);
+ },
+ result.empty() ? "undefined" : json_escape(result)));
+ }
+
+ void *window() { return window_impl(); }
+ void *widget() { return widget_impl(); }
+ void *browser_controller() { return browser_controller_impl(); };
+ void run() { run_impl(); }
+ void terminate() { terminate_impl(); }
+ void dispatch(std::function f) { dispatch_impl(f); }
+ void set_title(const std::string &title) { set_title_impl(title); }
+
+ void set_size(int width, int height, webview_hint_t hints) {
+ set_size_impl(width, height, hints);
+ }
+
+ void set_html(const std::string &html) { set_html_impl(html); }
+ void init(const std::string &js) { init_impl(js); }
+ void eval(const std::string &js) { eval_impl(js); }
+
+ void set_zoom(double level) {
+ const double minZoom = 0.9; // 90%
+ const double maxZoom = 1.2; // 120%
+ level = std::max(minZoom, std::min(maxZoom, level));
+ set_zoom_impl(level);
+ }
+ double get_zoom() { return get_zoom_impl(); }
+
+protected:
+ virtual void navigate_impl(const std::string &url) = 0;
+ virtual void *window_impl() = 0;
+ virtual void *widget_impl() = 0;
+ virtual void *browser_controller_impl() = 0;
+ virtual void run_impl() = 0;
+ virtual void terminate_impl() = 0;
+ virtual void dispatch_impl(std::function f) = 0;
+ virtual void set_title_impl(const std::string &title) = 0;
+ virtual void set_size_impl(int width, int height, webview_hint_t hints) = 0;
+ virtual void set_html_impl(const std::string &html) = 0;
+ virtual void init_impl(const std::string &js) = 0;
+ virtual void eval_impl(const std::string &js) = 0;
+ virtual void set_zoom_impl(double level) = 0;
+ virtual double get_zoom_impl() = 0;
+
+ virtual void on_message(const std::string &msg) {
+ auto seq = json_parse(msg, "id", 0);
+ auto name = json_parse(msg, "method", 0);
+ auto args = json_parse(msg, "params", 0);
+ auto found = bindings.find(name);
+ if (found == bindings.end()) {
+ return;
+ }
+ const auto &context = found->second;
+ context.callback(seq, args, context.arg);
+ }
+
+ virtual void on_window_created() { inc_window_count(); }
+
+ virtual void on_window_destroyed(bool skip_termination = false) {
+ if (dec_window_count() <= 0) {
+ if (!skip_termination) {
+ terminate();
+ }
+ }
+ }
+
+private:
+ static std::atomic_uint &window_ref_count() {
+ static std::atomic_uint ref_count{0};
+ return ref_count;
+ }
+
+ static unsigned int inc_window_count() { return ++window_ref_count(); }
+
+ static unsigned int dec_window_count() {
+ auto &count = window_ref_count();
+ if (count > 0) {
+ return --count;
+ }
+ return 0;
+ }
+
+ std::map bindings;
+};
+
+} // namespace detail
+
+WEBVIEW_DEPRECATED_PRIVATE
+inline int json_parse_c(const char *s, size_t sz, const char *key, size_t keysz,
+ const char **value, size_t *valuesz) {
+ return detail::json_parse_c(s, sz, key, keysz, value, valuesz);
+}
+
+WEBVIEW_DEPRECATED_PRIVATE
+inline std::string json_escape(const std::string &s) {
+ return detail::json_escape(s);
+}
+
+WEBVIEW_DEPRECATED_PRIVATE
+inline int json_unescape(const char *s, size_t n, char *out) {
+ return detail::json_unescape(s, n, out);
+}
+
+WEBVIEW_DEPRECATED_PRIVATE
+inline std::string json_parse(const std::string &s, const std::string &key,
+ const int index) {
+ return detail::json_parse(s, key, index);
+}
+
+} // namespace webview
+
+#if defined(WEBVIEW_GTK)
+//
+// ====================================================================
+//
+// This implementation uses webkit2gtk backend. It requires gtk+3.0 and
+// webkit2gtk-4.0 libraries. Proper compiler flags can be retrieved via:
+//
+// pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0
+//
+// ====================================================================
+//
+#include
+
+#include
+#include
+#include
+
+#ifdef GDK_WINDOWING_X11
+#include
+#endif
+
+#include
+#include
+
+namespace webview {
+namespace detail {
+
+// Namespace containing workaround for WebKit 2.42 when using NVIDIA GPU
+// driver.
+// See WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=261874
+// Please remove all of the code in this namespace when it's no longer needed.
+namespace webkit_dmabuf {
+
+// Get environment variable. Not thread-safe.
+static inline std::string get_env(const std::string &name) {
+ auto *value = std::getenv(name.c_str());
+ if (value) {
+ return {value};
+ }
+ return {};
+}
+
+// Set environment variable. Not thread-safe.
+static inline void set_env(const std::string &name, const std::string &value) {
+ ::setenv(name.c_str(), value.c_str(), 1);
+}
+
+// Checks whether the NVIDIA GPU driver is used based on whether the kernel
+// module is loaded.
+static inline bool is_using_nvidia_driver() {
+ struct ::stat buffer {};
+ if (::stat("/sys/module/nvidia", &buffer) != 0) {
+ return false;
+ }
+ return S_ISDIR(buffer.st_mode);
+}
+
+// Checks whether the windowing system is Wayland.
+static inline bool is_wayland_display() {
+ if (!get_env("WAYLAND_DISPLAY").empty()) {
+ return true;
+ }
+ if (get_env("XDG_SESSION_TYPE") == "wayland") {
+ return true;
+ }
+ if (get_env("DESKTOP_SESSION").find("wayland") != std::string::npos) {
+ return true;
+ }
+ return false;
+}
+
+// Checks whether the GDK X11 backend is used.
+// See: https://docs.gtk.org/gdk3/class.DisplayManager.html
+static inline bool is_gdk_x11_backend() {
+#ifdef GDK_WINDOWING_X11
+ auto *manager = gdk_display_manager_get();
+ auto *display = gdk_display_manager_get_default_display(manager);
+ return GDK_IS_X11_DISPLAY(display); // NOLINT(misc-const-correctness)
+#else
+ return false;
+#endif
+}
+
+// Checks whether WebKit is affected by bug when using DMA-BUF renderer.
+// Returns true if all of the following conditions are met:
+// - WebKit version is >= 2.42 (please narrow this down when there's a fix).
+// - Environment variables are empty or not set:
+// - WEBKIT_DISABLE_DMABUF_RENDERER
+// - Windowing system is not Wayland.
+// - GDK backend is X11.
+// - NVIDIA GPU driver is used.
+static inline bool is_webkit_dmabuf_bugged() {
+ auto wk_major = webkit_get_major_version();
+ auto wk_minor = webkit_get_minor_version();
+ // TODO: Narrow down affected WebKit version when there's a fixed version
+ auto is_affected_wk_version = wk_major == 2 && wk_minor >= 42;
+ if (!is_affected_wk_version) {
+ return false;
+ }
+ if (!get_env("WEBKIT_DISABLE_DMABUF_RENDERER").empty()) {
+ return false;
+ }
+ if (is_wayland_display()) {
+ return false;
+ }
+ if (!is_gdk_x11_backend()) {
+ return false;
+ }
+ if (!is_using_nvidia_driver()) {
+ return false;
+ }
+ return true;
+}
+
+// Applies workaround for WebKit DMA-BUF bug if needed.
+// See WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=261874
+static inline void apply_webkit_dmabuf_workaround() {
+ if (!is_webkit_dmabuf_bugged()) {
+ return;
+ }
+ set_env("WEBKIT_DISABLE_DMABUF_RENDERER", "1");
+}
+} // namespace webkit_dmabuf
+
+namespace webkit_symbols {
+using webkit_web_view_evaluate_javascript_t =
+ void (*)(WebKitWebView *, const char *, gssize, const char *, const char *,
+ GCancellable *, GAsyncReadyCallback, gpointer);
+
+using webkit_web_view_run_javascript_t = void (*)(WebKitWebView *,
+ const gchar *, GCancellable *,
+ GAsyncReadyCallback,
+ gpointer);
+
+constexpr auto webkit_web_view_evaluate_javascript =
+ library_symbol(
+ "webkit_web_view_evaluate_javascript");
+constexpr auto webkit_web_view_run_javascript =
+ library_symbol(
+ "webkit_web_view_run_javascript");
+} // namespace webkit_symbols
+
+class gtk_webkit_engine : public engine_base {
+public:
+ gtk_webkit_engine(bool debug, void *window)
+ : m_owns_window{!window}, m_window(static_cast(window)) {
+ if (m_owns_window) {
+ if (gtk_init_check(nullptr, nullptr) == FALSE) {
+ return;
+ }
+ m_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ on_window_created();
+ g_signal_connect(G_OBJECT(m_window), "destroy",
+ G_CALLBACK(+[](GtkWidget *, gpointer arg) {
+ auto *w = static_cast(arg);
+ // Widget destroyed along with window.
+ w->m_webview = nullptr;
+ w->m_window = nullptr;
+ w->on_window_destroyed();
+ }),
+ this);
+ }
+ webkit_dmabuf::apply_webkit_dmabuf_workaround();
+ // Initialize webview widget
+ m_webview = webkit_web_view_new();
+ WebKitUserContentManager *manager =
+ webkit_web_view_get_user_content_manager(WEBKIT_WEB_VIEW(m_webview));
+ g_signal_connect(manager, "script-message-received::external",
+ G_CALLBACK(+[](WebKitUserContentManager *,
+ WebKitJavascriptResult *r, gpointer arg) {
+ auto *w = static_cast(arg);
+ char *s = get_string_from_js_result(r);
+ w->on_message(s);
+ g_free(s);
+ }),
+ this);
+ webkit_user_content_manager_register_script_message_handler(manager,
+ "external");
+ init("window.external={invoke:function(s){window.webkit.messageHandlers."
+ "external.postMessage(s);}}");
+
+ gtk_container_add(GTK_CONTAINER(m_window), GTK_WIDGET(m_webview));
+ gtk_widget_show(GTK_WIDGET(m_webview));
+
+ WebKitSettings *settings =
+ webkit_web_view_get_settings(WEBKIT_WEB_VIEW(m_webview));
+ webkit_settings_set_javascript_can_access_clipboard(settings, true);
+ if (debug) {
+ webkit_settings_set_enable_write_console_messages_to_stdout(settings,
+ true);
+ webkit_settings_set_enable_developer_extras(settings, true);
+ }
+
+ if (m_owns_window) {
+ gtk_widget_grab_focus(GTK_WIDGET(m_webview));
+ gtk_widget_show_all(m_window);
+ }
+ }
+
+ gtk_webkit_engine(const gtk_webkit_engine &) = delete;
+ gtk_webkit_engine &operator=(const gtk_webkit_engine &) = delete;
+ gtk_webkit_engine(gtk_webkit_engine &&) = delete;
+ gtk_webkit_engine &operator=(gtk_webkit_engine &&) = delete;
+
+ virtual ~gtk_webkit_engine() {
+ if (m_webview) {
+ gtk_widget_destroy(GTK_WIDGET(m_webview));
+ m_webview = nullptr;
+ }
+ if (m_window) {
+ if (m_owns_window) {
+ // Disconnect handlers to avoid callbacks invoked during destruction.
+ g_signal_handlers_disconnect_by_data(GTK_WINDOW(m_window), this);
+ gtk_window_close(GTK_WINDOW(m_window));
+ on_window_destroyed(true);
+ }
+ m_window = nullptr;
+ }
+ if (m_owns_window) {
+ // Needed for the window to close immediately.
+ deplete_run_loop_event_queue();
+ }
+ }
+
+ void *window_impl() override { return (void *)m_window; }
+ void *widget_impl() override { return (void *)m_webview; }
+ void *browser_controller_impl() override { return (void *)m_webview; };
+ void run_impl() override { gtk_main(); }
+ void terminate_impl() override {
+ dispatch_impl([] { gtk_main_quit(); });
+ }
+ void dispatch_impl(std::function f) override {
+ g_idle_add_full(G_PRIORITY_HIGH_IDLE, (GSourceFunc)([](void *f) -> int {
+ (*static_cast(f))();
+ return G_SOURCE_REMOVE;
+ }),
+ new std::function(f),
+ [](void *f) { delete static_cast(f); });
+ }
+
+ void set_title_impl(const std::string &title) override {
+ gtk_window_set_title(GTK_WINDOW(m_window), title.c_str());
+ }
+
+ void set_size_impl(int width, int height, webview_hint_t hints) override {
+ gtk_window_set_resizable(GTK_WINDOW(m_window), hints != WEBVIEW_HINT_FIXED);
+ if (hints == WEBVIEW_HINT_NONE) {
+ gtk_window_resize(GTK_WINDOW(m_window), width, height);
+ } else if (hints == WEBVIEW_HINT_FIXED) {
+ gtk_widget_set_size_request(m_window, width, height);
+ } else {
+ GdkGeometry g;
+ g.min_width = g.max_width = width;
+ g.min_height = g.max_height = height;
+ GdkWindowHints h =
+ (hints == WEBVIEW_HINT_MIN ? GDK_HINT_MIN_SIZE : GDK_HINT_MAX_SIZE);
+ // This defines either MIN_SIZE, or MAX_SIZE, but not both:
+ gtk_window_set_geometry_hints(GTK_WINDOW(m_window), nullptr, &g, h);
+ }
+ }
+
+ void navigate_impl(const std::string &url) override {
+ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(m_webview), url.c_str());
+ }
+
+ void set_html_impl(const std::string &html) override {
+ webkit_web_view_load_html(WEBKIT_WEB_VIEW(m_webview), html.c_str(),
+ nullptr);
+ }
+
+ void init_impl(const std::string &js) override {
+ WebKitUserContentManager *manager =
+ webkit_web_view_get_user_content_manager(WEBKIT_WEB_VIEW(m_webview));
+ webkit_user_content_manager_add_script(
+ manager,
+ webkit_user_script_new(js.c_str(), WEBKIT_USER_CONTENT_INJECT_TOP_FRAME,
+ WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START,
+ nullptr, nullptr));
+ }
+
+ void eval_impl(const std::string &js) override {
+ auto &lib = get_webkit_library();
+ auto wkmajor = webkit_get_major_version();
+ auto wkminor = webkit_get_minor_version();
+ if ((wkmajor == 2 && wkminor >= 40) || wkmajor > 2) {
+ if (auto fn =
+ lib.get(webkit_symbols::webkit_web_view_evaluate_javascript)) {
+ fn(WEBKIT_WEB_VIEW(m_webview), js.c_str(),
+ static_cast(js.size()), nullptr, nullptr, nullptr, nullptr,
+ nullptr);
+ }
+ } else if (auto fn =
+ lib.get(webkit_symbols::webkit_web_view_run_javascript)) {
+ fn(WEBKIT_WEB_VIEW(m_webview), js.c_str(), nullptr, nullptr, nullptr);
+ }
+ }
+
+ void set_zoom_impl(double level) override {
+ webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(m_webview), level);
+ }
+
+ double get_zoom_impl() override {
+ return webkit_web_view_get_zoom_level(WEBKIT_WEB_VIEW(m_webview));
+ }
+
+private:
+ static char *get_string_from_js_result(WebKitJavascriptResult *r) {
+ char *s;
+#if (WEBKIT_MAJOR_VERSION == 2 && WEBKIT_MINOR_VERSION >= 22) || \
+ WEBKIT_MAJOR_VERSION > 2
+ JSCValue *value = webkit_javascript_result_get_js_value(r);
+ s = jsc_value_to_string(value);
+#else
+ JSGlobalContextRef ctx = webkit_javascript_result_get_global_context(r);
+ JSValueRef value = webkit_javascript_result_get_value(r);
+ JSStringRef js = JSValueToStringCopy(ctx, value, nullptr);
+ size_t n = JSStringGetMaximumUTF8CStringSize(js);
+ s = g_new(char, n);
+ JSStringGetUTF8CString(js, s, n);
+ JSStringRelease(js);
+#endif
+ return s;
+ }
+
+ static const native_library &get_webkit_library() {
+ static const native_library non_loaded_lib;
+ static native_library loaded_lib;
+
+ if (loaded_lib.is_loaded()) {
+ return loaded_lib;
+ }
+
+ constexpr std::array lib_names{"libwebkit2gtk-4.1.so",
+ "libwebkit2gtk-4.0.so"};
+ auto found =
+ std::find_if(lib_names.begin(), lib_names.end(), [](const char *name) {
+ return native_library::is_loaded(name);
+ });
+
+ if (found == lib_names.end()) {
+ return non_loaded_lib;
+ }
+
+ loaded_lib = native_library(*found);
+
+ auto loaded = loaded_lib.is_loaded();
+ if (!loaded) {
+ return non_loaded_lib;
+ }
+
+ return loaded_lib;
+ }
+
+ // Blocks while depleting the run loop of events.
+ void deplete_run_loop_event_queue() {
+ bool done{};
+ dispatch([&] { done = true; });
+ while (!done) {
+ gtk_main_iteration();
+ }
+ }
+
+ bool m_owns_window{};
+ GtkWidget *m_window{};
+ GtkWidget *m_webview{};
+};
+
+} // namespace detail
+
+using browser_engine = detail::gtk_webkit_engine;
+
+} // namespace webview
+
+#elif defined(WEBVIEW_COCOA)
+
+//
+// ====================================================================
+//
+// This implementation uses Cocoa WKWebView backend on macOS. It is
+// written using ObjC runtime and uses WKWebView class as a browser runtime.
+// You should pass "-framework Webkit" flag to the compiler.
+//
+// ====================================================================
+//
+
+#include
+#include
+#include
+
+namespace webview {
+namespace detail {
+namespace objc {
+
+// A convenient template function for unconditionally casting the specified
+// C-like function into a function that can be called with the given return
+// type and arguments. Caller takes full responsibility for ensuring that
+// the function call is valid. It is assumed that the function will not
+// throw exceptions.
+template
+Result invoke(Callable callable, Args... args) noexcept {
+ return reinterpret_cast(callable)(args...);
+}
+
+// Calls objc_msgSend.
+template
+Result msg_send(Args... args) noexcept {
+ return invoke(objc_msgSend, args...);
+}
+
+// Wrapper around NSAutoreleasePool that drains the pool on destruction.
+class autoreleasepool {
+public:
+ autoreleasepool()
+ : m_pool(msg_send(objc_getClass("NSAutoreleasePool"),
+ sel_registerName("new"))) {}
+
+ ~autoreleasepool() {
+ if (m_pool) {
+ msg_send(m_pool, sel_registerName("drain"));
+ }
+ }
+
+ autoreleasepool(const autoreleasepool &) = delete;
+ autoreleasepool &operator=(const autoreleasepool &) = delete;
+ autoreleasepool(autoreleasepool &&) = delete;
+ autoreleasepool &operator=(autoreleasepool &&) = delete;
+
+private:
+ id m_pool{};
+};
+
+inline id autoreleased(id object) {
+ msg_send(object, sel_registerName("autorelease"));
+ return object;
+}
+
+} // namespace objc
+
+enum NSBackingStoreType : NSUInteger { NSBackingStoreBuffered = 2 };
+
+enum NSWindowStyleMask : NSUInteger {
+ NSWindowStyleMaskTitled = 1,
+ NSWindowStyleMaskClosable = 2,
+ NSWindowStyleMaskMiniaturizable = 4,
+ NSWindowStyleMaskResizable = 8
+};
+
+enum NSApplicationActivationPolicy : NSInteger {
+ NSApplicationActivationPolicyRegular = 0
+};
+
+enum WKUserScriptInjectionTime : NSInteger {
+ WKUserScriptInjectionTimeAtDocumentStart = 0
+};
+
+enum NSModalResponse : NSInteger { NSModalResponseOK = 1 };
+
+// Convenient conversion of string literals.
+inline id operator"" _cls(const char *s, std::size_t) {
+ return (id)objc_getClass(s);
+}
+inline SEL operator"" _sel(const char *s, std::size_t) {
+ return sel_registerName(s);
+}
+inline id operator"" _str(const char *s, std::size_t) {
+ return objc::msg_send("NSString"_cls, "stringWithUTF8String:"_sel, s);
+}
+
+class cocoa_wkwebview_engine : public engine_base {
+public:
+ cocoa_wkwebview_engine(bool debug, void *window)
+ : m_debug{debug}, m_window{static_cast(window)}, m_owns_window{
+ !window} {
+ auto app = get_shared_application();
+ // See comments related to application lifecycle in create_app_delegate().
+ if (!m_owns_window) {
+ set_up_window();
+ } else {
+ // Only set the app delegate if it hasn't already been set.
+ auto delegate = objc::msg_send(app, "delegate"_sel);
+ if (delegate) {
+ set_up_window();
+ } else {
+ m_app_delegate = create_app_delegate();
+ objc_setAssociatedObject(m_app_delegate, "webview", (id)this,
+ OBJC_ASSOCIATION_ASSIGN);
+ objc::msg_send(app, "setDelegate:"_sel, m_app_delegate);
+
+ // Start the main run loop so that the app delegate gets the
+ // NSApplicationDidFinishLaunchingNotification notification after the run
+ // loop has started in order to perform further initialization.
+ // We need to return from this constructor so this run loop is only
+ // temporary.
+ // Skip the main loop if this isn't the first instance of this class
+ // because the launch event is only sent once. Instead, proceed to
+ // create a window.
+ if (get_and_set_is_first_instance()) {
+ objc::msg_send(app, "run"_sel);
+ } else {
+ set_up_window();
+ }
+ }
+ }
+ }
+
+ cocoa_wkwebview_engine(const cocoa_wkwebview_engine &) = delete;
+ cocoa_wkwebview_engine &operator=(const cocoa_wkwebview_engine &) = delete;
+ cocoa_wkwebview_engine(cocoa_wkwebview_engine &&) = delete;
+ cocoa_wkwebview_engine &operator=(cocoa_wkwebview_engine &&) = delete;
+
+ virtual ~cocoa_wkwebview_engine() {
+ objc::autoreleasepool arp;
+ if (m_window) {
+ if (m_webview) {
+ if (m_webview == objc::msg_send(m_window, "contentView"_sel)) {
+ objc::msg_send(m_window, "setContentView:"_sel, nullptr);
+ }
+ objc::msg_send(m_webview, "release"_sel);
+ m_webview = nullptr;
+ }
+ if (m_owns_window) {
+ // Replace delegate to avoid callbacks and other bad things during
+ // destruction.
+ objc::msg_send(m_window, "setDelegate:"_sel, nullptr);
+ objc::msg_send(m_window, "close"_sel);
+ on_window_destroyed(true);
+ }
+ m_window = nullptr;
+ }
+ if (m_window_delegate) {
+ objc::msg_send(m_window_delegate, "release"_sel);
+ m_window_delegate = nullptr;
+ }
+ if (m_app_delegate) {
+ auto app = get_shared_application();
+ objc::msg_send(app, "setDelegate:"_sel, nullptr);
+ // Make sure to release the delegate we created.
+ objc::msg_send(m_app_delegate, "release"_sel);
+ m_app_delegate = nullptr;
+ }
+ if (m_owns_window) {
+ // Needed for the window to close immediately.
+ deplete_run_loop_event_queue();
+ }
+ // TODO: Figure out why m_manager is still alive after the autoreleasepool
+ // has been drained.
+ }
+
+ void *window_impl() override { return (void *)m_window; }
+ void *widget_impl() override { return (void *)m_webview; }
+ void *browser_controller_impl() override { return (void *)m_webview; };
+ void terminate_impl() override { stop_run_loop(); }
+ void run_impl() override {
+ auto app = get_shared_application();
+ objc::msg_send(app, "run"_sel);
+ }
+ void dispatch_impl(std::function f) override {
+ dispatch_async_f(dispatch_get_main_queue(), new dispatch_fn_t(f),
+ (dispatch_function_t)([](void *arg) {
+ auto f = static_cast(arg);
+ (*f)();
+ delete f;
+ }));
+ }
+ void set_title_impl(const std::string &title) override {
+ objc::autoreleasepool arp;
+
+ objc::msg_send(m_window, "setTitle:"_sel,
+ objc::msg_send