Compare commits

..

No commits in common. "v85.0.4183.83-4" and "master" have entirely different histories.

42930 changed files with 3211827 additions and 4570153 deletions

View file

@ -1,35 +0,0 @@
branches:
except:
- dev
version: '{build}'
platform:
- x64
- x86
image: Visual Studio 2019
install:
- cinst ninja
cache:
- '%LOCALAPPDATA%\Mozilla\sccache'
build_script:
- bash ./tools/import-upstream.sh
- bash -c 'cd src; ./get-clang.sh'
- bash -c '~/.cargo/bin/sccache -s'
- bash -c 'cd src; EXTRA_FLAGS=target_cpu=\"$Platform\" ./build.sh'
- bash -c '~/.cargo/bin/sccache -s'
- ps: $env:BUILD_NAME="naiveproxy-$env:APPVEYOR_REPO_TAG_NAME-win-$env:PLATFORM"
- bash -c 'mkdir $BUILD_NAME'
- bash -c 'cp src/out/Release/naive.exe src/config.json LICENSE USAGE.txt $BUILD_NAME'
- bash -c '7z a $BUILD_NAME.zip $BUILD_NAME'
test_script:
- bash -c './tests/basic.sh src/out/Release/naive'
artifacts:
- path: $(BUILD_NAME).zip
deploy:
- provider: GitHub
auth_token:
secure: h+qwIoof/3ET7LOldWwlb6XQLmpxYPuaZL4YcFQ8QyclfBrnywzwzDaSqdE2unPg
artifact: $(BUILD_NAME).zip
prerelease: true
force_update: true
on:
APPVEYOR_REPO_TAG: true

578
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,578 @@
name: Build
on:
push:
branches: [master]
paths-ignore: [README.md]
release:
types: [published]
defaults:
run:
shell: bash
working-directory: src
env:
CACHE_EPOCH: 1
CCACHE_MAXSIZE: 200M
CCACHE_MAXFILES: 0
SCCACHE_CACHE_SIZE: 200M
jobs:
cache-toolchains-posix:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Cache toolchains (Linux, OpenWrt, Android)
uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/gn/
src/qemu-user*.deb
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache PGO (Linux, OpenWrt)
uses: actions/cache@v4
with:
path: src/chrome/build/pgo_profiles/
key: pgo-linux-openwrt-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache AFDO (Android)
uses: actions/cache@v4
with:
path: src/chrome/android/profiles/
key: afdo-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache Android NDK (Android)
uses: actions/cache@v4
with:
path: src/third_party/android_toolchain/ndk/
key: android-ndk-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- run: ./get-clang.sh
- run: EXTRA_FLAGS='target_os="android"' ./get-clang.sh
- run: |
if [ ! -f qemu-user*.deb ]; then
wget https://snapshot.debian.org/archive/debian/20250405T083429Z/pool/main/q/qemu/qemu-user_9.2.2%2Bds-1%2Bb2_amd64.deb
fi
cache-toolchains-win:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
- name: Cache toolchains
uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/gn/
~/.cargo/bin/
~/bin/ninja.exe
key: toolchains-win-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache PGO (win64)
uses: actions/cache@v4
with:
path: src/chrome/build/pgo_profiles/chrome-win64-*
key: pgo-win64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache PGO (win32)
uses: actions/cache@v4
with:
path: src/chrome/build/pgo_profiles/chrome-win32-*
key: pgo-win32-arm64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- run: EXTRA_FLAGS='target_cpu="x64"' ./get-clang.sh
- run: EXTRA_FLAGS='target_cpu="x86"' ./get-clang.sh
- run: |
if [ ! -f ~/bin/ninja.exe ]; then
curl -LO https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip
unzip ninja-win.zip -d ~/bin
fi
cache-toolchains-mac:
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/chrome/build/pgo_profiles/chrome-mac-*
src/gn/
key: toolchains-pgo-mac-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- run: EXTRA_FLAGS='target_cpu="x64"' ./get-clang.sh
- run: EXTRA_FLAGS='target_cpu="arm64"' ./get-clang.sh
linux:
needs: cache-toolchains-posix
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
arch: [x64, x86, arm64, arm, mipsel, mips64el, riscv64, loong64]
env:
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}"'
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }}
steps:
- uses: actions/checkout@v4
- name: Cache toolchains (Linux, OpenWrt, Android)
uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/gn/
src/qemu-user*.deb
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache PGO (Linux, OpenWrt)
uses: actions/cache@v4
with:
path: src/chrome/build/pgo_profiles/
key: pgo-linux-openwrt-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Regenerate Debian keyring
run: |
rm -f ./build/linux/sysroot_scripts/keyring.gpg
GPG_TTY=/dev/null ./build/linux/sysroot_scripts/generate_keyring.sh
- name: Cache sysroot
uses: actions/cache@v4
with:
path: src/out/sysroot-build/bullseye/bullseye_*
key: sysroot-linux-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- id: ccache-timestamp
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT
- name: Cache ccache files
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ccache-linux-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }}
restore-keys: ccache-linux-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-
- name: Install APT packages
run: |
sudo apt update
sudo apt install ninja-build pkg-config ccache bubblewrap
sudo apt remove -y qemu-user-binfmt
sudo dpkg -i qemu-user*.deb
# libc6-i386 interferes with x86 build
sudo apt remove libc6-i386
- run: ./get-clang.sh
- run: ccache -z
- run: ./build.sh
- run: ccache -s && ccache --evict-older-than 1d
- run: ../tests/basic.sh out/Release/naive
- name: Pack naiveproxy assets
run: |
mkdir ${{ env.BUNDLE }}
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }}
tar cJf ${{ env.BUNDLE }}.tar.xz ${{ env.BUNDLE }}
openssl sha256 out/Release/naive >sha256sum.txt
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: ${{ env.BUNDLE }}.tar.xz naive executable sha256 ${{ env.SHA256SUM }}
path: src/sha256sum.txt
- name: Upload naiveproxy assets
if: ${{ github.event_name == 'release' }}
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.tar.xz --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
android:
needs: cache-toolchains-posix
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- arch: x64
abi: x86_64
- arch: x86
abi: x86
- arch: arm64
abi: arm64-v8a
- arch: arm
abi: armeabi-v7a
env:
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}" target_os="android"'
BUNDLE: naiveproxy-plugin-${{ github.event.release.tag_name || 'v1.1.1.1-1' }}-${{ matrix.abi }}.apk
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
- name: Cache toolchains (Linux, OpenWrt, Android)
uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/gn/
src/qemu-user*.deb
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache AFDO (Android)
uses: actions/cache@v4
with:
path: src/chrome/android/profiles/
key: afdo-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache Android NDK (Android)
uses: actions/cache@v4
with:
path: src/third_party/android_toolchain/ndk/
key: android-ndk-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache sysroot
uses: actions/cache@v4
with:
path: src/out/sysroot-build/android/
key: sysroot-android-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- id: ccache-timestamp
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT
- name: Cache ccache files
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ccache-android-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }}
restore-keys: ccache-android-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-
- name: Install APT packages
run: |
sudo apt update
sudo apt install ninja-build pkg-config ccache bubblewrap
sudo apt remove -y qemu-user-binfmt
sudo dpkg -i qemu-user*.deb
# libc6-i386 interferes with x86 build
sudo apt remove libc6-i386
- run: ./get-clang.sh
- run: ccache -z
- run: ./build.sh
- run: ccache -s && ccache --evict-older-than 1d
- run: ./get-android-sys.sh
- run: ../tests/basic.sh out/Release/naive
- name: Gradle cache
uses: actions/cache@v4
with:
path: ~/.gradle
key: gradle-${{ hashFiles('**/*.gradle.kts') }}
- name: Create APK
working-directory: apk
env:
APK_ABI: ${{ matrix.abi }}
APK_VERSION_NAME: ${{ github.event.release.tag_name || 'v1.1.1.1-1' }}
KEYSTORE_PASS: ${{ secrets.KEYSTORE_PASS }}
run: |
mkdir -p app/libs/$APK_ABI
cp ../src/out/Release/naive app/libs/$APK_ABI/libnaive.so
./gradlew :app:assembleRelease
openssl sha256 app/build/outputs/apk/release/${{ env.BUNDLE }} >sha256sum.txt
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: ${{ env.BUNDLE }} sha256 ${{ env.SHA256SUM }}
path: apk/sha256sum.txt
- name: Upload naiveproxy assets
if: ${{ github.event_name == 'release' }}
working-directory: apk/app/build/outputs/apk/release
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }} --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
win:
needs: cache-toolchains-win
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
arch: [x64, x86, arm64]
env:
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}"'
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }}
steps:
- uses: actions/checkout@v4
- name: Cache toolchains
uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/gn/
~/.cargo/bin/
~/bin/ninja.exe
key: toolchains-win-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache PGO (win64)
if: ${{ matrix.arch == 'x64' }}
uses: actions/cache@v4
with:
path: src/chrome/build/pgo_profiles/chrome-win64-*
key: pgo-win64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache PGO (win32)
if: ${{ matrix.arch != 'x64' }}
uses: actions/cache@v4
with:
path: src/chrome/build/pgo_profiles/chrome-win32-*
key: pgo-win32-arm64-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- id: ccache-timestamp
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT
- name: Cache ccache files
uses: actions/cache@v4
with:
path: ~/AppData/Local/Mozilla/sccache
key: ccache-win-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }}
restore-keys: ccache-win-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-
- run: ./get-clang.sh
- run: ~/.cargo/bin/sccache -z
- run: ./build.sh
- run: ~/.cargo/bin/sccache -s
- run: ../tests/basic.sh out/Release/naive
# No real or emulated environment is available to test this.
if: ${{ matrix.arch != 'arm64' }}
- name: Pack naiveproxy assets
run: |
mkdir ${{ env.BUNDLE }}
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }}
7z a ${{ env.BUNDLE }}.zip ${{ env.BUNDLE }}
openssl sha256 out/Release/naive.exe >sha256sum.txt
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: ${{ env.BUNDLE }}.zip naive executable sha256 ${{ env.SHA256SUM }}
path: src/sha256sum.txt
- name: Upload naiveproxy assets
if: ${{ github.event_name == 'release' }}
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.zip --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
mac:
needs: cache-toolchains-mac
runs-on: macos-13
strategy:
fail-fast: false
matrix:
arch: [x64, arm64]
env:
EXTRA_FLAGS: 'target_cpu="${{ matrix.arch }}"'
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }}
steps:
- uses: actions/checkout@v4
- name: Cache toolchains and PGO
uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/chrome/build/pgo_profiles/chrome-mac-*
src/gn/
key: toolchains-pgo-mac-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- id: ccache-timestamp
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT
- name: Cache ccache files
uses: actions/cache@v4
with:
path: ~/Library/Caches/ccache
key: ccache-mac-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }}
restore-keys: ccache-mac-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-
- run: brew install ninja ccache
- run: pip install setuptools
- run: ./get-clang.sh
- run: ccache -z
- run: ./build.sh
- run: ccache -s && ccache --evict-older-than 1d
- run: ../tests/basic.sh out/Release/naive
# No real or emulated environment is available to test this.
if: ${{ matrix.arch != 'arm64' }}
- name: Pack naiveproxy assets
run: |
mkdir ${{ env.BUNDLE }}
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }}
tar cJf ${{ env.BUNDLE }}.tar.xz ${{ env.BUNDLE }}
openssl sha256 out/Release/naive >sha256sum.txt
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: ${{ env.BUNDLE }}.tar.xz naive executable sha256 ${{ env.SHA256SUM }}
path: src/sha256sum.txt
- name: Upload naiveproxy assets
if: ${{ github.event_name == 'release' }}
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.tar.xz --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
openwrt:
needs: cache-toolchains-posix
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- arch: x86_64
openwrt: "target=x86 subtarget=64"
target_cpu: x64
- arch: x86
openwrt: "target=x86 subtarget=geode"
target_cpu: x86
- arch: aarch64_cortex-a53
openwrt: "target=sunxi subtarget=cortexa53"
target_cpu: arm64
extra: 'arm_cpu="cortex-a53"'
- arch: aarch64_cortex-a53-static
openwrt: "target=sunxi subtarget=cortexa53"
target_cpu: arm64
extra: 'arm_cpu="cortex-a53" build_static=true use_allocator_shim=false use_partition_alloc=false'
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
- arch: aarch64_cortex-a72
openwrt: "target=mvebu subtarget=cortexa72"
target_cpu: arm64
extra: 'arm_cpu="cortex-a72"'
- arch: aarch64_cortex-a72-static
openwrt: "target=mvebu subtarget=cortexa72"
target_cpu: arm64
extra: 'arm_cpu="cortex-a72" build_static=true use_allocator_shim=false use_partition_alloc=false'
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
- arch: aarch64_cortex-a76
openwrt: "target=bcm27xx subtarget=bcm2712"
target_cpu: arm64
extra: 'arm_cpu="cortex-a76"'
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
- arch: aarch64_generic
openwrt: "target=layerscape subtarget=armv8_64b"
target_cpu: arm64
- arch: aarch64_generic-static
openwrt: "target=layerscape subtarget=armv8_64b"
target_cpu: arm64
extra: "build_static=true use_allocator_shim=false use_partition_alloc=false"
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
- arch: arm_arm1176jzf-s_vfp
openwrt: "target=brcm2708 subtarget=bcm2708"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="arm1176jzf-s" arm_fpu="vfp" arm_float_abi="hard" arm_use_neon=false arm_use_thumb=false'
- arch: arm_arm926ej-s
openwrt: "target=mxs subtarget=generic"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="arm926ej-s" arm_float_abi="soft" arm_use_neon=false arm_use_thumb=false'
- arch: arm_cortex-a15_neon-vfpv4
openwrt: "target=ipq806x subtarget=generic"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a15" arm_fpu="neon-vfpv4" arm_float_abi="hard" arm_use_neon=true'
- arch: arm_cortex-a5_vfpv4
openwrt: "target=at91 subtarget=sama5d3"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a5" arm_fpu="vfpv4" arm_float_abi="hard" arm_use_neon=false'
- arch: arm_cortex-a7
openwrt: "target=mediatek subtarget=mt7629"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_float_abi="soft" arm_use_neon=false'
openwrt_release: '21.02.0'
openwrt_gcc_ver: '8.4.0'
- arch: arm_cortex-a7_neon-vfpv4
openwrt: "target=sunxi subtarget=cortexa7"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_fpu="neon-vfpv4" arm_float_abi="hard" arm_use_neon=true'
- arch: arm_cortex-a7_neon-vfpv4-static
openwrt: "target=sunxi subtarget=cortexa7"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_fpu="neon-vfpv4" arm_float_abi="hard" arm_use_neon=true build_static=true use_allocator_shim=false use_partition_alloc=false'
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
- arch: arm_cortex-a7_vfpv4
openwrt: "target=at91 subtarget=sama7"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a7" arm_fpu="vfpv4" arm_float_abi="hard" arm_use_neon=false'
openwrt_release: '22.03.0'
openwrt_gcc_ver: '11.2.0'
- arch: arm_cortex-a8_vfpv3
openwrt: "target=sunxi subtarget=cortexa8"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a8" arm_fpu="vfpv3" arm_float_abi="hard" arm_use_neon=false'
- arch: arm_cortex-a9
openwrt: "target=bcm53xx subtarget=generic"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_float_abi="soft" arm_use_neon=false'
- arch: arm_cortex-a9-static
openwrt: "target=bcm53xx subtarget=generic"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_float_abi="soft" arm_use_neon=false build_static=true use_allocator_shim=false use_partition_alloc=false'
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
- arch: arm_cortex-a9_neon
openwrt: "target=imx6 subtarget=generic"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_fpu="neon" arm_float_abi="hard" arm_use_neon=true'
- arch: arm_cortex-a9_vfpv3-d16
openwrt: "target=mvebu subtarget=cortexa9"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="cortex-a9" arm_fpu="vfpv3-d16" arm_float_abi="hard" arm_use_neon=false'
- arch: arm_mpcore
openwrt: "target=oxnas subtarget=ox820"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="mpcore" arm_float_abi="soft" arm_use_neon=false arm_use_thumb=false'
- arch: arm_xscale
openwrt: "target=kirkwood subtarget=generic"
target_cpu: arm
extra: 'arm_version=0 arm_cpu="xscale" arm_float_abi="soft" arm_use_neon=false arm_use_thumb=false'
- arch: mipsel_24kc
openwrt: "target=ramips subtarget=rt305x"
target_cpu: mipsel
extra: 'mips_arch_variant="r2" mips_float_abi="soft"'
- arch: mipsel_24kc-static
openwrt: "target=ramips subtarget=rt305x"
target_cpu: mipsel
extra: 'mips_arch_variant="r2" mips_float_abi="soft" build_static=true use_allocator_shim=false use_partition_alloc=false'
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
- arch: mipsel_mips32
openwrt: "target=brcm47xx subtarget=legacy"
target_cpu: mipsel
extra: 'mips_arch_variant="r1" mips_float_abi="soft"'
- arch: riscv64
openwrt: "target=sifiveu subtarget=generic"
target_cpu: riscv64
openwrt_release: '23.05.0'
openwrt_gcc_ver: '12.3.0'
- arch: loongarch64
openwrt: "target=loongarch64 subtarget=generic"
target_cpu: loong64
openwrt_release: '24.10.0'
openwrt_gcc_ver: '13.3.0'
env:
EXTRA_FLAGS: target_cpu="${{ matrix.target_cpu }}" target_os="openwrt" ${{ matrix.extra }} enable_shadow_metadata=false
OPENWRT_FLAGS: arch=${{ matrix.arch }} release=${{ matrix.openwrt_release || '18.06.0' }} gcc_ver=${{ matrix.openwrt_gcc_ver || '7.3.0' }} ${{ matrix.openwrt }}
BUNDLE: naiveproxy-${{ github.event.release.tag_name }}-${{ github.job }}-${{ matrix.arch }}
steps:
- uses: actions/checkout@v4
- name: Cache toolchains (Linux, OpenWrt, Android)
uses: actions/cache@v4
with:
path: |
src/third_party/llvm-build/Release+Asserts/
src/gn/
src/qemu-user*.deb
key: toolchains-posix-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache PGO (Linux, OpenWrt)
uses: actions/cache@v4
with:
path: src/chrome/build/pgo_profiles/
key: pgo-linux-openwrt-${{ hashFiles('CHROMIUM_VERSION') }}-v${{ env.CACHE_EPOCH }}
- name: Cache sysroot
uses: actions/cache@v4
with:
path: src/out/sysroot-build/openwrt
key: sysroot-openwrt-23.05.0-${{ matrix.arch }}-v${{ env.CACHE_EPOCH }}
- id: ccache-timestamp
run: echo "CCACHE_TIMESTAMP=$(date +%s)" >>$GITHUB_OUTPUT
- name: Cache ccache files
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ccache-openwrt-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-${{ steps.ccache-timestamp.outputs.CCACHE_TIMESTAMP }}
restore-keys: ccache-openwrt-${{ matrix.arch }}-${{ hashFiles('CHROMIUM_VERSION') }}-
- name: Install APT packages
run: |
sudo apt update
sudo apt install ninja-build pkg-config ccache bubblewrap
sudo apt remove -y qemu-user-binfmt
sudo dpkg -i qemu-user*.deb
# libc6-i386 interferes with x86 build
sudo apt remove libc6-i386
- run: ./get-clang.sh
- run: ccache -z
- run: ./build.sh
- run: ccache -s && ccache --evict-older-than 1d
- run: ../tests/basic.sh out/Release/naive
- name: Pack naiveproxy assets
run: |
mkdir ${{ env.BUNDLE }}
cp out/Release/naive config.json ../LICENSE ../USAGE.txt ${{ env.BUNDLE }}
tar cJf ${{ env.BUNDLE }}.tar.xz ${{ env.BUNDLE }}
openssl sha256 out/Release/naive >sha256sum.txt
echo "SHA256SUM=$(cut -d' ' -f2 sha256sum.txt)" >>$GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: ${{ env.BUNDLE }}.tar.xz naive executable sha256 ${{ env.SHA256SUM }}
path: src/sha256sum.txt
- name: Upload naiveproxy assets
if: ${{ github.event_name == 'release' }}
run: gh release upload "${GITHUB_REF##*/}" ${{ env.BUNDLE }}.tar.xz --clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

3
.gitignore vendored
View file

@ -1,5 +1,8 @@
src/chrome/android/profiles/afdo.prof
src/chrome/build/pgo_profiles/
src/gn/
src/third_party/llvm-build/
src/third_party/android_toolchain/
src/out/
.vscode/
*.pyc

View file

@ -1,107 +0,0 @@
branches:
except:
- dev
language: cpp
matrix:
include:
- name: "linux-x64"
os: linux
dist: bionic
env: EXTRA_FLAGS='target_cpu="x64"'
- name: "linux-x86"
os: linux
dist: bionic
env: EXTRA_FLAGS='target_cpu="x86"'
- name: "linux-arm64"
os: linux
dist: bionic
env: EXTRA_FLAGS='target_cpu="arm64"'
- name: "linux-arm"
os: linux
dist: bionic
env: EXTRA_FLAGS='target_cpu="arm"'
- name: "openwrt-mipsel_24kc"
os: linux
dist: bionic
env: EXTRA_FLAGS='
target_cpu="mipsel"
mips_arch_variant="r2" mips_float_abi="soft" mips_tune="24kc"
use_allocator="none" use_allocator_shim=false
use_lld=false use_gold=false
ldso_path="/lib/ld-musl-mipsel-sf.so.1"
custom_toolchain="//build/toolchain/linux:clang_mipsel_openwrt"'
OPENWRT_FLAGS='arch=mipsel_24kc release=19.07.3 gcc_ver=7.5.0 target=ramips subtarget=rt305x abi=musl'
- name: "openwrt-x86_64"
os: linux
dist: bionic
env: EXTRA_FLAGS='
target_cpu="x64"
use_allocator="none" use_allocator_shim=false
custom_toolchain="//build/toolchain/linux:clang_x64_openwrt"'
OPENWRT_FLAGS='arch=x86_64 release=19.07.3 gcc_ver=7.5.0 target=x86 subtarget=64 abi=musl'
- name: "openwrt-arm64"
os: linux
dist: bionic
env: EXTRA_FLAGS='
target_cpu="arm64"
use_allocator="none" use_allocator_shim=false
custom_toolchain="//build/toolchain/linux:clang_arm64_openwrt"'
OPENWRT_FLAGS='arch=aarch64 release=19.07.3 gcc_ver=7.5.0 target=armvirt subtarget=64 abi=musl'
- name: "openwrt-arm_cortex-a15_neon-vfpv4"
os: linux
dist: bionic
env: EXTRA_FLAGS='
target_cpu="arm"
arm_version=0 arm_cpu="cortex-a15" arm_fpu="neon-vfpv4" arm_float_abi="hard"
use_allocator="none" use_allocator_shim=false
custom_toolchain="//build/toolchain/linux:clang_arm_openwrt"'
OPENWRT_FLAGS='arch=arm_cortex-a15_neon-vfpv4 release=19.07.3 gcc_ver=7.5.0 target=ipq806x subtarget=generic abi=musl_eabi'
- name: "openwrt-arm_cortex-a9"
os: linux
dist: bionic
env: EXTRA_FLAGS='
target_cpu="arm"
arm_version=0 arm_cpu="cortex-a9" arm_float_abi="soft" arm_use_neon=false
use_allocator="none" use_allocator_shim=false
custom_toolchain="//build/toolchain/linux:clang_arm_openwrt"'
OPENWRT_FLAGS='arch=arm_cortex-a9 release=19.07.3 gcc_ver=7.5.0 target=bcm53xx subtarget=generic abi=musl_eabi'
- name: "osx"
os: osx
osx_image: xcode11.3
addons:
apt:
packages:
- ninja-build
- pkg-config
- libnss3-dev
- qemu-user
homebrew:
packages:
- ninja
- ccache
cache:
directories:
- $HOME/.ccache
- src/out/sysroot-build/openwrt
script:
- ./tools/import-upstream.sh
- ( cd src; ./get-clang.sh )
- ccache -s
- ( cd src; ./build.sh )
- ccache -s
- ./tests/basic.sh src/out/Release/naive
- export BUILD_NAME="naiveproxy-$TRAVIS_BRANCH-$TRAVIS_JOB_NAME"
- mkdir $BUILD_NAME
- cp src/out/Release/naive src/config.json LICENSE USAGE.txt $BUILD_NAME
- tar cJf $BUILD_NAME.tar.xz $BUILD_NAME
deploy:
provider: releases
api_key:
secure: hZ+M3GvNpPPMri0u7HkeDM8qCNSzCP2kBxL/68XgF3uvMDkJRX5/gyq27EoQMHyRxni759LlwHttRn6nHSg/CwNgK4fD4WPZWU99XIWKdlI+P1AQkHThjNtABv3P7JOq1HxyuwrcaBPybnDjsQTFE6HG5zsIhXZlUTCHbndCBpYPuDnaqKJJUv4/WzoEjXAlBSkAsBGhEQv+HZhaupw5vSkDkulNgXZrXOoO6uzAtAiR5St38dV7cWXgk6UwoyrVaV8cO0cltveyEPkGYMXJh6YkopJjSVrkYlI8vWsA8CgwdhXwAkYoG1uaIDUdNdlrBXNuA0BOFcU3iEo3D9H/z1/WQUnCuAOVCkYC/QhkTCsioQ5vaNA56+3uY8KOSDNo8XxxBzRIUSwul2lwHCNl6+cf1EhO9brI3Q8q/ZPZLmNIqYDXAI29/MMC13g/ql8UUcy2TwGrx2OE73SIzVBm2hVYI6FFs2hjJzMkknV83K0kr515gXrI+p7ANqnA9vdRBx7zMdOT1etFeuD06wjbLGLmHTS4ykhDYl6wn26fJHm3/OkqNyWllghc8DZnpAHh5AAYrrTIQPlSgtyqGL2qCoCPHbb2WgWewSVhqY+p7JMPchAc6myW3H2c7yL+TDMdRcr9I7DDOpvvfMoGx527Lji54mxGdZmdEpSGxi9Rx3g=
file: $BUILD_NAME.tar.xz
skip_cleanup: true
name: $TRAVIS_BRANCH
prerelease: true
on:
tags: true
all_branches: true

View file

@ -1 +1 @@
85.0.4183.83
135.0.7049.38

177
README.md
View file

@ -1,128 +1,161 @@
# NaïveProxy [![Build Status](https://travis-ci.com/klzgrad/naiveproxy.svg?branch=master)](https://travis-ci.com/klzgrad/naiveproxy) [![Build status](https://ci.appveyor.com/api/projects/status/ohpyaf49baihmxa9?svg=true)](https://ci.appveyor.com/project/klzgrad/naiveproxy)
# NaïveProxy ![build workflow](https://github.com/klzgrad/naiveproxy/actions/workflows/build.yml/badge.svg)
NaïveProxy uses Chrome's network stack to camouflage traffic with strong censorship resistence and low detectablility. Reusing Chrome's stack also ensures best practices in performance and security.
NaïveProxy uses Chromium's network stack to camouflage traffic with strong censorship resistence and low detectablility. Reusing Chrome's stack also ensures best practices in performance and security.
The following traffic attacks are mitigated in NaïveProxy:
The following traffic attacks are mitigated by using Chromium's network stack:
* Website fingerprinting / traffic classification: [mitigated](https://arxiv.org/abs/1707.00641) by traffic multiplexing in HTTP/2.
* [TLS parameter fingerprinting](https://arxiv.org/abs/1607.01639): defeated by reusing [Chrome's network stack](https://www.chromium.org/developers/design-documents/network-stack).
* [Active probing](https://ensa.fi/active-probing/): defeated by *application fronting*, i.e. hiding proxy servers behind a commonly used frontend with application-layer routing.
* [Active probing](https://ensa.fi/active-probing/): defeated by *application fronting*, i.e. hiding proxy servers behind a commonly used frontend server with application-layer routing.
* Length-based traffic analysis: mitigated by length padding.
The code consists of a patch series morphed and rebased onto every new Chrome release.
## Architecture
[Browser → Naïve (client)] ⟶ Censor ⟶ [Frontend → Naïve (server)] ⟶ Internet
[Browser → Naïve client] ⟶ Censor ⟶ [Frontend → Naïve server] ⟶ Internet
NaïveProxy uses Chrome's network stack. The traffic behavior intercepted by the censor is identical to regular HTTP/2 traffic between Chrome and standard Frontend (e.g. Caddy, HAProxy).
NaïveProxy uses Chromium's network stack to parrot traffic between regular Chrome browsers and standard frontend servers.
Frontend also reroutes unauthenticated users and active probes to a backend HTTP server, making it impossible to detect the existence of a proxy, like this: Probe ⟶ Frontend ⟶ index.html
The frontend server can be any well-known reverse proxy that is able to route HTTP/2 traffic based on HTTP authorization headers, preventing active probing of proxy existence. Known ones include Caddy with its forwardproxy plugin and HAProxy.
Starting from v84, users can run a naïve fork of Caddy forwardproxy without the Naïve server.
The Naïve server here works as a forward proxy and a packet length padding layer. Caddy forwardproxy is also a forward proxy but it lacks a padding layer. A [fork](https://github.com/klzgrad/forwardproxy) adds the NaïveProxy padding layer to forwardproxy, combining both in one.
## Download
## Download NaïveProxy
See [latest release](https://github.com/klzgrad/naiveproxy/releases/latest). Linux, Windows, Mac OS, and various OpenWrt targets are supported.
Download [here](https://github.com/klzgrad/naiveproxy/releases/latest). Supported platforms include: Windows, Android (with [Exclave](https://github.com/dyhkwong/Exclave), [husi](https://github.com/xchacha20-poly1305/husi), [NekoBox](https://github.com/MatsuriDayo/NekoBoxForAndroid)), Linux, Mac OS, and OpenWrt ([support status](https://github.com/klzgrad/naiveproxy/wiki/OpenWrt-Support)).
Users should always use the latest version to keep signatures identical to Chrome.
Note: On Linux libnss3 must be installed before using the prebuilt binary.
Build from source: Please see [.github/workflows/build.yml](https://github.com/klzgrad/naiveproxy/blob/master/.github/workflows/build.yml).
## Setup
## Server setup
On the server, build and run Caddy v2 with naïve fork of forwardproxy: (Golang v1.14+ required)
The following describes the naïve fork of Caddy forwardproxy setup.
Download [here](https://github.com/klzgrad/forwardproxy/releases/latest) or build from source:
```sh
git clone -b naive https://github.com/klzgrad/forwardproxy
go get -u github.com/caddyserver/xcaddy/cmd/xcaddy
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy=$PWD/forwardproxy
sudo setcap cap_net_bind_service=+ep ./caddy
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy=github.com/klzgrad/forwardproxy@naive
```
Then `./caddy start` with the following Caddyfile (replace the example values accordingly):
Example Caddyfile (replace `user` and `pass` accordingly):
```
:443, example.com
tls me@example.com
route {
{
order forward_proxy before file_server
}
:443, example.com {
tls me@example.com
forward_proxy {
basic_auth user pass
hide_ip
hide_via
probe_resistance secret.com
probe_resistance
}
file_server {
root /var/www/html
}
file_server { root /var/www/html }
}
```
`:443` must appear first for this Caddyfile to work. See Caddyfile [docs](https://caddyserver.com/docs/caddyfile/directives/tls) for customizing TLS certificates. For more advanced usage consider using [JSON for Caddy 2's config](https://caddyserver.com/docs/json/).
Locally run `./naive` with the following `config.json` to get a SOCKS5 proxy at local port 1080.
Run with the Caddyfile:
```
sudo setcap cap_net_bind_service=+ep ./caddy
./caddy start
```
See also [Systemd unit example](https://github.com/klzgrad/naiveproxy/wiki/Run-Caddy-as-a-daemon) and [HAProxy setup](https://github.com/klzgrad/naiveproxy/wiki/HAProxy-Setup).
## Client setup
Run `./naive` with the following `config.json` to get a SOCKS5 proxy at local port 1080.
```json
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://username:password@example.com"
"proxy": "https://user:pass@example.com"
}
```
See [USAGE.txt](https://github.com/klzgrad/naiveproxy/blob/master/USAGE.txt) for more parameters in `config.json`. See also [Performance Tuning](https://github.com/klzgrad/naiveproxy/wiki/Performance-Tuning).
Or `quic://user:pass@example.com`, if it works better. See also [parameter usage](https://github.com/klzgrad/naiveproxy/blob/master/USAGE.txt) and [performance tuning](https://github.com/klzgrad/naiveproxy/wiki/Performance-Tuning).
## Build
## Third-party integration
If you don't like to download binaries, you can build NaïveProxy.
* [v2rayN](https://github.com/2dust/v2rayN), GUI client
Prerequisites:
* Ubuntu (apt-get install): git, python2, ninja-build (>= 1.7), pkg-config, libnss3-dev, curl, unzip, ccache (optional)
* MacOS (brew install): git, ninja, ccache (optional)
* Windows ([choco install](https://chocolatey.org/)): git, python2, ninja, visualstudio2017community. See [Chromium's page](https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md#Visual-Studio) for detail on Visual Studio setup requirements.
## Notes for downstream
Build (output to `./out/Release/naive`):
Do not use the master branch to track updates, as it rebases from a new root commit for every new Chrome release. Use stable releases and the associated tags to track new versions, where short release notes are also provided.
## Padding protocol, an informal specification
The design of this padding protocol opts for low overhead and easier implementation, in the belief that proliferation of expendable, improvised circumvention protocol designs is a better logistical impediment to censorship research than sophisicated designs.
### Proxy payload padding
NaïveProxy proxies bidirectional streams through HTTP/2 (or HTTP/3) CONNECT tunnels. The bidirectional streams operate in a sequence of reads and writes of data. The first `kFirstPaddings` (8) reads and writes in a bidirectional stream after the stream is established are padded in this format:
```c
struct PaddedData {
uint8_t original_data_size_high; // original_data_size / 256
uint8_t original_data_size_low; // original_data_size % 256
uint8_t padding_size;
uint8_t original_data[original_data_size];
uint8_t zeros[padding_size];
};
```
git clone --depth 1 https://github.com/klzgrad/naiveproxy.git
cd naiveproxy/src
./get-clang.sh
./build.sh
```
The scripts download tools from Google servers with curl. You may need to set a proxy environment variable for curl, e.g. `export ALL_PROXY=socks5h://127.0.0.1:1080`.
`padding_size` is a random integer uniformally distributed in [0, `kMaxPaddingSize`] (`kMaxPaddingSize`: 255). `original_data_size` cannot be greater than 65535, or it has to be split into several reads or writes.
## FAQ
`kFirstPaddings` is chosen to be 8 to flatten the packet length distribution spikes formed from common initial handshakes:
- Common client initial sequence: 1. TLS ClientHello; 2. TLS ChangeCipherSpec, Finished; 3. H2 Magic, SETTINGS, WINDOW_UPDATE; 4. H2 HEADERS GET; 5. H2 SETTINGS ACK.
- Common server initial sequence: 1. TLS ServerHello, ChangeCipherSpec, ...; 2. TLS Certificate, ...; 3. H2 SETTINGS; 4. H2 WINDOW_UPDATE; 5. H2 SETTINGS ACK; 6. H2 HEADERS 200 OK.
### Why not use Go, Node, etc. for TLS?
Further reads and writes after `kFirstPaddings` are unpadded to avoid performance overhead. Also later packet lengths are usually considered less informative.
Their TLS stacks have distinct features that can be [easily detected](https://arxiv.org/abs/1607.01639). TLS parameters are generally very informative and distinguishable. Most client-originated traffic comes from browsers, putting the custom network stacks in the minority.
### H2 RST_STREAM frame padding
Previously, Tor tried to mimic Firefox's TLS signature and still got [identified and blocked by firewalls](https://groups.google.com/d/msg/traffic-obf/BpFSCVgi5rs/nCqNwoeRKQAJ), because that signature was of an outdated version of Firefox and the firewall determined the rate of collateral damage would be acceptable. If we use the signature of the most commonly used browser the collateral damage of blocking it would be unacceptable.
In experiments, NaïveProxy tends to send too many RST_STREAM frames per session, an uncommon behavior from regular browsers. To solve this, an END_STREAM DATA frame padded with total length distributed in [48, 72] is prepended to the RST_STREAM frame so it looks like a HEADERS frame. The server often replies to this with a WINDOW_UPDATE because padding is accounted in flow control. Whether this results in a new uncommon behavior is still unclear.
### Why not use Go, Node, etc. for performance?
### H2 HEADERS frame padding
Any languages can be used for high performance architectures, but not all architectures have high performance.
The CONNECT request and response frames are too short and too uncommon. To make its length similar to realistic HEADERS frames, a `padding` header is filled with a sequence of symbols that are not Huffman coded and are pseudo-random enough to avoid being indexed. The length of the padding sequence is randomly distributed in [16, 32] (request) or [30, 62] (response).
Go, Node, etc. make it easy to implement a 1:1 connection proxy model, i.e. creating one upstream connection for every user connection. Then under this model the goal of performance is to reduce overhead in setting up each upstream connection. Toward that goal people start to reinvent their own 0-RTT cryptographic protocols (badly) as TLS goes out of the window because it either spends take several round trips in handshakes or makes it [a pain to set up 0-RTT properly](https://tools.ietf.org/html/rfc8446#section-8). Then people also start to look at low level optimization such as TCP Fast Open.
### Opt-in of padding protocol
Meanwhile, Google has removed the code for TCP Fast Open in Chromium all together (they [authored](https://tools.ietf.org/html/rfc7413) the RFC of TCP Fast Open in 2014). The literal reason given for this reversal was
NaïveProxy clients should interoperate with any regular HTTP/2 proxies unaware of this padding protocol. NaïveProxy servers (i.e. any proxy server capable of the this padding protocol) should interoperate with any regular HTTP/2 clients (e.g. regular browsers) unaware of this padding protocol.
> We never enabled it by default, and have no plans to, so we should just remove it. QUIC also makes it less useful, and TLS 1.2 0-RTT session restore means it potentially mutates state.
NaïveProxy servers and clients determines whether the counterpart is capable of this padding protocol by the presence of the `padding` header in the CONNECT request and response respectively. The padding procotol is enabled only if the `padding` header exists.
And the real reason Google never enabled TCP Fast Open by default is that it was dragged down by middleboxes and [never really worked](https://blog.donatas.net/blog/2017/03/09/tfo/). In Linux kernel there is a sysctl called `tcp_fastopen_blackhole_timeout_sec`, and whenever a SYN packet is dropped, TCP Fast Open is blackholed for this much time, starting at one hour and increasing exponentially, rendering it practically useless. Today TCP Fast Open accounts for [0.1% of the Internet traffic](https://ieeexplore.ieee.org/document/8303960/), so using it actually makes you highly detectable!
The first CONNECT request to a server cannot use "Fast Open" to send payload before response, because the server's padding capability has not been determined from the first response and it's unknown whether to send padded or unpadded payload for Fast Open.
It was obvious to Google then and is obvious to us now that the road to zero latency at the cost of compromising security and interoperability is a dead end under the 1:1 connection model, which is why Google pursued connection persistence and 1:N connection multiplexing in HTTP/2 and more radical overhaul of HTTP/TLS/TCP in QUIC. In a 1:N connection model, the cost of setting up the first connection is amortized, and the following connections cost nothing to set up without any security or stability compromises, and the race to zero connection latency becomes irrelevant.
## Changes from Chromium upstream
Complex, battle-tested logic for connection management was [implemented](https://web.archive.org/web/20161222115511/https://insouciant.org/tech/connection-management-in-chromium/) in Chromium. The same thing is not so easy to do again from scratch with the aforementioned languages.
- Minimize source code and build size (0.3% of the original)
- Disable exceptions and RTTI, except on Mac and Android.
- Support OpenWrt builds
- (Android, Linux) Use the builtin verifier instead of the system verifier (drop dependency of NSS on Linux) and read the system trust store from (following Go's behavior in crypto/x509/root_unix.go and crypto/x509/root_linux.go):
- The file in environment variable SSL_CERT_FILE
- The first available file of
- /etc/ssl/certs/ca-certificates.crt (Debian/Ubuntu/Gentoo etc.)
- /etc/pki/tls/certs/ca-bundle.crt (Fedora/RHEL 6)
- /etc/ssl/ca-bundle.pem (OpenSUSE)
- /etc/pki/tls/cacert.pem (OpenELEC)
- /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem (CentOS/RHEL 7)
- /etc/ssl/cert.pem (Alpine Linux)
- Files in the directory of environment variable SSL_CERT_DIR
- Files in the first available directory of
- /etc/ssl/certs (SLES10/SLES11, https://golang.org/issue/12139)
- /etc/pki/tls/certs (Fedora/RHEL)
- /system/etc/security/cacerts (Android)
- Handle AIA response in PKCS#7 format
- Allow higher socket limits for proxies
- Force tunneling for all sockets
- Support HTTP/2 and HTTP/3 CONNECT tunnel Fast Open using the `fastopen` header
- Pad RST_STREAM frames
### Why not reinvent cryptos?
## Known weaknesses
Because the first rule of cryptography is: [Don't roll your](http://loup-vaillant.fr/articles/rolling-your-own-crypto) [own cryptos](https://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own).
* HTTP CONNECT Fast Open creates back to back h2 packets consistently, which should not appear so often. This could be fixed with a little bit of corking but it would require surgical change deep in Chromium h2 stack, not very easy to do.
* TLS over TLS requires more handshake round trips than needed by common h2 requests, that is, no h2 requests need these many back and forth handshakes. There is no simple way to avoid this besides doing MITM proxying, breaking E2E encryption.
* TLS over TLS overhead causes visible packet length enlargement and lack of small packets. Removing this overhead also requires MITM proxying.
* TLS over TLS overhead also causes packets to consistently exceed MTU limits, which should not happen for an originating user agent. Fixing this requires re-segmentation and it is not easy to do.
* Packet length obfuscation partly relies on h2 multiplexing, which does not work if there is only one connection, a scenario not uncommon. It is not clear how to create covering co-connections organically (i.e. not hard coded).
* Multiplexing requires use of a few long-lived tunnel connections. It is not clearly how long is appropriate for parroting and how to convincingly rotate the connections if there is an age limit or how to detect and recover stuck tunnel connections convincingly.
If you do roll your own cryptos, see what [happened](https://groups.google.com/d/msg/traffic-obf/CWO0peBJLGc/Py-clLSTBwAJ) with Shadowsocks. (Spoiler: it encrypts, but doesn't authenticate, leading to active probing exploits, and more exploits after duct-tape fixes.)
### Why not use HTTP/2 proxy from browser directly?
You may have wondered why not use Chrome directly if NaïveProxy reuses Chrome's network stack. The answer is yes, you can. You will get 80% of what NaïveProxy does (TLS, connection multiplexing, application fronting) without NaïveProxy, which is also what makes NaïveProxy indistinguishable from normal traffic. Simply point your browser to Caddy as an HTTP/2 or HTTP/3 forward proxy directly.
But this setup is prone to basic traffic analysis due to lack of obfuscation and predictable packet sizes in TLS handshakes. [The bane of "TLS-in-TLS" tunnels](http://blog.zorinaq.com/my-experience-with-the-great-firewall-of-china/) is that this combination is just so different from any normal protocols (nobody does 3-way handshakes twice in a row) and the record sizes of TLS handshakes are so predictable that no machine learning is needed to [detect it](https://github.com/shadowsocks/shadowsocks-org/issues/86#issuecomment-362809854).
The browser will introduce an extra 1RTT delay during proxied connection setup because of interpretation of HTTP RFCs. The browser will wait for a 200 response after a CONNECT request, incuring 1RTT which is not necessary. NaïveProxy does HTTP Fast CONNECT similar to TCP Fast Open, i.e. send subsequent data immediately after CONNECT. Also, you may have to type in the password for the proxy everytime you open the browser. NaïveProxy sends the password automatically.
Thus, traffic obfuscation, HTTP Fast CONNECT, and auto-authentication are the crucial last 20% provided by NaïveProxy. These can't be really achieved inside Chrome as extensions/apps because they don't have access to sockets. NaïveProxy extracts Chromium's network stack without all the other baggage to build a small binary (4% of a full Chrome build).
But if you don't need the best performance, and unobfuscated TLS-in-TLS somehow still works for you, you can just keep using Caddy proxy with your browser.
### Why no "CDN support"?
Take Cloudflare for example. https://www.cloudflare.com/terms/ says: "Use of the Service for serving video (unless purchased separately as a Paid Service) or a disproportionate percentage of pictures, audio files, or other non-HTML content, is prohibited." Proxying traffic is definitely prohibited by the terms in this context.

View file

@ -14,6 +14,9 @@ Description:
"proxy": "..."
}
Specifying a flag multiple times on the command line is equivalent to
having an array of multiple strings in the JSON file.
Uses "config.json" by default if run without arguments.
Options:
@ -26,16 +29,16 @@ Options:
Prints version.
--listen=<proto>://[addr][:port]
--listen=LISTEN-URI
Listens at addr:port with protocol <proto>.
LISTEN-URI = <LISTEN-PROTO>"://"[<USER>":"<PASS>"@"][<ADDR>][":"<PORT>]
LISTEN-PROTO = "socks" | "http" | "redir"
Available proto: socks, http, redir.
Listens at addr:port with protocol <LISTEN-PROTO>.
Can be specified multiple times to listen on multiple ports.
Default proto, addr, port: socks, 0.0.0.0, 1080.
* http: Supports only proxying https:// URLs, no http://.
* redir: Works with certain iptables setup.
Note: redir requires specific iptables rules and uses no authentication.
(Redirecting locally originated traffic)
iptables -t nat -A OUTPUT -d $proxy_server_ip -j RETURN
@ -52,10 +55,31 @@ Options:
The artificial results are not saved for privacy, so restarting the
resolver may cause downstream to cache stale results.
--proxy=<proto>://<user>:<pass>@<hostname>[:<port>]
--proxy=PROXY
Routes traffic via the proxy server. Connects directly by default.
Available proto: https, quic. Infers port by default.
PROXY = PROXY-CHAIN | SOCKS-PROXY
PROXY-CHAIN = <PROXY-URI>[","<PROXY-CHAIN>]
PROXY-URI = <PROXY-PROTO>"://"[<USER>":"<PASS>"@"]<HOSTNAME>[":"<PORT>]
PROXY-PROTO = "http" | "https" | "quic"
SOCKS-PROXY = "socks://"<HOSTNAME>[":"<PORT>]
Routes traffic via the proxy chain.
The default proxy is directly connection without proxying.
The last PROXY-URI is negotiated automatically for Naive padding.
Limitations:
* QUIC proxies cannot follow TCP-based proxies in a proxy chain.
* The user needs to ensure there is no loop in the proxy chain.
* SOCKS proxies do not support chaining, authentication, or Naive padding.
--insecure-concurrency=<N>
Use N concurrent tunnel connections to be more robust under bad network
conditions. More connections make the tunneling easier to detect and less
secure. This project strives for the strongest security against traffic
analysis. Using it in an insecure way defeats its purpose.
If you must use this, try N=2 first to see if it solves your issues.
Strongly recommend against using more than 4 connections here.
--extra-headers=...
@ -82,3 +106,7 @@ Options:
--ssl-key-log-file=<path>
Saves SSL keys for Wireshark inspection.
--no-post-quantum
Overrides the default and disables post-quantum key agreement.

3
apk/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
.gradle/
app/build/
app/libs/

73
apk/app/build.gradle.kts Normal file
View file

@ -0,0 +1,73 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "io.nekohasekai.sagernet.plugin.naive"
signingConfigs {
create("release") {
storeFile = rootProject.file("release.keystore")
storePassword = System.getenv("KEYSTORE_PASS")
keyAlias = "release"
keyPassword = System.getenv("KEYSTORE_PASS")
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
signingConfig = signingConfigs.getByName("release")
}
}
buildToolsVersion = "35.0.0"
compileSdk = 35
defaultConfig {
minSdk = 24
targetSdk = 35
applicationId = "io.nekohasekai.sagernet.plugin.naive"
versionCode = System.getenv("APK_VERSION_NAME").removePrefix("v").split(".")[0].toInt() * 10 + System.getenv("APK_VERSION_NAME").removePrefix("v").split("-")[1].toInt()
versionName = System.getenv("APK_VERSION_NAME").removePrefix("v")
splits.abi {
isEnable = true
isUniversalApk = false
reset()
include(System.getenv("APK_ABI"))
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
lint {
showAll = true
checkAllWarnings = true
checkReleaseBuilds = false
warningsAsErrors = true
}
packaging {
jniLibs.useLegacyPackaging = true
}
applicationVariants.all {
outputs.all {
this as com.android.build.gradle.internal.api.BaseVariantOutputImpl
outputFileName =
outputFileName.replace(project.name, "naiveproxy-plugin-v$versionName")
.replace("-release", "")
.replace("-oss", "")
}
}
sourceSets.getByName("main") {
jniLibs.srcDir("libs")
}
}

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="internalOnly"
tools:ignore="MissingLeanbackLauncher">
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="Naïve Plugin"
android:roundIcon="@mipmap/ic_launcher_round">
<provider
android:name=".BinaryProvider"
android:authorities="io.nekohasekai.sagernet.plugin.naive.BinaryProvider"
android:directBootAware="true"
android:exported="true"
tools:ignore="ExportedContentProvider">
<intent-filter>
<action android:name="io.nekohasekai.sagernet.plugin.ACTION_NATIVE_PLUGIN" />
</intent-filter>
<intent-filter>
<action android:name="io.nekohasekai.sagernet.plugin.ACTION_NATIVE_PLUGIN" />
<data
android:host="io.nekohasekai.sagernet"
android:path="/naive-plugin"
android:scheme="plugin" />
</intent-filter>
<meta-data
android:name="io.nekohasekai.sagernet.plugin.id"
android:value="naive-plugin" />
<meta-data
android:name="io.nekohasekai.sagernet.plugin.executable_path"
android:value="libnaive.so" />
</provider>
</application>
</manifest>

View file

@ -0,0 +1,98 @@
/******************************************************************************
* *
* Copyright (C) 2021 by nekohasekai <contact-sagernet@sekai.icu> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
******************************************************************************/
package io.nekohasekai.sagernet.plugin
import android.content.ContentProvider
import android.content.ContentValues
import android.database.Cursor
import android.database.MatrixCursor
import android.net.Uri
import android.os.Bundle
import android.os.ParcelFileDescriptor
abstract class NativePluginProvider : ContentProvider() {
override fun getType(uri: Uri): String? = "application/x-elf"
override fun onCreate(): Boolean = true
/**
* Provide all files needed for native plugin.
*
* @param provider A helper object to use to add files.
*/
protected abstract fun populateFiles(provider: PathProvider)
override fun query(
uri: Uri,
projection: Array<out String>?,
selection: String?,
selectionArgs: Array<out String>?,
sortOrder: String?,
): Cursor? {
check(selection == null && selectionArgs == null && sortOrder == null)
val result = MatrixCursor(projection)
populateFiles(PathProvider(uri, result))
return result
}
/**
* Returns executable entry absolute path.
* This is used for fast mode initialization where ss-local launches your native binary at the path given directly.
* In order for this to work, plugin app is encouraged to have the following in its AndroidManifest.xml:
* - android:installLocation="internalOnly" for <manifest>
* - android:extractNativeLibs="true" for <application>
*
* Default behavior is throwing UnsupportedOperationException. If you don't wish to use this feature, use the
* default behavior.
*
* @return Absolute path for executable entry.
*/
open fun getExecutable(): String = throw UnsupportedOperationException()
abstract fun openFile(uri: Uri): ParcelFileDescriptor
override fun openFile(uri: Uri, mode: String): ParcelFileDescriptor {
check(mode == "r")
return openFile(uri)
}
override fun call(method: String, arg: String?, extras: Bundle?): Bundle? = when (method) {
PluginContract.METHOD_GET_EXECUTABLE -> {
Bundle().apply {
putString(PluginContract.EXTRA_ENTRY, getExecutable())
}
}
else -> super.call(method, arg, extras)
}
// Methods that should not be used
override fun insert(uri: Uri, values: ContentValues?): Uri? =
throw UnsupportedOperationException()
override fun update(
uri: Uri,
values: ContentValues?,
selection: String?,
selectionArgs: Array<out String>?,
): Int =
throw UnsupportedOperationException()
override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?): Int =
throw UnsupportedOperationException()
}

View file

@ -0,0 +1,53 @@
/******************************************************************************
* *
* Copyright (C) 2021 by nekohasekai <contact-sagernet@sekai.icu> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
******************************************************************************/
package io.nekohasekai.sagernet.plugin
import android.database.MatrixCursor
import android.net.Uri
import java.io.File
/**
* Helper class to provide relative paths of files to copy.
*/
class PathProvider internal constructor(baseUri: Uri, private val cursor: MatrixCursor) {
private val basePath = baseUri.path?.trim('/') ?: ""
fun addPath(path: String, mode: Int = 0b110100100): PathProvider {
val trimmed = path.trim('/')
if (trimmed.startsWith(basePath)) cursor.newRow()
.add(PluginContract.COLUMN_PATH, trimmed)
.add(PluginContract.COLUMN_MODE, mode)
return this
}
fun addTo(file: File, to: String = "", mode: Int = 0b110100100): PathProvider {
var sub = to + file.name
if (basePath.startsWith(sub)) if (file.isDirectory) {
sub += '/'
file.listFiles()!!.forEach { addTo(it, sub, mode) }
} else addPath(sub, mode)
return this
}
fun addAt(file: File, at: String = "", mode: Int = 0b110100100): PathProvider {
if (basePath.startsWith(at)) {
if (file.isDirectory) file.listFiles()!!.forEach { addTo(it, at, mode) } else addPath(at, mode)
}
return this
}
}

View file

@ -0,0 +1,34 @@
/******************************************************************************
* *
* Copyright (C) 2021 by nekohasekai <contact-sagernet@sekai.icu> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
******************************************************************************/
package io.nekohasekai.sagernet.plugin
object PluginContract {
const val ACTION_NATIVE_PLUGIN = "io.nekohasekai.sagernet.plugin.ACTION_NATIVE_PLUGIN"
const val EXTRA_ENTRY = "io.nekohasekai.sagernet.plugin.EXTRA_ENTRY"
const val METADATA_KEY_ID = "io.nekohasekai.sagernet.plugin.id"
const val METADATA_KEY_EXECUTABLE_PATH = "io.nekohasekai.sagernet.plguin.executable_path"
const val METHOD_GET_EXECUTABLE = "sagernet:getExecutable"
const val COLUMN_PATH = "path"
const val COLUMN_MODE = "mode"
const val SCHEME = "plugin"
const val AUTHORITY = "io.nekohasekai.sagernet"
}

View file

@ -0,0 +1,42 @@
/******************************************************************************
* *
* Copyright (C) 2021 by nekohasekai <contact-sagernet@sekai.icu> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
******************************************************************************/
package io.nekohasekai.sagernet.plugin.naive
import android.net.Uri
import android.os.ParcelFileDescriptor
import io.nekohasekai.sagernet.plugin.NativePluginProvider
import io.nekohasekai.sagernet.plugin.PathProvider
import java.io.File
import java.io.FileNotFoundException
class BinaryProvider : NativePluginProvider() {
override fun populateFiles(provider: PathProvider) {
provider.addPath("naive-plugin", 0b111101101)
}
override fun getExecutable() = context!!.applicationInfo.nativeLibraryDir + "/libnaive.so"
override fun openFile(uri: Uri): ParcelFileDescriptor = when (uri.path) {
"/naive-plugin" -> ParcelFileDescriptor.open(
File(getExecutable()),
ParcelFileDescriptor.MODE_READ_ONLY
)
else -> throw FileNotFoundException()
}
}

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108"
android:tint="#FFFFFF">
<group android:scaleX="0.13877095"
android:scaleY="0.13877095"
android:translateX="29.16"
android:translateY="42.010185">
<group android:translateY="138.67206">
<path android:pathData="M4.171875,-0L34.546875,-0L34.546875,-5.890625L25.90625,-7.046875L23.3125,-9.796875L23.3125,-82.125L78.1875,-0L87.6875,-0L87.6875,-87.328125L90.28125,-89.9375L98.921875,-91.234375L98.921875,-97L68.671875,-97L68.671875,-91.234375L77.3125,-89.9375L79.90625,-87.328125L79.90625,-19.34375L30.8125,-93.390625L30.8125,-97L3.734375,-97L3.734375,-91.234375L12.953125,-90.359375L15.546875,-88.34375L15.546875,-9.796875L12.953125,-7.046875L4.171875,-5.890625L4.171875,-0Z"
android:fillColor="#FFFFFF"/>
<path android:pathData="M151.09375,-8.375L152.95312,0L173.26562,0L173.26562,-5.171875L165.625,-5.90625L163.03125,-8.234375L163.03125,-50.3125C163.03125,-64.796875,156.70312,-71,141.57812,-71C123.4375,-71,112.5,-63.5,112.5,-54.75C112.5,-51.3125,113.640625,-50.3125,116.953125,-50.3125L126.890625,-50.3125L126.890625,-62.359375C130.78125,-63.9375,134.23438,-64.65625,137.84375,-64.65625C148.20312,-64.65625,151.09375,-59.921875,151.09375,-48.578125L151.09375,-44C122.28125,-37.0625,109.046875,-32.6875,109.046875,-17.546875C109.046875,-6.625,116.09375,1,127.46875,1C134.39062,1.015625,142.01562,-2.15625,151.09375,-8.375ZM151.09375,-13.328125C143.89062,-9.09375,137.98438,-6.765625,133.23438,-6.765625C126.03125,-6.765625,121.71875,-11.578125,121.71875,-18.703125C121.71875,-29.34375,130.78125,-33.265625,151.09375,-38.953125L151.09375,-13.328125Z"
android:fillColor="#FFFFFF"/>
<path android:pathData="M197.59375,-70L181.03125,-65L181.03125,-60.53125L191.10938,-60.53125L191.10938,-8.203125L188.65625,-5.90625L181.03125,-5.171875L181.03125,0L213.4375,0L213.4375,-5.171875L205.65625,-5.90625L203.20312,-8.203125L203.20312,-70L197.59375,-70ZM182.76562,-99.53125C178.73438,-99.53125,175.42188,-96.375,175.42188,-92.1875C175.42188,-88.15625,178.73438,-85,182.76562,-85C186.79688,-85,189.95312,-88.15625,189.95312,-92.1875C189.95312,-96.375,186.79688,-99.53125,182.76562,-99.53125ZM209.54688,-99.53125C205.51562,-99.53125,202.20312,-96.375,202.20312,-92.1875C202.20312,-88.15625,205.51562,-85,209.54688,-85C213.57812,-85,216.75,-88.15625,216.75,-92.1875C216.75,-96.375,213.57812,-99.53125,209.54688,-99.53125Z"
android:fillColor="#FFFFFF"/>
<path android:pathData="M215.26562,-69L215.26562,-63.671875L224.0625,-62.796875L247.23438,0L255.29688,0L280.5,-62.515625L289,-63.671875L289,-69L263.51562,-69L263.51562,-63.671875L271.28125,-63.09375L272.4375,-60.796875L254,-13.90625L237.15625,-60.796875L238.89062,-63.09375L246.51562,-63.671875L246.51562,-69L215.26562,-69Z"
android:fillColor="#FFFFFF"/>
<path android:pathData="M351.5,-15.5C343.29688,-10.0625,336.09375,-7.203125,328.89062,-7.203125C314.35938,-7.203125,304.70312,-18.078125,304.70312,-36.421875C304.70312,-36.84375,304.70312,-37.421875,304.70312,-38L351.35938,-38C351.5,-39.578125,351.5,-41.015625,351.5,-42.453125C351.5,-60.296875,341.28125,-71,325.57812,-71C306.28125,-71,292.3125,-56.09375,292.3125,-34.265625C292.3125,-13.21875,305.42188,1,324.4375,1C333.5,1,342.85938,-1.875,351.5,-7.625L351.5,-15.5ZM338.6875,-44.046875L305.42188,-44.046875C306.28125,-56.375,314.5,-64.515625,323.71875,-64.515625C333.35938,-64.515625,338.6875,-58.125,338.6875,-46.359375C338.6875,-45.640625,338.6875,-44.765625,338.6875,-44.046875Z"
android:fillColor="#FFFFFF"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#E91E63</color>
</resources>

18
apk/build.gradle Normal file
View file

@ -0,0 +1,18 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.6.0'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.20'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

21
apk/gradle.properties Normal file
View file

@ -0,0 +1,21 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official

BIN
apk/gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View file

@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

252
apk/gradlew vendored Executable file
View file

@ -0,0 +1,252 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

94
apk/gradlew.bat vendored Normal file
View file

@ -0,0 +1,94 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

BIN
apk/release.keystore Normal file

Binary file not shown.

10
apk/settings.gradle Normal file
View file

@ -0,0 +1,10 @@
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "Naive Plugin"
include ':app'

View file

@ -7,6 +7,51 @@ BasedOnStyle: Chromium
# 'int>>' if the file already contains at least one such instance.)
Standard: Cpp11
# TODO(crbug.com/1392808): Remove when InsertBraces has been upstreamed into
# the Chromium style (is implied by BasedOnStyle: Chromium).
InsertBraces: true
InsertNewlineAtEOF: true
# Sort #includes by following
# https://google.github.io/styleguide/cppguide.html#Names_and_Order_of_Includes
#
# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includeblocks
IncludeBlocks: Regroup
# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includecategories
IncludeCategories:
# The win32 api has all sorts of implicit include order dependencies :-/
# Give a few headers special priorities that make sure they appear before
# all other headers.
# Sync this with SerializeIncludes in tools/add_header.py.
# TODO(crbug.com/329138753): remove include sorting from tools/add_header.py
# after confirming clang-format sort works well.
# LINT.IfChange(winheader)
- Regex: '^<objbase\.h>' # This has to be before initguid.h.
Priority: 1
- Regex: '^<(atlbase|initguid|mmdeviceapi|ocidl|ole2|shobjidl|tchar|unknwn|windows|winsock2|winternl|ws2tcpip)\.h>'
Priority: 2
# LINT.ThenChange(/tools/add_header.py:winheader)
# UIAutomation*.h needs to be after base/win/atl.h.
# Note the low priority number.
- Regex: '^<UIAutomation.*\.h>'
Priority: 6
# Other C system headers.
- Regex: '^<.*\.h>'
Priority: 3
# C++ standard library headers.
- Regex: '^<.*>'
Priority: 4
# windows_h_disallowed.h should appear last. Note the low priority number.
- Regex: '"(.*/)?windows_h_disallowed\.h"'
Priority: 7
# Other libraries.
- Regex: '.*'
Priority: 5
# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includeismainregex
IncludeIsMainRegex: "\
(_(32|64|android|apple|chromeos|freebsd|fuchsia|fuzzer|ios|linux|mac|nacl|openbsd|posix|stubs?|win))?\
(_(unit|browser|perf)?tests?)?$"
# Make sure code like:
# IPC_BEGIN_MESSAGE_MAP()
# IPC_MESSAGE_HANDLER(WidgetHostViewHost_Update, OnUpdate)
@ -34,6 +79,3 @@ IPC_STRUCT_END|\
IPC_STRUCT_TRAITS_END|\
POLPARAMS_END|\
PPAPI_END_MESSAGE_MAP$"
# TODO: Remove this once clang-format r357700 is rolled in.
JavaImportGroups: ['android', 'androidx', 'com', 'dalvik', 'junit', 'org', 'com.google.android.apps.chrome', 'org.chromium', 'java', 'javax']

7
src/.gitattributes vendored
View file

@ -27,8 +27,12 @@
*.mm text eol=lf
*.mojom text eol=lf
*.pdf -diff
*.proto text eol=lf
*.rs text eol=lf
*.sh text eol=lf
*.spec text eol=lf
*.sql text eol=lf
*.toml text eol=lf
*.txt text eol=lf
*.xml text eol=lf
*.xslt text eol=lf
@ -40,7 +44,7 @@
.vpython text eol=lf
codereview.settings text eol=lf
DEPS text eol=lf
ENG_REVIEW_OWNERS text eol=lf
ATL_OWNERS text eol=lf
LICENSE text eol=lf
LICENSE.* text eol=lf
MAJOR_BRANCH_DATE text eol=lf
@ -49,6 +53,7 @@ README text eol=lf
README.* text eol=lf
WATCHLISTS text eol=lf
VERSION text eol=lf
DIR_METADATA text eol=lf
# Skip Tricium by default on files in third_party.
third_party/** -tricium

574
src/.gn
View file

@ -8,6 +8,10 @@ import("//third_party/angle/dotfile_settings.gni")
# The location of the build configuration file.
buildconfig = "//build/config/BUILDCONFIG.gn"
# The python interpreter to use by default. On Windows, this will look
# for python3.exe and python3.bat.
script_executable = "python3"
# These arguments override the default values for items in a declare_args
# block. "gn args" in turn can override these.
#
@ -29,18 +33,18 @@ default_args = {
# also needs to be defined to src/ios/BUILD.gn (respectively removed from both
# location when it is removed).
v8_extra_library_files = []
v8_experimental_extra_library_files = []
v8_enable_gdbjit = false
v8_imminent_deprecation_warnings = false
# TODO(jochen): Remove this. http://crbug.com/v8/5830,
# http://crbug.com/728583.
v8_check_microtasks_scopes_consistency = false
# Don't include webrtc's builtin task queue implementation.
rtc_link_task_queue_impl = false
# When building with Chromium, `webrtc::Location` is replaced by
# `base::Location`. Since WebRTC doesn't use `public_deps` (webrtc:8603), it
# would fail to propagate the dependency internally. Instead WebRTC let its
# embedders to define it globally for all of its targets.
rtc_common_public_deps = [ "//base" ]
# Don't include the iLBC audio codec.
# TODO(bugs.webrtc.org/8396): Once WebRTC gets rid of its internal
# deps on codecs, we can remove this.
@ -49,531 +53,44 @@ default_args = {
# Changes some setup for the Crashpad build to set them to build against
# Chromium's zlib, base, etc.
crashpad_dependencies = "chromium"
# Override ANGLE's Vulkan dependencies.
angle_vulkan_headers_dir = "//third_party/vulkan-headers/src"
angle_vulkan_loader_dir = "//third_party/vulkan-loader/src"
angle_vulkan_tools_dir = "//third_party/vulkan-tools/src"
angle_vulkan_validation_layers_dir =
"//third_party/vulkan-validation-layers/src"
# Override VMA's Vulkan dependencies.
vma_vulkan_headers_dir = "//third_party/vulkan-headers/src"
# Overwrite default args declared in the Fuchsia sdk
fuchsia_sdk_readelf_exec =
"//third_party/llvm-build/Release+Asserts/bin/llvm-readelf"
# Overwrite default args declared in the pdfium library
pdf_partition_alloc_dir = "//base/allocator/partition_allocator"
devtools_visibility = [ "*" ]
clang_unsafe_buffers_paths = "//build/config/unsafe_buffers_paths.txt"
}
# These are the targets to check headers for by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will have
# These are the targets to skip header checking by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will not have
# their includes checked for proper dependencies when you run either
# "gn check" or "gn gen --check".
check_targets = [
"//android_webview/*",
"//apps/*",
"//ash/*",
"//base/*",
"//blink/*",
"//build/*",
"//buildtools/*",
"//cc/*",
#"//chrome/*", # Many errors: https://crbug.com/949535
"//chrome/android/*",
"//chrome/app/*",
"//chrome/app_shim/*",
#"//chrome/browser/*", # ~1300 errors
#"//chrome/browser:*", # ~600 errors
"//chrome/browser/accessibility/*",
"//chrome/browser/android/*",
"//chrome/browser/app_mode/*",
"//chrome/browser/apps/*",
"//chrome/browser/assist_ranker/*",
"//chrome/browser/autocomplete/*",
"//chrome/browser/autofill/*",
"//chrome/browser/background/*",
"//chrome/browser/background_fetch/*",
"//chrome/browser/background_sync/*",
"//chrome/browser/banners/*",
"//chrome/browser/bitmap_fetcher/*",
"//chrome/browser/bookmarks/*",
"//chrome/browser/browsing_data/*",
"//chrome/browser/budget_service/*",
"//chrome/browser/captive_portal/*",
"//chrome/browser/chooser_controller/*",
"//chrome/browser/chromeos/*",
"//chrome/browser/client_hints/*",
"//chrome/browser/clipboard/*",
"//chrome/browser/component_updater/*",
"//chrome/browser/consent_auditor/*",
"//chrome/browser/content_settings/*",
"//chrome/browser/crash_upload_list/*",
"//chrome/browser/custom_handlers/*",
"//chrome/browser/data_saver/*",
"//chrome/browser/data_use_measurement/*",
"//chrome/browser/dbus/*",
#"//chrome/browser/devtools/*", # 93 errors
"//chrome/browser/diagnostics/*",
"//chrome/browser/domain_reliability/*",
"//chrome/browser/dom_distiller/*",
"//chrome/browser/downgrade/*",
"//chrome/browser/download/*",
"//chrome/browser/drive/*",
"//chrome/browser/engagement/*",
"//chrome/browser/extensions/*",
"//chrome/browser/external_protocol/*",
"//chrome/browser/favicon/*",
"//chrome/browser/feature_engagement/*",
"//chrome/browser/feedback/*",
"//chrome/browser/first_run/*",
"//chrome/browser/gcm/*",
"//chrome/browser/generic_sensor/*",
"//chrome/browser/geolocation/*",
"//chrome/browser/google/*",
"//chrome/browser/gpu/*",
"//chrome/browser/guest_view/*",
"//chrome/browser/hang_monitor/*",
"//chrome/browser/history/*",
"//chrome/browser/importer/*",
"//chrome/browser/infobars/*",
"//chrome/browser/installable/*",
"//chrome/browser/install_verification/*",
"//chrome/browser/internal/*",
"//chrome/browser/interstitials/*",
"//chrome/browser/invalidation/*",
"//chrome/browser/language/*",
"//chrome/browser/lifetime/*",
#"//chrome/browser/loader/*", # 2 errors
"//chrome/browser/local_discovery/*",
"//chrome/browser/mac/*",
#"//chrome/browser/media/*", # 74 errors
"//chrome/browser/media_galleries/*",
"//chrome/browser/memory/*",
"//chrome/browser/metrics/*",
"//chrome/browser/nacl_host/*",
"//chrome/browser/navigation_predictor/*",
"//chrome/browser/net/*",
"//chrome/browser/notifications/*",
"//chrome/browser/ntp_snippets/*",
"//chrome/browser/ntp_tiles/*",
"//chrome/browser/obsolete_system/*",
"//chrome/browser/offline_items_collection/*",
"//chrome/browser/offline_pages/*",
"//chrome/browser/page_load_metrics/*",
"//chrome/browser/password_manager/*",
"//chrome/browser/payments/*",
"//chrome/browser/pdf/*",
"//chrome/browser/performance_monitor/*",
"//chrome/browser/permissions/*",
"//chrome/browser/picture_in_picture/*",
"//chrome/browser/plugins/*",
"//chrome/browser/policy/*",
"//chrome/browser/predictors/*",
"//chrome/browser/prefetch/*",
"//chrome/browser/prefs/*",
"//chrome/browser/prerender/*",
"//chrome/browser/previews/*",
"//chrome/browser/printing/*",
"//chrome/browser/privacy_budget/*",
"//chrome/browser/profile_resetter/*",
"//chrome/browser/profiles/*",
#"//chrome/browser/profiling_host/*", # 16 errors
"//chrome/browser/push_messaging/*",
"//chrome/browser/recovery/*",
"//chrome/browser/renderer_context_menu/*",
"//chrome/browser/renderer_host/*",
"//chrome/browser/resource_coordinator/*",
#"//chrome/browser/resources/*", # 18 errors on ChromeOS
"//chrome/browser/rlz/*",
#"//chrome/browser/safe_browsing/*", # 239 errors
"//chrome/browser/search/*",
"//chrome/browser/search_engines/*",
"//chrome/browser/search_provider_logos/*",
"//chrome/browser/service_process/*",
"//chrome/browser/sessions/*",
"//chrome/browser/signin/*",
"//chrome/browser/speech/*",
"//chrome/browser/spellchecker/*",
"//chrome/browser/ssl/*",
"//chrome/browser/status_icons/*",
"//chrome/browser/storage/*",
"//chrome/browser/subresource_filter/*",
"//chrome/browser/supervised_user/*",
"//chrome/browser/sync/*",
"//chrome/browser/sync_file_system/*",
"//chrome/browser/tab_contents/*",
"//chrome/browser/task_manager/*",
"//chrome/browser/themes/*",
"//chrome/browser/tracing/*",
"//chrome/browser/translate/*",
"//chrome/browser/ui/*",
"//chrome/browser/undo/*",
"//chrome/browser/unified_consent/*",
"//chrome/browser/update_client/*",
"//chrome/browser/upgrade_detector/*",
"//chrome/browser/usb/*",
"//chrome/browser/vr/*",
"//chrome/browser/web_applications/*",
"//chrome/browser/webauthn/*",
"//chrome/browser/webshare/*",
"//chrome/browser/win/*",
"//chrome/build/*",
#"//chrome/child/*", # 1 error on Windows
"//chrome/chrome_elf/*",
"//chrome/chrome_cleaner/*",
"//chrome/common/*",
"//chrome/elevation_service/*",
#"//chrome/gpu/*", # 7 errors
"//chrome/installer/*",
#"//chrome/install_static/*", # 8 errors on Windows
"//chrome/nacl/*",
#"//chrome/notification_helper/*", # 4 errors on Windows
#"//chrome/renderer/*", # ~30 errors
#"//chrome/service/*", # 2 errors
#"//chrome/services/*", # ~30 errors
#"//chrome/test/*", # ~1900 errors
"//chrome/test/chromedriver",
"//chrome/third_party/*",
"//chrome/tools/*",
"//chrome/updater/*",
"//chrome/utility/*",
"//chromecast/*",
"//chromeos/*",
"//cloud_print/*",
"//components/*",
"//content/*",
"//courgette/*",
"//crypto/*",
"//data/*",
"//dbus/*",
"//device/*",
#"//extensions/*", # Lots of errors.
"//extensions:extensions_resources",
"//extensions:extensions_browsertests",
"//extensions:extensions_unittests",
"//extensions/browser",
"//extensions/browser:core_api_provider",
"//extensions/browser:browser_tests",
"//extensions/browser:test_support",
"//extensions/browser:unit_tests",
"//extensions/browser/api:api_registration",
"//extensions/browser/install:*",
"//extensions/browser/kiosk/*",
"//extensions/browser/guest_view/web_view/web_ui/*",
"//extensions/common/*",
"//extensions/components/javascript_dialog_extensions_client",
"//extensions/components/native_app_window",
"//extensions/renderer/*",
"//extensions/shell/*",
"//extensions/strings/*",
"//fuchsia/*",
"//gin/*",
"//google_apis/*",
"//google_update/*",
"//gpu/*",
"//ios/*",
"//ios_internal/*",
"//ipc/*",
#"//jingle/*",
"//libassistant/communication/*",
"//libinteraction/*",
"//media/*",
"//mojo/*",
#"//native_client/*",
"//net/*",
#"//pdf/*", # Medium-hard.
#"//ppapi/*", # Lots of errors.
"//ppapi/examples/*",
"//ppapi/tests/*",
"//printing/*",
#"//remoting/*", # Medium-hard.
"//rlz/*",
#"//sandbox/*", # Medium-hard.
"//services/*",
"//skia/*",
"//sql/*",
"//storage/*",
"//testing/*",
#"//third_party/*", # May not ever want this.
"//third_party:freetype_harfbuzz",
"//third_party/Python-Markdown/*",
"//third_party/SPIRV-Tools/*",
"//third_party/abseil-cpp/*",
"//third_party/accessibility-audit/*",
"//third_party/accessibility_test_framework/*",
"//third_party/adobe/*",
"//third_party/afl/*",
"//third_party/android_build_tools/*",
"//third_party/android_crazy_linker/*",
"//third_party/android_data_chart/*",
"//third_party/android_deps/*",
"//third_party/android_media/*",
"//third_party/android_ndk/*",
"//third_party/android_opengl/*",
"//third_party/android_platform/*",
"//third_party/android_protobuf/*",
"//third_party/android_sdk/*",
"//third_party/android_support_test_runner/*",
"//third_party/android_swipe_refresh/*",
"//third_party/android_system_sdk/*",
"//third_party/android_testrunner/*",
"//third_party/angle/*",
"//third_party/apache-portable-runtime/*",
"//third_party/apache_velocity/*",
"//third_party/apache-win32/*",
"//third_party/apk-patch-size-estimator/*",
"//third_party/apple_apsl/*",
"//third_party/appurify-python/*",
"//third_party/arcore-android-sdk/*",
"//third_party/ashmem/*",
"//third_party/axe-core/*",
"//third_party/bazel/*",
"//third_party/blanketjs/*",
# "//third_party/blink/*", # Errors: https://crbug.com/800764
"//third_party/blink/public/*",
"//third_party/blink/common/privacy_budget/*",
#"//third_party/breakpad/*", # Small errors.
"//third_party/boringssl/*",
"//third_party/bouncycastle/*",
"//third_party/brotli/*",
"//third_party/bspatch/*",
"//third_party/byte_buddy/*",
"//third_party/cacheinvalidation/*",
"//third_party/catapult/*",
# "//third_party/ced/*", # 6 errors
"//third_party/chaijs/*",
"//third_party/checkstyle/*",
"//third_party/chromevox/*",
"//third_party/chromite/*",
"//third_party/cld_2/*",
"//third_party/cld_3/*",
"//third_party/closure_compiler/*",
"//third_party/colorama/*",
# "//third_party/crashpad/*", 20ish errors
"//third_party/crc32c/*",
"//third_party/cros_system_api/*",
"//third_party/cython/*",
"//third_party/d3/*",
"//third_party/dawn/*",
"//third_party/decklink/*",
"//third_party/depot_tools/*",
"//third_party/deqp/*",
"//third_party/devscripts/*",
"//third_party/dom_distiller_js/*",
"//third_party/elfutils/*",
"//third_party/espresso/*",
"//third_party/expat/*",
"//third_party/eyesfree/*",
# "//third_party/ffmpeg/*", # android_cronet only https://crbug.com/898793
"//third_party/flac/*",
"//third_party/flatbuffers/*",
"//third_party/fontconfig/*",
"//third_party/freetype/*",
"//third_party/freetype2/*",
"//third_party/freetype-android/*",
"//third_party/fuchsia-sdk/*",
"//third_party/gif_player/*",
"//third_party/glfw/*",
"//third_party/glslang/*",
"//third_party/google_appengine_cloudstorage/*",
"//third_party/google_input_tools/*",
"//third_party/googletest/*",
"//third_party/google_toolbox_for_mac/*",
"//third_party/google-truth/*",
"//third_party/gradle_wrapper/*",
"//third_party/guava/*",
"//third_party/gvr-android-keyboard/*",
"//third_party/gvr-android-sdk/*",
"//third_party/hamcrest/*",
"//third_party/harfbuzz-ng/*",
"//third_party/hunspell/*",
"//third_party/hunspell/*",
"//third_party/hunspell_dictionaries/*",
"//third_party/iaccessible2/*",
"//third_party/iccjpeg/*",
# "//third_party/icu/*", # Many errors
"//third_party/icu4j/*",
"//third_party/ijar/*",
"//third_party/ink/*",
"//third_party/inspector_protocol/*",
"//third_party/instrumented_libraries/*",
"//third_party/isimpledom/*",
"//third_party/javax_inject/*",
"//third_party/jinja2/*",
"//third_party/jsoncpp/*",
"//third_party/jstemplate/*",
"//third_party/junit/*",
"//third_party/khronos/*",
"//third_party/lcov/*",
"//third_party/leakcanary/*",
"//third_party/leveldatabase/*",
"//third_party/libFuzzer/*",
"//third_party/libXNVCtrl/*",
"//third_party/libaddressinput/*",
# "//third_party/libaom/*", # https://crbug.com/899771
"//third_party/libc++/*",
"//third_party/libc++abi/*",
"//third_party/libdrm/*",
"//third_party/libgav1/*",
"//third_party/libjingle/*",
# "//third_party/libjingle_xmpp/*", # 30ish errors
"//third_party/libjpeg/*",
# "//third_party/libjpeg_turbo/*", # 3 errors
# "//third_party/liblouis/*", # Small errors
"//third_party/libovr/*",
"//third_party/libphonenumber/*",
"//third_party/libpng/*",
"//third_party/libprotobuf-mutator/*",
"//third_party/libsecret/*",
"//third_party/libsrtp/*",
"//third_party/libsync/*",
"//third_party/libudev/*",
"//third_party/libusb/*",
# "//third_party/libvpx/*", # Many errors
"//third_party/libvpx_new/*",
"//third_party/libwebm/*",
#"//third_party/libwebp/*", # Errors: https://crbug.com/800762
"//third_party/libxml/*",
"//third_party/libxslt/*",
"//third_party/libyuv/*",
"//third_party/llvm/*",
"//third_party/llvm-bootstrap/*",
"//third_party/llvm-bootstrap-install/*",
"//third_party/llvm-build-tools/*",
"//third_party/logilab/*",
"//third_party/lss/*",
"//third_party/lzma_sdk/*",
"//third_party/markdown/*",
"//third_party/markupsafe/*",
"//third_party/material_design_icons/*",
"//third_party/mesa_headers/*",
"//third_party/metrics_proto/*",
"//third_party/minigbm/*",
"//third_party/minizip/*",
"//third_party/mocha/*",
"//third_party/mockito/*",
"//third_party/modp_b64/*",
"//third_party/motemplate/*",
"//third_party/mozilla/*",
"//third_party/mtpd/*",
"//third_party/netty4/*",
"//third_party/netty-tcnative/*",
"//third_party/node/*",
"//third_party/nvml/*",
"//third_party/objenesis/*",
"//third_party/ocmock/*",
"//third_party/openh264/*",
"//third_party/openvr/*",
"//third_party/opus/*",
"//third_party/ots/*",
# "//third_party/pdfium/*", # 3 errors
"//third_party/perfetto/*",
"//third_party/pexpect/*",
"//third_party/ply/*",
"//third_party/polymer/*",
"//third_party/proguard/*",
"//third_party/protobuf/*",
"//third_party/pycoverage/*",
"//third_party/pyelftools/*",
"//third_party/pyjson5/*",
"//third_party/pylint/*",
"//third_party/pymock/*",
"//third_party/pystache/*",
"//third_party/py_trace_event/*",
"//third_party/pywebsocket3/*",
"//third_party/qcms/*",
"//third_party/quic_trace/*",
"//third_party/qunit/*",
"//third_party/r8/*",
"//third_party/re2/*",
"//third_party/requests/*",
"//third_party/retrolambda/*",
"//third_party/rnnoise/*",
"//third_party/robolectric/*",
"//third_party/s2cellid/*",
"//third_party/safe_browsing/*",
"//third_party/scan-build/*",
"//third_party/shaderc/*",
"//third_party/simplejson/*",
"//third_party/sinonjs/*",
"//third_party/skia/*",
"//third_party/smhasher/*",
"//third_party/snappy/*",
"//third_party/speech-dispatcher/*",
"//third_party/spirv-cross/*",
"//third_party/spirv-headers/*",
"//third_party/sqlite/*",
"//third_party/sqlite4java/*",
"//third_party/stp/*",
"//third_party/sudden_motion_sensor/*",
"//third_party/swiftshader/*",
"//third_party/swig/*",
"//third_party/tcmalloc/*",
"//third_party/test_fonts/*",
"//third_party/tlslite/*",
"//third_party/ub-uiautomator/*",
"//third_party/unrar/*",
"//third_party/usb_ids/*",
"//third_party/usrsctp/*",
"//third_party/v4l-utils/*",
"//third_party/valgrind/*",
"//third_party/vulkan/*",
"//third_party/vulkan-validation-layers/*",
# "//third_party/wayland/*", # Small errors
"//third_party/wayland-protocols/*",
"//third_party/wds/*",
"//third_party/web-animations-js/*",
"//third_party/webdriver/*",
"//third_party/webgl/*",
"//third_party/webpagereplay/*",
"//third_party/webrtc/*",
"//third_party/webrtc_overrides/*",
"//third_party/widevine/*",
"//third_party/win_build_output/*",
"//third_party/woff2/*",
"//third_party/wtl/*",
"//third_party/xdg-utils/*",
"//third_party/xstream/*",
"//third_party/yasm/*",
"//third_party/zlib/*",
"//third_party/woff2/*",
"//tools/*",
"//ui/*",
"//url/*",
#"//v8/*", # Errors: https://bugs.chromium.org/p/v8/issues/detail?id=7330
"//weblayer/*",
no_check_targets = [
# //v8, https://crbug.com/v8/7330
"//v8/src/inspector:inspector", # 20 errors
"//v8/test/cctest:cctest_sources", # 15 errors
"//v8/test/unittests:inspector_unittests_sources", # 2 errors
"//v8:cppgc_base", # 1 error
"//v8:v8_internal_headers", # 11 errors
"//v8:v8_libplatform", # 2 errors
]
# These are the list of GN files that run exec_script. This whitelist exists
# These are the list of GN files that run exec_script. This allowlist exists
# to force additional review for new uses of exec_script, which is strongly
# discouraged.
#
@ -628,17 +145,18 @@ check_targets = [
# this situation much easier to create. if the build always lists the
# files and passes them to a script, it will always be correct.
exec_script_whitelist =
build_dotfile_settings.exec_script_whitelist +
exec_script_allowlist =
build_dotfile_settings.exec_script_allowlist +
angle_dotfile_settings.exec_script_whitelist +
[
# Whitelist entries for //build should go into
# Allowlist entries for //build should go into
# //build/dotfile_settings.gni instead, so that they can be shared
# with other repos. The entries in this list should be only for files
# in the Chromium repo outside of //build.
"//build_overrides/build.gni",
"//chrome/android/webapk/shell_apk/prepare_upload_dir/BUILD.gn",
"//chrome/version.gni",
# TODO(dgn): Layer violation but breaks the build otherwise, see
# https://crbug.com/474506.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

5646
src/DEPS Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
// Copyright 2015 The Chromium Authors. All rights reserved.
// Copyright 2015 The Chromium Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@ -10,7 +10,7 @@
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// * Neither the name of Google LLC nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//

View file

@ -1,994 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//android_webview/system_webview_apk_tmpl.gni")
import("//android_webview/system_webview_bundle.gni")
import("//android_webview/variables.gni")
import("//android_webview/webview_repack_locales.gni")
import("//build/android/resource_sizes.gni")
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
import("//build/config/locales.gni")
import("//chrome/android/chrome_common_shared_library.gni")
import("//chrome/android/chrome_public_apk_tmpl.gni")
import("//chrome/android/trichrome.gni")
import("//components/spellcheck/spellcheck_build_features.gni")
import("//tools/grit/repack.gni")
import("//tools/resources/generate_resource_whitelist.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
import("//weblayer/variables.gni")
if (enable_resource_whitelist_generation) {
system_webview_pak_whitelist =
"$target_gen_dir/system_webview_pak_whitelist.txt"
}
# Having //clank present causes different flags because of how play services
# is wired up.
# The channel is required because manifest entries vary based on channel.
_verify_android_configuration =
!is_java_debug && !enable_chrome_android_internal &&
android_channel == "stable"
template("standalone_system_webview_apk_tmpl") {
system_webview_apk_or_module_tmpl(target_name) {
forward_variables_from(invoker, "*")
android_manifest = system_webview_android_manifest
android_manifest_dep =
"//android_webview/nonembedded:system_webview_manifest"
deps = upstream_only_webview_deps
min_sdk_version = 21
}
}
# Standalone WebView APK.
standalone_system_webview_apk_tmpl("system_webview_apk") {
apk_name = "SystemWebView"
}
# This version of the WebView APK doesn't include WebLayer java and resources.
# It's used to define the whitelist of resources to be pulled out of language
# splits. See |shared_resources_allowlist_target|.
standalone_system_webview_apk_tmpl("system_webview_no_weblayer_apk") {
exclude_weblayer_java = true
apk_name = "SystemWebViewNoWebLayer"
}
if (enable_webview_bundles) {
standalone_system_webview_apk_tmpl("system_webview_base_bundle_module") {
target_type = "android_app_bundle_module"
is_base_module = true
if (_verify_android_configuration) {
expected_android_manifest =
"expectations/system_webview_bundle.AndroidManifest.expected"
}
}
system_webview_bundle("system_webview_bundle") {
base_module_target = ":system_webview_base_bundle_module"
bundle_name = "SystemWebView"
min_sdk_version = 21
compress_shared_libraries = true
}
if (is_official_build) {
# Used for binary size monitoring.
create_app_bundle_minimal_apks("system_webview_minimal_apks") {
deps = [ ":system_webview_bundle" ]
bundle_path = "$root_build_dir/apks/SystemWebView.aab"
}
android_resource_sizes_test("resource_sizes_system_webview_bundle") {
file_path = "$root_build_dir/apks/SystemWebView.minimal.apks"
data_deps = [ ":system_webview_minimal_apks" ]
}
}
}
if (android_64bit_target_cpu) {
# These targets builds a 32-bit only Webview on a 64-bit config, analogous
# to what's built on a 32-bit config. This lets all Webviews build on a
# single configuration.
standalone_system_webview_apk_tmpl("system_webview_32_apk") {
apk_name = "SystemWebView32"
include_64_bit_webview = false
}
if (enable_webview_bundles) {
standalone_system_webview_apk_tmpl("system_webview_32_base_bundle_module") {
target_type = "android_app_bundle_module"
include_64_bit_webview = false
is_base_module = true
}
system_webview_bundle("system_webview_32_bundle") {
base_module_target = ":system_webview_32_base_bundle_module"
bundle_name = "SystemWebView32"
include_64_bit_webview = false
min_sdk_version = 21
compress_shared_libraries = true
}
}
}
# Trichrome WebView APK.
template("trichrome_webview_tmpl") {
system_webview_apk_or_module_tmpl(target_name) {
forward_variables_from(invoker, "*")
android_manifest = trichrome_webview_android_manifest
android_manifest_dep =
"//android_webview/nonembedded:trichrome_webview_manifest"
min_sdk_version = 29
deps = upstream_only_webview_deps
use_trichrome_library = true
if (android_64bit_target_cpu) {
is_64_bit_browser = false
include_64_bit_webview = true
}
static_library_provider = "//chrome/android:trichrome_library_apk"
}
}
trichrome_webview_tmpl("trichrome_webview_apk") {
apk_name = "TrichromeWebView"
uncompress_dex = true
if (!is_java_debug) {
static_library_synchronized_proguard = trichrome_synchronized_proguard
}
}
if (enable_webview_bundles) {
trichrome_webview_tmpl("trichrome_webview_base_bundle_module") {
target_type = "android_app_bundle_module"
is_base_module = true
if (_verify_android_configuration) {
expected_android_manifest =
"expectations/trichrome_webview_bundle.AndroidManifest.expected"
}
}
system_webview_bundle("trichrome_webview_bundle") {
base_module_target = ":trichrome_webview_base_bundle_module"
bundle_name = "TrichromeWebView"
uncompress_dex = true
min_sdk_version = 29
static_library_provider = "//chrome/android:trichrome_library_apk"
}
if (is_official_build) {
# Used for binary size monitoring.
create_app_bundle_minimal_apks("trichrome_webview_minimal_apks") {
deps = [ ":trichrome_webview_bundle" ]
bundle_path = "$root_build_dir/apks/TrichromeWebView.aab"
}
android_resource_sizes_test("resource_sizes_trichrome_webview_bundle") {
file_path = "$root_build_dir/apks/TrichromeWebView.minimal.apks"
data_deps = [ ":trichrome_webview_minimal_apks" ]
}
}
}
# Trichrome WebView APK for a 64-bit Chrome.
if (android_64bit_target_cpu) {
template("trichrome_webview_64_32_tmpl") {
system_webview_apk_or_module_tmpl(target_name) {
forward_variables_from(invoker, "*")
android_manifest = trichrome_webview_64_32_android_manifest
android_manifest_dep =
"//android_webview/nonembedded:trichrome_webview_64_32_manifest"
use_trichrome_library = true
is_64_bit_browser = true
include_32_bit_webview = true
min_sdk_version = 29
deps = upstream_only_webview_deps
static_library_provider = "//chrome/android:trichrome_library_64_32_apk"
}
}
trichrome_webview_64_32_tmpl("trichrome_webview_64_32_apk") {
apk_name = "TrichromeWebView6432"
uncompress_dex = true
}
if (enable_webview_bundles) {
trichrome_webview_64_32_tmpl("trichrome_webview_64_32_base_bundle_module") {
target_type = "android_app_bundle_module"
is_base_module = true
}
system_webview_bundle("trichrome_webview_64_32_bundle") {
base_module_target = ":trichrome_webview_64_32_base_bundle_module"
bundle_name = "TrichromeWebView6432"
uncompress_dex = true
min_sdk_version = 29
static_library_provider = "//chrome/android:trichrome_library_64_32_apk"
}
}
template("trichrome_webview_32_tmpl") {
system_webview_apk_or_module_tmpl(target_name) {
forward_variables_from(invoker, "*")
android_manifest = trichrome_webview_32_android_manifest
android_manifest_dep =
"//android_webview/nonembedded:trichrome_webview_32_manifest"
use_trichrome_library = true
is_64_bit_browser = false
include_64_bit_webview = false
min_sdk_version = 29
deps = upstream_only_webview_deps
static_library_provider = "//chrome/android:trichrome_library_32_apk"
}
}
trichrome_webview_32_tmpl("trichrome_webview_32_apk") {
apk_name = "TrichromeWebView32"
uncompress_dex = true
}
if (enable_webview_bundles) {
trichrome_webview_32_tmpl("trichrome_webview_32_base_bundle_module") {
target_type = "android_app_bundle_module"
is_base_module = true
}
system_webview_bundle("trichrome_webview_32_bundle") {
base_module_target = ":trichrome_webview_32_base_bundle_module"
bundle_name = "TrichromeWebView32"
uncompress_dex = true
min_sdk_version = 29
static_library_provider = "//chrome/android:trichrome_library_32_apk"
}
}
}
# The shared library used by standalone WebView.
template("libwebviewchromium_tmpl") {
shared_library(target_name) {
forward_variables_from(invoker, "*")
deps = [
"//android_webview/lib",
"//android_webview/lib:webview_entry_point",
"//android_webview/nonembedded",
"//third_party/blink/public:blink",
]
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
configs += [ "//build/config/android:hide_all_but_jni" ]
}
}
libwebviewchromium_tmpl("libwebviewchromium") {
}
# This template is used to define WebView's alternate-ABI libraries, which are
# used by Monochrome and Trichrome on 64-bit devices which support both 32 and
# 64-bit ABIs. WebView's browser process must use the same ABI as the embedding
# app (renderer processes used the ABI defined in the WebView APK manifest),
# which requires us to have two copies of the library available, one for each
# ABI. The primary library is the one shared with Chrome, and the alternate is
# a WebView-specific library defined here for whichever ABI isn't used by
# Chrome.
#
# Note that this library only includes code needed for the embedded usecase,
# as all non-embedded code uses the primary library.
template("webview_alternate_library") {
chrome_common_shared_library(target_name) {
forward_variables_from(invoker, "*")
deps = [
"//android_webview/lib",
"//android_webview/lib:webview_entry_point",
]
is_webview = true
}
}
if (defined(android_secondary_abi_toolchain)) {
# Note here that on a given system, the webview-only library needs the same
# library name as the browser library, since the system webview factory will
# differentiate only by ABI.
if (current_toolchain == android_secondary_abi_toolchain) {
# This target is the 32-bit WebView library that pairs with a 64-bit
# browser. It is suffixed with _64 because its name must match the 64-bit
# browser library.
webview_alternate_library("monochrome_64") {
}
} else {
# Inverse of above, for the original 32-bit case.
webview_alternate_library("monochrome") {
}
}
} else {
# 32-bit WebView library used in 32-bit only builds of 64/32 targets.
webview_alternate_library("monochrome_64") {
}
}
java_group("android_webview_no_weblayer_java") {
deps = [
":browser_java",
# This includes AwResource, which may be called via JNI. We're including it
# here because there's currently no good way to enforce that it gets included
# when it's depended on via JNI.
":common_java",
"//android_webview/glue:glue_java",
"//android_webview/nonembedded:nonembedded_java",
"//android_webview/support_library:support_lib_glue_java",
]
}
# Contains all Java dependencies used by WebView.
java_group("android_webview_java") {
deps = [ ":android_webview_no_weblayer_java" ]
if (webview_includes_weblayer) {
deps += [ "//weblayer/browser/java" ]
}
}
# An empty group included in //BUILD.gn to make this and other WebView build
# files reachable by GN.
group("empty_group") {
}
generate_jni("common_jni_headers") {
sources = [
"java/src/org/chromium/android_webview/common/AwResource.java",
"java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java",
]
}
generate_jni("browser_jni_headers") {
sources = [
"java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
"java/src/org/chromium/android_webview/AwAutofillClient.java",
"java/src/org/chromium/android_webview/AwBrowserContext.java",
"java/src/org/chromium/android_webview/AwBrowserProcess.java",
"java/src/org/chromium/android_webview/AwContents.java",
"java/src/org/chromium/android_webview/AwContentsBackgroundThreadClient.java",
"java/src/org/chromium/android_webview/AwContentsClientBridge.java",
"java/src/org/chromium/android_webview/AwContentsIoThreadClient.java",
"java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
"java/src/org/chromium/android_webview/AwContentsStatics.java",
"java/src/org/chromium/android_webview/AwCookieManager.java",
"java/src/org/chromium/android_webview/AwDebug.java",
"java/src/org/chromium/android_webview/AwDevToolsServer.java",
"java/src/org/chromium/android_webview/AwFeatureList.java",
"java/src/org/chromium/android_webview/AwFormDatabase.java",
"java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
"java/src/org/chromium/android_webview/AwPacProcessor.java",
"java/src/org/chromium/android_webview/AwPdfExporter.java",
"java/src/org/chromium/android_webview/AwProxyController.java",
"java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
"java/src/org/chromium/android_webview/AwRenderProcess.java",
"java/src/org/chromium/android_webview/AwSettings.java",
"java/src/org/chromium/android_webview/AwTracingController.java",
"java/src/org/chromium/android_webview/AwWebContentsDelegate.java",
"java/src/org/chromium/android_webview/AwWebResourceInterceptResponse.java",
"java/src/org/chromium/android_webview/AwWebResourceResponse.java",
"java/src/org/chromium/android_webview/InputStreamUtil.java",
"java/src/org/chromium/android_webview/JsReplyProxy.java",
"java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java",
"java/src/org/chromium/android_webview/VariationsSeedLoader.java",
"java/src/org/chromium/android_webview/WebMessageListenerHolder.java",
"java/src/org/chromium/android_webview/WebMessageListenerInfo.java",
"java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java",
"java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
"java/src/org/chromium/android_webview/gfx/AwPicture.java",
"java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
"java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java",
"java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
"java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
"java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java",
]
deps = [ ":cancellation_signal_android_jar_jni_headers" ]
}
generate_jar_jni("cancellation_signal_android_jar_jni_headers") {
classes = [ "android/os/CancellationSignal.class" ]
}
android_library("browser_java") {
sources = [
"java/src/org/chromium/android_webview/AndroidProtocolHandler.java",
"java/src/org/chromium/android_webview/AwActionModeCallback.java",
"java/src/org/chromium/android_webview/AwAutofillClient.java",
"java/src/org/chromium/android_webview/AwBrowserContext.java",
"java/src/org/chromium/android_webview/AwBrowserProcess.java",
"java/src/org/chromium/android_webview/AwConsoleMessage.java",
"java/src/org/chromium/android_webview/AwContents.java",
"java/src/org/chromium/android_webview/AwContentsBackgroundThreadClient.java",
"java/src/org/chromium/android_webview/AwContentsClient.java",
"java/src/org/chromium/android_webview/AwContentsClientBridge.java",
"java/src/org/chromium/android_webview/AwContentsClientCallbackHelper.java",
"java/src/org/chromium/android_webview/AwContentsIoThreadClient.java",
"java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
"java/src/org/chromium/android_webview/AwContentsStatics.java",
"java/src/org/chromium/android_webview/AwCookieManager.java",
"java/src/org/chromium/android_webview/AwDataDirLock.java",
"java/src/org/chromium/android_webview/AwDebug.java",
"java/src/org/chromium/android_webview/AwDevToolsServer.java",
"java/src/org/chromium/android_webview/AwFeatureList.java",
"java/src/org/chromium/android_webview/AwFormDatabase.java",
"java/src/org/chromium/android_webview/AwGeolocationPermissions.java",
"java/src/org/chromium/android_webview/AwHistogramRecorder.java",
"java/src/org/chromium/android_webview/AwHttpAuthHandler.java",
"java/src/org/chromium/android_webview/AwLayoutSizer.java",
"java/src/org/chromium/android_webview/AwNetworkChangeNotifierRegistrationPolicy.java",
"java/src/org/chromium/android_webview/AwPacProcessor.java",
"java/src/org/chromium/android_webview/AwPdfExporter.java",
"java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java",
"java/src/org/chromium/android_webview/AwProxyController.java",
"java/src/org/chromium/android_webview/AwQuotaManagerBridge.java",
"java/src/org/chromium/android_webview/AwRenderProcess.java",
"java/src/org/chromium/android_webview/AwRenderProcessGoneDetail.java",
"java/src/org/chromium/android_webview/AwScrollOffsetManager.java",
"java/src/org/chromium/android_webview/AwServiceWorkerClient.java",
"java/src/org/chromium/android_webview/AwServiceWorkerController.java",
"java/src/org/chromium/android_webview/AwServiceWorkerSettings.java",
"java/src/org/chromium/android_webview/AwSettings.java",
"java/src/org/chromium/android_webview/AwSupportLibIsomorphic.java",
"java/src/org/chromium/android_webview/AwThreadUtils.java",
"java/src/org/chromium/android_webview/AwTracingController.java",
"java/src/org/chromium/android_webview/AwViewAndroidDelegate.java",
"java/src/org/chromium/android_webview/AwViewMethods.java",
"java/src/org/chromium/android_webview/AwWebContentsDelegate.java",
"java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java",
"java/src/org/chromium/android_webview/AwWebContentsObserver.java",
"java/src/org/chromium/android_webview/AwWebResourceInterceptResponse.java",
"java/src/org/chromium/android_webview/AwWebResourceResponse.java",
"java/src/org/chromium/android_webview/AwZoomControls.java",
"java/src/org/chromium/android_webview/CleanupReference.java",
"java/src/org/chromium/android_webview/ClientCertLookupTable.java",
"java/src/org/chromium/android_webview/DefaultVideoPosterRequestHandler.java",
"java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java",
"java/src/org/chromium/android_webview/FindAddress.java",
"java/src/org/chromium/android_webview/FullScreenView.java",
"java/src/org/chromium/android_webview/HttpAuthDatabase.java",
"java/src/org/chromium/android_webview/InputStreamUtil.java",
"java/src/org/chromium/android_webview/JsPromptResultReceiver.java",
"java/src/org/chromium/android_webview/JsReplyProxy.java",
"java/src/org/chromium/android_webview/JsResultHandler.java",
"java/src/org/chromium/android_webview/JsResultReceiver.java",
"java/src/org/chromium/android_webview/NullAwViewMethods.java",
"java/src/org/chromium/android_webview/OverScrollGlow.java",
"java/src/org/chromium/android_webview/PopupTouchHandleDrawable.java",
"java/src/org/chromium/android_webview/ScriptReference.java",
"java/src/org/chromium/android_webview/ScrollAccessibilityHelper.java",
"java/src/org/chromium/android_webview/SslUtil.java",
"java/src/org/chromium/android_webview/VariationsSeedLoader.java",
"java/src/org/chromium/android_webview/ViewPositionObserver.java",
"java/src/org/chromium/android_webview/WebMessageListener.java",
"java/src/org/chromium/android_webview/WebMessageListenerHolder.java",
"java/src/org/chromium/android_webview/WebMessageListenerInfo.java",
"java/src/org/chromium/android_webview/WebViewChromiumRunQueue.java",
"java/src/org/chromium/android_webview/gfx/AwDrawFnImpl.java",
"java/src/org/chromium/android_webview/gfx/AwFunctor.java",
"java/src/org/chromium/android_webview/gfx/AwGLFunctor.java",
"java/src/org/chromium/android_webview/gfx/AwPicture.java",
"java/src/org/chromium/android_webview/gfx/JavaBrowserViewRendererHelper.java",
"java/src/org/chromium/android_webview/gfx/RootBeginFrameSourceWebView.java",
"java/src/org/chromium/android_webview/metrics/AwMetricsServiceClient.java",
"java/src/org/chromium/android_webview/metrics/AwNonembeddedUmaReplayer.java",
"java/src/org/chromium/android_webview/permission/AwGeolocationCallback.java",
"java/src/org/chromium/android_webview/permission/AwPermissionRequest.java",
"java/src/org/chromium/android_webview/policy/AwPolicyProvider.java",
"java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConfigHelper.java",
"java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java",
"java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingResponse.java",
]
deps = [
":common_aidl_java",
":common_crash_java",
":common_java",
":common_platform_services_java",
":common_variations_java",
":resources",
"//android_webview/nonembedded:system_webview_manifest",
"//android_webview/proto:metrics_bridge_records_proto_java",
"//base:base_java",
"//base:jni_java",
"//components/autofill/android:autofill_java",
"//components/autofill/android/provider:java",
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
"//components/content_capture/android:java",
"//components/crash/android:handler_java",
"//components/crash/android:java",
"//components/embedder_support/android:util_java",
"//components/embedder_support/android:web_contents_delegate_java",
"//components/embedder_support/android/metrics:java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/navigation_interception/android:navigation_interception_java",
"//components/policy/android:policy_java",
"//components/safe_browsing/android:safe_browsing_java",
"//components/variations:load_seed_result_enum_java",
"//components/variations/android:variations_java",
"//components/version_info/android:version_constants_java",
"//components/viz/common:common_java",
"//components/viz/service:service_java",
"//content/public/android:content_java",
"//device/gamepad:java",
"//mojo/public/java:system_java",
"//mojo/public/java/system:system_impl_java",
"//net/android:net_java",
"//services/network/public/mojom:mojom_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
"//third_party/blink/public:blink_headers_java",
"//ui/android:ui_java",
"//url:gurl_java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
if (enable_spellcheck) {
deps += [ "//components/spellcheck/browser/android:java" ]
}
srcjar_deps = [
"//android_webview/browser:browser_enums",
"//components/safe_browsing/core/db:sb_threat_values",
]
}
android_library("common_variations_java") {
sources = [
"java/src/org/chromium/android_webview/common/variations/VariationsServiceMetricsHelper.java",
"java/src/org/chromium/android_webview/common/variations/VariationsUtils.java",
]
deps = [
"//android_webview/proto:aw_variations_seed_proto_java",
"//base:base_java",
"//components/variations/android:variations_java",
"//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
]
}
# Separate target to allow for a dependency on GmsCore without pulling in all of
# android_webview_java. It compiles the abstract class; implementations are
# compiled separately.
android_library("common_platform_services_java") {
sources = [
"java/src/org/chromium/android_webview/common/PlatformServiceBridge.java",
"java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java",
]
deps = [
"//base:base_java",
"//components/embedder_support/android/metrics:java",
"//third_party/android_deps:androidx_annotation_annotation_java",
]
# The appropriate .class file will be loaded via a dependency to a library
# like :platform_service_bridge_upstream_implementation_java below. We only include the
# .java file because other files in the target depend on it.
jar_excluded_patterns = [ "*/PlatformServiceBridgeImpl.class" ]
}
# This target compiles the implementation of PlatformServiceBridge for AOSP targets.
android_library("platform_service_bridge_upstream_implementation_java") {
sources = [ "java/src/org/chromium/android_webview/common/PlatformServiceBridgeImpl.java" ]
deps = [ ":common_platform_services_java" ]
}
android_library("common_crash_java") {
sources = [
"java/src/org/chromium/android_webview/common/crash/AwCrashReporterClient.java",
"java/src/org/chromium/android_webview/common/crash/CrashInfo.java",
"java/src/org/chromium/android_webview/common/crash/CrashUploadUtil.java",
"java/src/org/chromium/android_webview/common/crash/SystemWideCrashDirectories.java",
]
deps = [
":common_java",
"//base:base_java",
"//base:jni_java",
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
"//components/minidump_uploader:minidump_uploader_java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
}
android_library("common_java") {
sources = [
"java/src/org/chromium/android_webview/common/AwFeatures.java",
"java/src/org/chromium/android_webview/common/AwResource.java",
"java/src/org/chromium/android_webview/common/AwSwitches.java",
"java/src/org/chromium/android_webview/common/CommandLineUtil.java",
"java/src/org/chromium/android_webview/common/DeveloperModeUtils.java",
"java/src/org/chromium/android_webview/common/Flag.java",
"java/src/org/chromium/android_webview/common/FlagOverrideHelper.java",
"java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java",
"java/src/org/chromium/android_webview/common/services/ServiceNames.java",
]
deps = [
"//base:base_java",
"//components/metrics:metrics_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
]
}
android_aidl("common_aidl") {
import_include = [ "java/src" ]
sources = [
"java/src/org/chromium/android_webview/common/services/ICrashReceiverService.aidl",
"java/src/org/chromium/android_webview/common/services/IDeveloperUiService.aidl",
"java/src/org/chromium/android_webview/common/services/IMetricsBridgeService.aidl",
"java/src/org/chromium/android_webview/common/services/IVariationsSeedServer.aidl",
"java/src/org/chromium/android_webview/common/services/IVariationsSeedServerCallback.aidl",
]
}
android_library("common_aidl_java") {
srcjar_deps = [ ":common_aidl" ]
}
# Generate ProductConfig.java so that android_webview_product_config_java's
# compile step works.
generate_product_config_srcjar("webview_product_config") {
java_package = webview_product_config_java_package
}
# ProductConfig.java is excluded from the generated .jar
# (via. jar_excluded_patterns) and the final version is inserted at the APK
# level - with the list of pak locales populated by looking at the assets that
# are listed in the final APK's .build_config.
android_library("android_webview_product_config_java") {
sources = [ "java/src/org/chromium/android_webview/AwLocaleConfig.java" ]
srcjar_deps = [ ":webview_product_config" ]
jar_excluded_patterns = [ "*/ProductConfig.class" ]
}
if (enable_resource_whitelist_generation) {
libwebviewchromium_tmpl("system_webview_pak_whitelist_inputs") {
ldflags = [ "--collect-inputs-only" ]
}
generate_resource_whitelist("system_webview_pak_whitelist") {
deps = [ ":system_webview_pak_whitelist_inputs" ]
inputs = [ "$root_out_dir/lib.unstripped/libsystem_webview_pak_whitelist_inputs$shlib_extension" ]
output = system_webview_pak_whitelist
}
}
webview_repack_locales("repack_locales") {
input_locales = locales
output_locales = locales
if (enable_resource_whitelist_generation) {
repack_whitelist = system_webview_pak_whitelist
deps = [ ":system_webview_pak_whitelist" ]
}
}
android_assets("locale_pak_assets") {
disable_compression = true
renaming_sources = []
renaming_destinations = []
foreach(_locale, locales) {
renaming_sources += [ "$root_out_dir/android_webview/locales/$_locale.pak" ]
renaming_destinations += [ "stored-locales/$_locale.pak" ]
}
treat_as_locale_paks = true
deps = [ ":repack_locales" ]
}
repack("repack_pack") {
sources = [
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/net/net_resources.pak",
"$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
"$target_gen_dir/aw_resources.pak",
"$target_gen_dir/components_resources.pak",
"$target_gen_dir/mojo_bindings_resources.pak",
"$target_gen_dir/webui_resources.pak",
]
deps = [
":generate_aw_resources",
":generate_components_resources",
":generate_mojo_resources",
":generate_webui_resources",
"//content:content_resources",
"//net:net_resources",
"//third_party/blink/public:resources",
]
output = "$target_gen_dir/resources.pak"
if (enable_resource_whitelist_generation) {
repack_whitelist = system_webview_pak_whitelist
deps += [ ":system_webview_pak_whitelist" ]
}
if (webview_includes_weblayer) {
sources += [ "$root_gen_dir/weblayer/weblayer_resources.pak" ]
deps += [ "//weblayer:resources" ]
}
}
repack("repack_100_percent") {
sources = [
"$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
"$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
"$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
]
deps = [
"//content/app/resources",
"//third_party/blink/public:scaled_resources_100_percent",
"//ui/resources",
]
output = "$target_gen_dir/chrome_100_percent.pak"
if (enable_resource_whitelist_generation) {
repack_whitelist = system_webview_pak_whitelist
deps += [ ":system_webview_pak_whitelist" ]
}
if (webview_includes_weblayer) {
sources += [ "$target_gen_dir/components_resources_100_percent.pak" ]
deps += [ ":generate_components_scaled_resources" ]
}
}
android_assets("pak_file_assets") {
sources = [
"$target_gen_dir/chrome_100_percent.pak",
"$target_gen_dir/resources.pak",
]
deps = [
":repack_100_percent",
":repack_pack",
]
disable_compression = true
}
if (android_64bit_target_cpu) {
android_assets("v8_snapshot_secondary_abi_assets") {
_secondary_abi_out_dir =
get_label_info("//v8($android_secondary_abi_toolchain)", "root_out_dir")
assert(android_64bit_target_cpu,
"32-bit targets shouldn't have secondary abi")
arch_suffix = "32"
if (use_v8_context_snapshot) {
renaming_sources = [ "$_secondary_abi_out_dir/v8_context_snapshot.bin" ]
renaming_destinations = [ "v8_context_snapshot_$arch_suffix.bin" ]
} else {
renaming_sources = [ "$_secondary_abi_out_dir/snapshot_blob.bin" ]
renaming_destinations = [ "snapshot_blob_$arch_suffix.bin" ]
}
disable_compression = true
deps = [
"//tools/v8_context_snapshot($android_secondary_abi_toolchain)",
"//v8($android_secondary_abi_toolchain)",
]
}
}
android_assets("webview_primary_abi_assets") {
if (use_v8_context_snapshot) {
deps = [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
} else {
deps = [ "//v8:v8_external_startup_data_assets" ]
}
}
android_assets("monochrome_webview_primary_abi_assets") {
deps = [ "//third_party/icu:icu_assets" ]
if (use_v8_context_snapshot) {
deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
} else {
deps += [ "//v8:v8_external_startup_data_assets" ]
}
}
if (android_64bit_target_cpu) {
android_assets("webview_secondary_abi_assets") {
deps = [ ":v8_snapshot_secondary_abi_assets" ]
}
android_assets("monochrome_webview_secondary_abi_assets") {
deps = [ "//third_party/icu:icu_assets" ]
deps += [ ":v8_snapshot_secondary_abi_assets" ]
}
}
android_assets("weblayer_webview_assets") {
deps = [
":webview_primary_abi_assets",
"//third_party/icu:icu_assets",
]
if (android_64bit_target_cpu) {
deps += [ ":webview_secondary_abi_assets" ]
}
}
android_assets("stub_assets") {
renaming_sources = [ "$root_gen_dir/components/resources/about_credits.html" ]
renaming_destinations = [ "webview_licenses.notice" ]
deps = [ "//components/resources:about_credits" ]
}
android_resources("resources") {
sources = [
"java/res/drawable-hdpi/ic_play_circle_outline_black_48dp.png",
"java/res/drawable-mdpi/ic_play_circle_outline_black_48dp.png",
"java/res/drawable-xhdpi/ic_play_circle_outline_black_48dp.png",
"java/res/drawable-xxhdpi/ic_play_circle_outline_black_48dp.png",
"java/res/drawable-xxxhdpi/ic_play_circle_outline_black_48dp.png",
]
custom_package = "org.chromium.android_webview"
deps = [ ":strings_grd" ]
}
grit("generate_aw_resources") {
source = "ui/aw_resources.grd"
outputs = [
"grit/aw_resources.h",
"aw_resources.pak",
]
}
grit("generate_aw_strings") {
source = "ui/aw_strings.grd"
outputs = [ "grit/aw_strings.h" ]
foreach(_locale, locales) {
outputs += [ "aw_strings_${_locale}.pak" ]
}
}
grit("generate_webui_resources") {
source = "../ui/webui/resources/webui_resources.grd"
# webui/resources has way too many resources. The allowlist is trim this down
# to a reasonable size
_allowlist = "ui/grit_resources_allowlist.txt"
inputs = [ _allowlist ]
grit_flags = [
"-w",
rebase_path(_allowlist, root_build_dir),
"-E",
"root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
]
outputs = [
"grit/webui_resources.h",
"grit/webui_resources_map.cc",
"grit/webui_resources_map.h",
"webui_resources.pak",
]
deps = [
"//ui/webui/resources/js:modulize",
"//ui/webui/resources/js/cr:modulize",
"//ui/webui/resources/js/cr/ui:modulize",
]
}
grit("generate_mojo_resources") {
source = "../mojo/public/js/mojo_bindings_resources.grd"
# See :generate_webui_resources for an explanation of the allowlist
_allowlist = "ui/grit_resources_allowlist.txt"
inputs = [ _allowlist ]
grit_flags = [
"-w",
rebase_path(_allowlist, root_build_dir),
"-E",
"root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
]
outputs = [
"grit/mojo_bindings_resources.h",
"grit/mojo_bindings_resources_map.cc",
"grit/mojo_bindings_resources_map.h",
"mojo_bindings_resources.pak",
]
deps = [
"//mojo/public/js:bindings_lite",
"//mojo/public/mojom/base:base_js",
]
}
action("concatenate_resources_allowlists") {
script = "//mojo/public/tools/bindings/concatenate-files.py"
inputs = [ "//android_webview/ui/grit_resources_allowlist.txt" ]
if (webview_includes_weblayer) {
inputs += [ "//weblayer/grit_resources_allowlist.txt" ]
}
outputs = [ "$target_gen_dir/grit_resources_allowlist.txt" ]
args =
rebase_path(inputs, root_build_dir) + rebase_path(outputs, root_build_dir)
}
grit("generate_components_resources") {
# Note that dev_ui_components_resources.grd is Chrome-only, so excluded.
source = "../components/resources/components_resources.grd"
use_brotli = true
# See :generate_webui_resources for an explanation of the allowlist
_allowlist = rebase_path("$target_gen_dir/grit_resources_allowlist.txt",
root_build_dir)
_about_credits_file = get_label_info("//components/resources",
"target_gen_dir") + "/about_credits.html"
grit_flags = [
"-w",
_allowlist,
"-E",
"about_credits_file=" + rebase_path(_about_credits_file, root_build_dir),
"-E",
"root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir),
]
outputs = [
"grit/components_resources.h",
"components_resources.pak",
]
deps = [
":concatenate_resources_allowlists",
"//components/resources:about_credits",
"//components/resources/ssl/ssl_error_assistant:make_ssl_error_assistant_protobuf",
]
}
grit("generate_components_scaled_resources") {
source = "../components/resources/components_scaled_resources.grd"
# See :generate_webui_resources for an explanation of the allowlist
_allowlist = rebase_path("$target_gen_dir/grit_resources_allowlist.txt",
root_build_dir)
grit_flags = [
"-w",
_allowlist,
]
outputs = [
"grit/components_scaled_resources.h",
"grit/components_scaled_resources_map.cc",
"grit/components_scaled_resources_map.h",
"components_resources_100_percent.pak",
"components_resources_200_percent.pak",
"components_resources_300_percent.pak",
]
deps = [ ":concatenate_resources_allowlists" ]
}
grit("generate_components_strings") {
source = "../components/components_strings.grd"
# components_strings contains strings from all components. WebView
# will never display most of them, so we try to limit the included
# strings. This allowlist trims about 50% more than the compile-based
# allowlist generated by :system_webview_pak_whitelist.
_allowlist = rebase_path("ui/grit_strings_allowlist.txt", root_build_dir)
inputs = [ "//android_webview/ui/grit_strings_allowlist.txt" ]
grit_flags = [
"-w",
_allowlist,
]
outputs =
[
"grit/components_strings.h",
"java/res/values/components_strings.xml",
] +
process_file_template(
android_bundle_locales_as_resources,
[ "java/res/values-{{source_name_part}}/components_strings.xml" ]) +
process_file_template(locales_with_fake_bidi,
[ "components_strings_{{source_name_part}}.pak" ])
}
java_strings_grd("strings_grd") {
grd_file = "java/strings/android_webview_strings.grd"
outputs = [ "values/android_webview_strings.xml" ] +
process_file_template(
android_bundle_locales_as_resources,
[ "values-{{source_name_part}}/android_webview_strings.xml" ])
}

View file

@ -1,276 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
import("//components/spellcheck/spellcheck_build_features.gni")
java_cpp_enum("browser_enums") {
sources = [
"aw_renderer_priority.h",
"aw_settings.h",
"permission/aw_permission_request.h",
"safe_browsing/aw_safe_browsing_blocking_page.h",
"safe_browsing/aw_url_checker_delegate_impl.h",
]
}
source_set("browser") {
sources = [
"android_protocol_handler.cc",
"android_protocol_handler.h",
"aw_autofill_client.cc",
"aw_autofill_client.h",
"aw_browser_context.cc",
"aw_browser_context.h",
"aw_browser_main_parts.cc",
"aw_browser_main_parts.h",
"aw_browser_permission_request_delegate.h",
"aw_browser_policy_connector.cc",
"aw_browser_policy_connector.h",
"aw_browser_process.cc",
"aw_browser_process.h",
"aw_browser_terminator.cc",
"aw_browser_terminator.h",
"aw_content_browser_client.cc",
"aw_content_browser_client.h",
"aw_content_browser_client_receiver_bindings.cc",
"aw_content_browser_overlay_manifest.cc",
"aw_content_browser_overlay_manifest.h",
"aw_contents.cc",
"aw_contents.h",
"aw_contents_client_bridge.cc",
"aw_contents_client_bridge.h",
"aw_contents_io_thread_client.cc",
"aw_contents_io_thread_client.h",
"aw_contents_statics.cc",
"aw_cookie_access_policy.cc",
"aw_cookie_access_policy.h",
"aw_debug.cc",
"aw_devtools_manager_delegate.cc",
"aw_devtools_manager_delegate.h",
"aw_devtools_server.cc",
"aw_devtools_server.h",
"aw_download_manager_delegate.cc",
"aw_download_manager_delegate.h",
"aw_feature_list.cc",
"aw_feature_list_creator.cc",
"aw_feature_list_creator.h",
"aw_field_trials.cc",
"aw_field_trials.h",
"aw_form_database.cc",
"aw_form_database_service.cc",
"aw_form_database_service.h",
"aw_http_auth_handler.cc",
"aw_http_auth_handler.h",
"aw_javascript_dialog_manager.cc",
"aw_javascript_dialog_manager.h",
"aw_media_url_interceptor.cc",
"aw_media_url_interceptor.h",
"aw_metrics_service_client_delegate.cc",
"aw_metrics_service_client_delegate.h",
"aw_pac_processor.cc",
"aw_pac_processor.h",
"aw_pdf_exporter.cc",
"aw_pdf_exporter.h",
"aw_permission_manager.cc",
"aw_permission_manager.h",
"aw_print_manager.cc",
"aw_print_manager.h",
"aw_proxy_controller.cc",
"aw_quota_manager_bridge.cc",
"aw_quota_manager_bridge.h",
"aw_quota_permission_context.cc",
"aw_quota_permission_context.h",
"aw_render_process.cc",
"aw_render_process.h",
"aw_render_process_gone_delegate.h",
"aw_renderer_priority.h",
"aw_resource_context.cc",
"aw_resource_context.h",
"aw_settings.cc",
"aw_settings.h",
"aw_speech_recognition_manager_delegate.cc",
"aw_speech_recognition_manager_delegate.h",
"aw_ssl_host_state_delegate.cc",
"aw_ssl_host_state_delegate.h",
"aw_variations_service_client.cc",
"aw_variations_service_client.h",
"aw_web_contents_delegate.cc",
"aw_web_contents_delegate.h",
"aw_web_contents_view_delegate.cc",
"aw_web_contents_view_delegate.h",
"aw_web_ui_controller_factory.cc",
"aw_web_ui_controller_factory.h",
"cookie_manager.cc",
"cookie_manager.h",
"find_helper.cc",
"find_helper.h",
"icon_helper.cc",
"icon_helper.h",
"input_stream.cc",
"input_stream.h",
"js_java_interaction/aw_web_message_host_factory.cc",
"js_java_interaction/aw_web_message_host_factory.h",
"js_java_interaction/js_reply_proxy.cc",
"js_java_interaction/js_reply_proxy.h",
"network_service/android_stream_reader_url_loader.cc",
"network_service/android_stream_reader_url_loader.h",
"network_service/aw_network_change_notifier.cc",
"network_service/aw_network_change_notifier.h",
"network_service/aw_network_change_notifier_factory.cc",
"network_service/aw_network_change_notifier_factory.h",
"network_service/aw_proxy_config_monitor.cc",
"network_service/aw_proxy_config_monitor.h",
"network_service/aw_proxying_restricted_cookie_manager.cc",
"network_service/aw_proxying_restricted_cookie_manager.h",
"network_service/aw_proxying_url_loader_factory.cc",
"network_service/aw_proxying_url_loader_factory.h",
"network_service/aw_url_loader_throttle.cc",
"network_service/aw_url_loader_throttle.h",
"network_service/aw_web_resource_intercept_response.cc",
"network_service/aw_web_resource_intercept_response.h",
"network_service/aw_web_resource_request.cc",
"network_service/aw_web_resource_request.h",
"network_service/aw_web_resource_response.cc",
"network_service/aw_web_resource_response.h",
"network_service/input_stream_reader.cc",
"network_service/input_stream_reader.h",
"network_service/net_helpers.cc",
"network_service/net_helpers.h",
"page_load_metrics/aw_page_load_metrics_provider.cc",
"page_load_metrics/aw_page_load_metrics_provider.h",
"page_load_metrics/page_load_metrics_initialize.cc",
"page_load_metrics/page_load_metrics_initialize.h",
"permission/aw_permission_request.cc",
"permission/aw_permission_request.h",
"permission/aw_permission_request_delegate.cc",
"permission/aw_permission_request_delegate.h",
"permission/media_access_permission_request.cc",
"permission/media_access_permission_request.h",
"permission/permission_request_handler.cc",
"permission/permission_request_handler.h",
"permission/permission_request_handler_client.cc",
"permission/permission_request_handler_client.h",
"permission/simple_permission_request.cc",
"permission/simple_permission_request.h",
"popup_touch_handle_drawable.cc",
"popup_touch_handle_drawable.h",
"renderer_host/auto_login_parser.cc",
"renderer_host/auto_login_parser.h",
"renderer_host/aw_render_view_host_ext.cc",
"renderer_host/aw_render_view_host_ext.h",
"safe_browsing/aw_safe_browsing_blocking_page.cc",
"safe_browsing/aw_safe_browsing_blocking_page.h",
"safe_browsing/aw_safe_browsing_navigation_throttle.cc",
"safe_browsing/aw_safe_browsing_navigation_throttle.h",
"safe_browsing/aw_safe_browsing_subresource_helper.cc",
"safe_browsing/aw_safe_browsing_subresource_helper.h",
"safe_browsing/aw_safe_browsing_ui_manager.cc",
"safe_browsing/aw_safe_browsing_ui_manager.h",
"safe_browsing/aw_safe_browsing_whitelist_manager.cc",
"safe_browsing/aw_safe_browsing_whitelist_manager.h",
"safe_browsing/aw_url_checker_delegate_impl.cc",
"safe_browsing/aw_url_checker_delegate_impl.h",
"scoped_add_feature_flags.cc",
"scoped_add_feature_flags.h",
"state_serializer.cc",
"state_serializer.h",
"tracing/aw_trace_event_args_allowlist.cc",
"tracing/aw_trace_event_args_allowlist.h",
"tracing/aw_tracing_controller.cc",
"tracing/aw_tracing_controller.h",
"tracing/aw_tracing_delegate.cc",
"tracing/aw_tracing_delegate.h",
"variations_seed_loader.cc",
"variations_seed_loader.h",
]
deps = [
"//android_webview:browser_jni_headers",
"//android_webview:generate_components_strings",
"//android_webview/browser/gfx",
"//android_webview/browser/lifecycle",
"//android_webview/browser/metrics",
"//android_webview/common",
"//android_webview/proto:aw_variations_seed_proto",
"//base",
"//components/autofill/android/provider",
"//components/autofill/content/browser",
"//components/cdm/browser",
"//components/content_capture/android",
"//components/content_capture/browser",
"//components/flags_ui",
# Called via JNI in CrashpadMain
"//components/crash/android:crashpad_main",
"//components/crash/content/browser",
"//components/crash/core/app",
"//components/embedder_support/android:web_contents_delegate",
"//components/embedder_support/android/metrics",
"//components/google/core/common",
"//components/heap_profiling/multi_process",
"//components/js_injection/browser",
"//components/js_injection/common",
"//components/js_injection/common:common_mojom",
"//components/metrics",
"//components/minidump_uploader",
"//components/navigation_interception",
"//components/page_load_metrics/browser",
"//components/policy/content/",
"//components/policy/core/browser",
"//components/pref_registry",
"//components/prefs",
"//components/printing/browser",
"//components/printing/common",
"//components/printing/common:mojo_interfaces",
"//components/safe_browsing/android:remote_database_manager",
"//components/safe_browsing/content",
"//components/safe_browsing/content/browser",
"//components/safe_browsing/content/common:interfaces",
"//components/safe_browsing/content/web_ui",
"//components/safe_browsing/core:features",
"//components/safe_browsing/core:ping_manager",
"//components/safe_browsing/core/browser",
"//components/safe_browsing/core/browser:network_context",
"//components/safe_browsing/core/common",
"//components/safe_browsing/core/db:database_manager",
"//components/safe_browsing/core/db:safebrowsing_proto",
"//components/safe_browsing/core/triggers",
"//components/safe_browsing/core/web_ui:constants",
"//components/security_interstitials/content:security_interstitial_page",
"//components/security_interstitials/core",
"//components/services/heap_profiling/public/cpp",
"//components/spellcheck:buildflags",
"//components/url_formatter",
"//components/user_prefs",
"//components/variations",
"//components/variations/net",
"//components/variations/service",
"//components/version_info",
"//components/version_info/android:channel_getter",
"//components/visitedlink/browser",
"//components/webdata/common",
"//content/public/browser",
"//media/mojo:buildflags",
"//printing",
"//services/preferences/tracked",
"//services/proxy_resolver:lib",
"//third_party/blink/public/common",
"//third_party/blink/public/mojom/frame",
"//third_party/crashpad/crashpad/client",
"//ui/android",
"//ui/gl",
"//ui/resources",
"//ui/touch_selection",
]
if (enable_spellcheck) {
deps += [ "//components/spellcheck/browser" ]
}
configs += [
"//tools/v8_context_snapshot:use_v8_context_snapshot",
"//v8:external_startup_data",
]
}

View file

@ -1,101 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
source_set("gfx") {
sources = [
"aw_attaching_to_window_recorder.cc",
"aw_attaching_to_window_recorder.h",
"aw_draw_fn_impl.cc",
"aw_draw_fn_impl.h",
"aw_gl_functor.cc",
"aw_gl_functor.h",
"aw_gl_surface.cc",
"aw_gl_surface.h",
"aw_gl_surface_external_stencil.cc",
"aw_gl_surface_external_stencil.h",
"aw_picture.cc",
"aw_picture.h",
"aw_render_thread_context_provider.cc",
"aw_render_thread_context_provider.h",
"aw_vulkan_context_provider.cc",
"aw_vulkan_context_provider.h",
"begin_frame_source_webview.cc",
"begin_frame_source_webview.h",
"browser_view_renderer.cc",
"browser_view_renderer.h",
"browser_view_renderer_client.h",
"child_frame.cc",
"child_frame.h",
"compositor_frame_consumer.h",
"compositor_frame_producer.h",
"deferred_gpu_command_service.cc",
"deferred_gpu_command_service.h",
"display_scheduler_webview.cc",
"display_scheduler_webview.h",
"gpu_service_web_view.cc",
"gpu_service_web_view.h",
"hardware_renderer.cc",
"hardware_renderer.h",
"hardware_renderer_single_thread.cc",
"hardware_renderer_single_thread.h",
"hardware_renderer_viz.cc",
"hardware_renderer_viz.h",
"java_browser_view_renderer_helper.cc",
"java_browser_view_renderer_helper.h",
"output_surface_provider_webview.cc",
"output_surface_provider_webview.h",
"parent_compositor_draw_constraints.cc",
"parent_compositor_draw_constraints.h",
"parent_output_surface.cc",
"parent_output_surface.h",
"render_thread_manager.cc",
"render_thread_manager.h",
"root_frame_sink.cc",
"root_frame_sink.h",
"root_frame_sink_proxy.cc",
"root_frame_sink_proxy.h",
"scoped_app_gl_state_restore.cc",
"scoped_app_gl_state_restore.h",
"skia_output_surface_dependency_webview.cc",
"skia_output_surface_dependency_webview.h",
"surfaces_instance.cc",
"surfaces_instance.h",
"task_forwarding_sequence.cc",
"task_forwarding_sequence.h",
"task_queue_web_view.cc",
"task_queue_web_view.h",
"viz_compositor_thread_runner_webview.cc",
"viz_compositor_thread_runner_webview.h",
]
deps = [
"//android_webview:browser_jni_headers",
"//android_webview/common",
"//android_webview/public",
"//base",
"//components/ui_devtools:buildflags",
"//components/viz/service",
"//components/viz/service/main",
"//content/public/browser",
"//gpu/command_buffer/client:gles2_implementation",
"//gpu/command_buffer/service",
"//gpu/ipc:gl_in_process_context",
"//gpu/ipc/common:android_image_reader_utils",
"//gpu/ipc/common:common",
"//gpu/skia_bindings",
"//gpu/vulkan:vulkan",
"//gpu/vulkan/init",
"//services/viz/privileged/mojom",
"//services/viz/public/mojom",
"//skia",
"//ui/gfx",
"//ui/gl",
"//ui/gl/init",
]
libs = [ "jnigraphics" ]
}

View file

@ -1,17 +0,0 @@
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
source_set("lifecycle") {
sources = [
"aw_contents_lifecycle_notifier.cc",
"aw_contents_lifecycle_notifier.h",
"webview_app_state_observer.cc",
"webview_app_state_observer.h",
]
deps = [
"//android_webview:browser_jni_headers",
"//base",
"//content/public/browser",
]
}

View file

@ -1,27 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
source_set("metrics") {
sources = [
"aw_metrics_service_client.cc",
"aw_metrics_service_client.h",
"aw_stability_metrics_provider.cc",
"aw_stability_metrics_provider.h",
"visibility_metrics_logger.cc",
"visibility_metrics_logger.h",
"visibility_metrics_provider.cc",
"visibility_metrics_provider.h",
]
deps = [
"//android_webview:browser_jni_headers",
"//android_webview/browser/lifecycle",
"//android_webview/common",
"//base",
"//components/embedder_support/android/metrics",
"//components/metrics",
"//components/prefs",
"//components/version_info/android:channel_getter",
"//content/public/browser",
]
}

View file

@ -1,61 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
import("//mojo/public/tools/bindings/mojom.gni")
source_set("common") {
sources = [
"android_webview_message_generator.cc",
"android_webview_message_generator.h",
"aw_content_client.cc",
"aw_content_client.h",
"aw_descriptors.h",
"aw_features.cc",
"aw_features.h",
"aw_hit_test_data.cc",
"aw_hit_test_data.h",
"aw_media_drm_bridge_client.cc",
"aw_media_drm_bridge_client.h",
"aw_paths.cc",
"aw_paths.h",
"aw_resource.cc",
"aw_resource.h",
"aw_resource_bundle.cc",
"aw_resource_bundle.h",
"aw_switches.cc",
"aw_switches.h",
"crash_reporter/aw_crash_reporter_client.cc",
"crash_reporter/aw_crash_reporter_client.h",
"crash_reporter/crash_keys.cc",
"crash_reporter/crash_keys.h",
"devtools_instrumentation.h",
"render_view_messages.cc",
"render_view_messages.h",
"url_constants.cc",
"url_constants.h",
]
deps = [
"//android_webview:common_jni_headers",
"//base",
"//components/cdm/common",
"//components/crash/core/app",
"//components/crash/core/common:crash_key",
"//components/gwp_asan/common",
"//components/services/heap_profiling/public/cpp",
"//components/version_info",
"//components/version_info:generate_version_info",
"//components/version_info/android:channel_getter",
"//content/public/common",
"//gpu/config",
"//ipc",
"//mojo/public/cpp/bindings",
"//skia",
"//ui/base",
"//ui/gfx/geometry",
"//ui/gfx/ipc/geometry",
"//ui/gfx/ipc/skia",
"//url",
]
}

View file

@ -1,81 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//android_webview/system_webview_apk_tmpl.gni")
import("//android_webview/variables.gni")
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("glue_java") {
deps = [
"//android_webview:android_webview_product_config_java",
"//android_webview:browser_java",
"//android_webview:common_java",
"//android_webview/nonembedded:system_webview_manifest",
"//android_webview/support_library/boundary_interfaces:boundary_interface_java",
"//android_webview/support_library/callback:callback_java",
"//base:base_java",
"//base:jni_java",
"//components/autofill/android:autofill_java",
"//components/autofill/android/provider:java",
"//components/content_capture/android:java",
"//components/embedder_support/android:application_java",
"//content/public/android:content_java",
"//net/android:net_java",
"//ui/android:ui_java",
"//url:gurl_java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
alternative_android_sdk_dep =
"//third_party/android_sdk:public_framework_system_java"
sources = [
"java/src/com/android/webview/chromium/CallbackConverter.java",
"java/src/com/android/webview/chromium/ContentSettingsAdapter.java",
"java/src/com/android/webview/chromium/CookieManagerAdapter.java",
"java/src/com/android/webview/chromium/DrawFunctor.java",
"java/src/com/android/webview/chromium/DrawGLFunctor.java",
"java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java",
"java/src/com/android/webview/chromium/GlueApiHelperForM.java",
"java/src/com/android/webview/chromium/GlueApiHelperForN.java",
"java/src/com/android/webview/chromium/GlueApiHelperForO.java",
"java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java",
"java/src/com/android/webview/chromium/GlueApiHelperForP.java",
"java/src/com/android/webview/chromium/GlueApiHelperForQ.java",
"java/src/com/android/webview/chromium/GraphicsUtils.java",
"java/src/com/android/webview/chromium/MonochromeLibraryPreloader.java",
"java/src/com/android/webview/chromium/SafeBrowsingResponseAdapter.java",
"java/src/com/android/webview/chromium/ServiceWorkerClientAdapter.java",
"java/src/com/android/webview/chromium/ServiceWorkerControllerAdapter.java",
"java/src/com/android/webview/chromium/ServiceWorkerSettingsAdapter.java",
"java/src/com/android/webview/chromium/SharedStatics.java",
"java/src/com/android/webview/chromium/SharedTracingControllerAdapter.java",
"java/src/com/android/webview/chromium/SharedWebViewChromium.java",
"java/src/com/android/webview/chromium/SharedWebViewContentsClientAdapter.java",
"java/src/com/android/webview/chromium/SharedWebViewRendererClientAdapter.java",
"java/src/com/android/webview/chromium/SplitApkWorkaround.java",
"java/src/com/android/webview/chromium/TracingControllerAdapter.java",
"java/src/com/android/webview/chromium/WebBackForwardListChromium.java",
"java/src/com/android/webview/chromium/WebHistoryItemChromium.java",
"java/src/com/android/webview/chromium/WebIconDatabaseAdapter.java",
"java/src/com/android/webview/chromium/WebMessagePortAdapter.java",
"java/src/com/android/webview/chromium/WebResourceErrorAdapter.java",
"java/src/com/android/webview/chromium/WebResourceRequestAdapter.java",
"java/src/com/android/webview/chromium/WebStorageAdapter.java",
"java/src/com/android/webview/chromium/WebViewChromium.java",
"java/src/com/android/webview/chromium/WebViewChromiumAwInit.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProviderForO.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProviderForOMR1.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProviderForP.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProviderForQ.java",
"java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java",
"java/src/com/android/webview/chromium/WebViewDatabaseAdapter.java",
"java/src/com/android/webview/chromium/WebViewDelegateFactory.java",
"java/src/com/android/webview/chromium/WebViewRenderProcessAdapter.java",
"java/src/com/android/webview/chromium/WebViewRenderProcessClientAdapter.java",
"java/src/com/android/webview/chromium/WebkitToSharedGlueConverter.java",
]
}

View file

@ -1,15 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
source_set("gpu") {
sources = [
"aw_content_gpu_client.cc",
"aw_content_gpu_client.h",
]
deps = [
"//base",
"//content/public/gpu",
]
}

View file

@ -1,70 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//components/gwp_asan/buildflags/buildflags.gni")
import("//components/spellcheck/spellcheck_build_features.gni")
import("//weblayer/variables.gni")
source_set("lib") {
sources = [
"aw_main_delegate.cc",
"aw_main_delegate.h",
"webview_jni_onload.cc",
"webview_jni_onload.h",
]
deps = [
"//android_webview/browser",
"//android_webview/browser/gfx",
"//android_webview/common",
"//android_webview/gpu",
"//android_webview/renderer",
"//base",
"//cc/base",
"//components/autofill/core/common",
"//components/crash/core/common",
"//components/gwp_asan/buildflags",
"//components/metrics",
"//components/safe_browsing/android:safe_browsing_api_handler",
"//components/services/heap_profiling/public/cpp",
"//components/spellcheck:buildflags",
"//components/version_info",
"//components/version_info/android:channel_getter",
"//components/viz/common",
"//content/public/app",
"//content/public/browser",
"//content/public/common",
"//content/public/common:content_descriptor_keys",
"//content/public/common:service_names",
"//gin",
"//gpu/command_buffer/service",
"//gpu/config",
"//gpu/ipc:gl_in_process_context",
"//media",
"//media:media_buildflags",
"//ui/base",
"//ui/events:gesture_detection",
]
if (enable_gwp_asan) {
deps += [ "//components/gwp_asan/client" ]
}
if (enable_spellcheck) {
deps += [ "//components/spellcheck/common" ]
}
}
source_set("webview_entry_point") {
deps = [
":lib",
"//base",
]
sources = [ "webview_entry_point.cc" ]
if (webview_includes_weblayer) {
defines = [ "WEBVIEW_INCLUDES_WEBLAYER" ]
deps += [ "//weblayer:weblayer_lib_webview" ]
}
}

View file

@ -1,201 +0,0 @@
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//android_webview/system_webview_apk_tmpl.gni")
import("//android_webview/variables.gni")
import("//build/config/android/rules.gni")
generate_jni("nonembedded_jni_headers") {
sources = [ "java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java" ]
}
# Contains classes needed by the webview apk, but not used when loading the apk
# as a library.
android_library("nonembedded_java") {
sources = [
"java/src/org/chromium/android_webview/nonembedded/AwNonembeddedUmaRecorder.java",
"java/src/org/chromium/android_webview/nonembedded/LicenseActivity.java",
"java/src/org/chromium/android_webview/nonembedded/LicenseContentProvider.java",
"java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java",
]
deps = [
":devui_java",
":services_java",
"//android_webview:android_webview_product_config_java",
"//android_webview:common_aidl_java",
"//android_webview:common_java",
"//android_webview/proto:metrics_bridge_records_proto_java",
"//base:base_java",
"//base:jni_java",
"//components/about_ui/android:aboutui_java",
"//components/embedder_support/android:application_java",
"//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
"//ui/android:ui_java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
}
android_library("devui_java") {
sources = [
"java/src/org/chromium/android_webview/devui/CrashesListFragment.java",
"java/src/org/chromium/android_webview/devui/DevUiBaseFragment.java",
"java/src/org/chromium/android_webview/devui/FlagsFragment.java",
"java/src/org/chromium/android_webview/devui/HomeFragment.java",
"java/src/org/chromium/android_webview/devui/MainActivity.java",
"java/src/org/chromium/android_webview/devui/PersistentErrorView.java",
"java/src/org/chromium/android_webview/devui/WebViewPackageError.java",
"java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java",
"java/src/org/chromium/android_webview/devui/util/CrashInfoLoader.java",
"java/src/org/chromium/android_webview/devui/util/UnuploadedFilesStateLoader.java",
"java/src/org/chromium/android_webview/devui/util/UploadedCrashesInfoLoader.java",
"java/src/org/chromium/android_webview/devui/util/WebViewCrashInfoCollector.java",
"java/src/org/chromium/android_webview/devui/util/WebViewCrashLogParser.java",
"java/src/org/chromium/android_webview/devui/util/WebViewPackageHelper.java",
]
deps = [
":devui_resources",
":system_webview_manifest",
"//android_webview:common_aidl_java",
"//android_webview:common_crash_java",
"//android_webview:common_java",
"//android_webview:common_platform_services_java",
"//base:base_java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/version_info/android:version_constants_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:androidx_fragment_fragment_java",
"//ui/android:ui_java",
]
}
android_library("services_java") {
sources = [
"java/src/org/chromium/android_webview/services/AwMinidumpUploadJobService.java",
"java/src/org/chromium/android_webview/services/AwMinidumpUploaderDelegate.java",
"java/src/org/chromium/android_webview/services/AwVariationsSeedFetcher.java",
"java/src/org/chromium/android_webview/services/CrashReceiverService.java",
"java/src/org/chromium/android_webview/services/DeveloperModeContentProvider.java",
"java/src/org/chromium/android_webview/services/DeveloperUiService.java",
"java/src/org/chromium/android_webview/services/MetricsBridgeService.java",
"java/src/org/chromium/android_webview/services/VariationsSeedHolder.java",
"java/src/org/chromium/android_webview/services/VariationsSeedServer.java",
]
deps = [
":system_webview_manifest",
"//android_webview:common_aidl_java",
"//android_webview:common_crash_java",
"//android_webview:common_java",
"//android_webview:common_platform_services_java",
"//android_webview:common_variations_java",
"//android_webview/proto:metrics_bridge_records_proto_java",
"//base:base_java",
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/variations/android:variations_java",
"//components/version_info/android:version_constants_java",
"//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
]
}
source_set("nonembedded") {
sources = [ "webview_apk_application.cc" ]
deps = [
":nonembedded_jni_headers",
"//android_webview/common",
"//base",
# Called via JNI by LicenseContentProvider in :nonembedded_java.
"//components/about_ui:about_ui_android",
]
}
# WebView icon used by upstream SystemWebView and Trichrome.
android_resources("icon_resources") {
sources = [
"java/res_icon/drawable-hdpi/icon_webview.png",
"java/res_icon/drawable-mdpi/icon_webview.png",
"java/res_icon/drawable-xhdpi/icon_webview.png",
"java/res_icon/drawable-xxhdpi/icon_webview.png",
]
custom_package = "org.chromium.android_webview.icon"
}
android_resources("devui_resources") {
sources = [
"java/res_devui/drawable/blue_circle.xml",
"java/res_devui/drawable/ic_action_home.xml",
"java/res_devui/drawable/ic_alert_error.xml",
"java/res_devui/drawable/ic_flag.xml",
"java/res_devui/layout/activity_main.xml",
"java/res_devui/layout/crashes_list_item_body.xml",
"java/res_devui/layout/crashes_list_item_header.xml",
"java/res_devui/layout/flag_states.xml",
"java/res_devui/layout/fragment_crashes_list.xml",
"java/res_devui/layout/fragment_flags.xml",
"java/res_devui/layout/fragment_home.xml",
"java/res_devui/layout/persistent_error_message.xml",
"java/res_devui/layout/toggleable_flag.xml",
"java/res_devui/layout/two_line_list_item.xml",
"java/res_devui/layout/two_line_sublist_item.xml",
"java/res_devui/menu/crashes_options_menu.xml",
"java/res_devui/menu/options_menu.xml",
"java/res_devui/values-night/colors.xml",
"java/res_devui/values-night/styles.xml",
"java/res_devui/values/colors.xml",
"java/res_devui/values/strings.xml",
"java/res_devui/values/styles.xml",
]
custom_package = "org.chromium.android_webview.devui"
}
android_resources("devui_launcher_icon_resources") {
sources = []
custom_package = "org.chromium.android_webview.devui.icon"
android_manifest = "java/DeveloperUiLauncherManifest.xml"
}
android_resources("monochrome_devui_launcher_icon_resources") {
sources = []
android_manifest = "java/MonochromeDeveloperUiLauncherManifest.xml"
custom_package = "org.chromium.android_webview.devui.icon"
}
jinja_template("system_webview_manifest") {
input = "java/AndroidManifest.xml"
output = system_webview_android_manifest
variables = [ "manifest_package=$system_webview_package_name" ]
}
jinja_template("trichrome_webview_manifest") {
input = "java/AndroidManifest.xml"
output = trichrome_webview_android_manifest
variables = trichrome_jinja_variables + [
"trichrome_version=$trichrome_version_code",
"manifest_package=$system_webview_package_name",
"library=libmonochrome.so",
]
}
if (android_64bit_target_cpu) {
jinja_template("trichrome_webview_64_32_manifest") {
input = "java/AndroidManifest.xml"
output = trichrome_webview_64_32_android_manifest
variables = trichrome_jinja_variables + [
"use32bitAbi=",
"trichrome_version=$trichrome_64_32_version_code",
"manifest_package=$system_webview_package_name",
"library=libmonochrome_64.so",
]
}
jinja_template("trichrome_webview_32_manifest") {
input = "java/AndroidManifest.xml"
output = trichrome_webview_32_android_manifest
variables = trichrome_jinja_variables + [
"trichrome_version=$trichrome_32_version_code",
"manifest_package=$system_webview_package_name",
"library=libmonochrome.so",
]
}
}

View file

@ -1,20 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
import("//third_party/protobuf/proto_library.gni")
proto_library("aw_variations_seed_proto") {
sources = [ "aw_variations_seed.proto" ]
}
proto_java_library("aw_variations_seed_proto_java") {
proto_path = "."
sources = [ "aw_variations_seed.proto" ]
}
proto_java_library("metrics_bridge_records_proto_java") {
proto_path = "."
sources = [ "metrics_bridge_records.proto" ]
}

View file

@ -1,11 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
source_set("public") {
sources = [
"browser/draw_fn.h",
"browser/draw_gl.h",
"browser/draw_sw.h",
]
}

View file

@ -1,65 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
source_set("renderer") {
sources = [
"aw_content_renderer_client.cc",
"aw_content_renderer_client.h",
"aw_content_settings_client.cc",
"aw_content_settings_client.h",
"aw_key_systems.cc",
"aw_key_systems.h",
"aw_print_render_frame_helper_delegate.cc",
"aw_print_render_frame_helper_delegate.h",
"aw_render_frame_ext.cc",
"aw_render_frame_ext.h",
"aw_render_thread_observer.cc",
"aw_render_thread_observer.h",
"aw_render_view_ext.cc",
"aw_render_view_ext.h",
"aw_safe_browsing_error_page_controller_delegate_impl.cc",
"aw_safe_browsing_error_page_controller_delegate_impl.h",
"aw_url_loader_throttle_provider.cc",
"aw_url_loader_throttle_provider.h",
"aw_websocket_handshake_throttle_provider.cc",
"aw_websocket_handshake_throttle_provider.h",
"browser_exposed_renderer_interfaces.cc",
"browser_exposed_renderer_interfaces.h",
]
deps = [
"//android_webview:generate_aw_resources",
"//android_webview:generate_aw_strings",
"//android_webview/common",
"//base",
"//components/android_system_error_page",
"//components/autofill/content/renderer",
"//components/cdm/renderer",
"//components/content_capture/common",
"//components/content_capture/renderer",
"//components/js_injection/common",
"//components/js_injection/renderer",
"//components/page_load_metrics/renderer",
"//components/printing/common",
"//components/printing/renderer",
"//components/resources",
"//components/safe_browsing/content/common:interfaces",
"//components/safe_browsing/content/renderer:throttles",
"//components/safe_browsing/core:features",
"//components/safe_browsing/core/common",
"//components/security_interstitials/content/renderer:security_interstitial_page_controller",
"//components/security_interstitials/core",
"//components/security_interstitials/core/common/mojom",
"//components/spellcheck:buildflags",
"//components/spellcheck/renderer",
"//components/strings",
"//components/visitedlink/renderer",
"//content/public/child",
"//content/public/common",
"//content/public/renderer",
"//third_party/blink/public:blink",
"//ui/base",
"//url",
]
}

View file

@ -1,40 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("support_lib_glue_java") {
sources = [
"java/src/org/chromium/support_lib_glue/IsomorphicAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibJsReplyProxyAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibProxyControllerAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibReflectionUtil.java",
"java/src/org/chromium/support_lib_glue/SupportLibScriptReferenceAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibServiceWorkerClientAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibServiceWorkerControllerAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibServiceWorkerSettingsAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibTracingControllerAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebMessageAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebMessageCallbackAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebMessageListenerAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebMessagePortAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebResourceRequest.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebSettingsAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebViewChromium.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebViewChromiumFactory.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebViewRendererAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebViewRendererClientAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebkitToCompatConverterAdapter.java",
]
deps = [
"//android_webview:browser_java",
"//android_webview/glue:glue_java",
"//android_webview/support_library/boundary_interfaces:boundary_interface_java",
"//android_webview/support_library/callback:callback_java",
"//base:base_java",
"//content/public/android:content_java",
]
}

View file

@ -1,60 +0,0 @@
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("boundary_interface_java") {
sources = [
"src/org/chromium/support_lib_boundary/FeatureFlagHolderBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/IsomorphicObjectBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/JsReplyProxyBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ProxyControllerBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/SafeBrowsingResponseBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ScriptReferenceBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ServiceWorkerClientBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ServiceWorkerControllerBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ServiceWorkerWebSettingsBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/StaticsBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/TracingControllerBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/VisualStateCallbackBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessageBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessageCallbackBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessageListenerBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessagePortBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebResourceErrorBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebResourceRequestBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebSettingsBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewClientBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewProviderFactoryBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewRendererBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewRendererClientBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebkitToCompatConverterBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java",
"src/org/chromium/support_lib_boundary/util/Features.java",
]
proguard_configs = [ "proguard.flags" ]
# Our choice of deps is limited, because boundary_interfaces/ must continue to
# build when we mirror this into AndroidX. We are only permitted to depend on
# core Android classes and other AndroidX classes (must be in the androidx.*
# package name).
deps = [ "//third_party/android_deps:androidx_annotation_annotation_java" ]
}
android_apk("boundary_interface_example_apk") {
apk_name = "BoundaryInterfaceExample"
# Use a dummy android manifest since this code is copied to androidx.
android_manifest = "//build/android/AndroidManifest.xml"
# This is to verify that the boundary interfaces compile and lint correctly
# against the minSdkVersion of the webkit support library module. As the
# minSdkVersion of the support library increases, so should this value. See
# http://crbug.com/828184 for more details.
min_sdk_version = 14
deps = [ ":boundary_interface_java" ]
}

View file

@ -1,20 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("callback_java") {
sources = [
"java/src/org/chromium/support_lib_callback_glue/SupportLibSafeBrowsingResponse.java",
"java/src/org/chromium/support_lib_callback_glue/SupportLibWebResourceError.java",
"java/src/org/chromium/support_lib_callback_glue/SupportLibWebViewContentsClientAdapter.java",
]
deps = [
"//android_webview:browser_java",
"//android_webview/support_library/boundary_interfaces:boundary_interface_java",
"//base:base_java",
]
}

View file

@ -1,265 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//android_webview/variables.gni")
import("//base/android/resource_exclusions.gni")
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
import("//build/config/locales.gni")
import("//build/util/version.gni")
import("//chrome/android/trichrome.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
import("//weblayer/variables.gni")
import("//weblayer/weblayer_resource_exclusions.gni")
declare_args() {
# Android package name to use when compiling the system_webview_apk and
# trichrome_webview_apk targets. This should be used if the Android build
# on which you are going to install WebView is configured to load a
# different package name than the default used in AOSP.
system_webview_package_name = "com.android.webview"
# Whether to enable standalone and trichrome WebView bundle build targets.
enable_webview_bundles = true
}
template("system_webview_apk_or_module_tmpl") {
if (!defined(invoker.target_type)) {
_is_bundle_module = false
_target_type = "android_apk"
} else {
_is_bundle_module = invoker.target_type == "android_app_bundle_module"
_target_type = invoker.target_type
}
_exclude_weblayer_java =
defined(invoker.exclude_weblayer_java) && invoker.exclude_weblayer_java
target(_target_type, target_name) {
forward_variables_from(invoker,
"*",
[
"is_64_bit_browser",
"include_32_bit_webview",
"include_64_bit_webview",
])
deps += [
"//android_webview:locale_pak_assets",
"//android_webview:pak_file_assets",
]
# If the R SDK isn't public yet, include the downstream code to support R.
if (!public_android_sdk && android_sdk_release == "r") {
deps += [ "//clank/android_webview/next:r_sdk_java" ]
}
if (_exclude_weblayer_java) {
deps += [ "//android_webview:android_webview_no_weblayer_java" ]
} else {
deps += [ "//android_webview:android_webview_java" ]
# Resources from this target will be kept in the base bundle module
# instead of in language splits.
if (!defined(invoker.shared_resources_allowlist_target)) {
shared_resources_allowlist_target =
"//android_webview:system_webview_no_weblayer_apk"
}
}
target_sdk_version = android_sdk_version
product_config_java_packages = [ webview_product_config_java_package ]
if (webview_includes_weblayer) {
if (_is_bundle_module) {
deps += [ "//weblayer:bundle_locale_pak_assets" ]
} else {
deps += [ "//weblayer:locale_pak_assets" ]
}
product_config_java_packages += [ weblayer_product_config_java_package ]
}
if (!defined(alternative_android_sdk_dep)) {
alternative_android_sdk_dep = webview_framework_dep
}
if (webview_devui_show_icon) {
deps += [ "//android_webview/nonembedded:devui_launcher_icon_resources" ]
}
_use_trichrome_library =
defined(use_trichrome_library) && use_trichrome_library
assert(
_use_trichrome_library == defined(invoker.static_library_provider),
"If trichrome library is used, static_library_provider must be set " +
"so that a dep can be added on the library APK.")
# Pure 32-bit implies a 32-bit only Webview built on a 64-bit configuration.
_pure_32_bit =
android_64bit_target_cpu && defined(invoker.include_64_bit_webview) &&
!invoker.include_64_bit_webview
not_needed([ "_pure_32_bit" ])
# Flag whether additional deps and libs should be included for each ABI.
_include_primary_support = false
_include_secondary_support = false
if (!_use_trichrome_library) {
shared_resources = true
if (!android_64bit_target_cpu || !_pure_32_bit) {
shared_libraries = [ "//android_webview:libwebviewchromium" ]
_include_primary_support = true
}
if (android_64bit_target_cpu) {
secondary_abi_shared_libraries = [ "//android_webview:libwebviewchromium($android_secondary_abi_toolchain)" ]
_include_secondary_support = true
}
deps += [ "//third_party/icu:icu_assets" ]
} else {
uncompress_shared_libraries = true
app_as_shared_lib = true
# Include placeholder libraries to ensure we are treated as the desired
# architecture.
if (android_64bit_target_cpu) {
if (invoker.is_64_bit_browser) {
native_lib_placeholders = [ "libdummy.so" ]
if (invoker.include_32_bit_webview) {
secondary_abi_shared_libraries = [ "//android_webview:monochrome_64($android_secondary_abi_toolchain)" ]
_include_secondary_support = true
}
} else {
if (invoker.include_64_bit_webview) {
shared_libraries = [ "//android_webview:monochrome" ]
_include_primary_support = true
}
secondary_native_lib_placeholders = [ "libdummy.so" ]
}
} else {
native_lib_placeholders = [ "libdummy.so" ]
}
}
if (_include_primary_support) {
deps += [
"//android_webview:webview_primary_abi_assets",
"//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline",
]
loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ]
if (webview_includes_weblayer) {
deps += [ "//base/android/linker:chromium_android_linker" ]
loadable_modules +=
[ "$root_out_dir/libchromium_android_linker$shlib_extension" ]
}
}
if (_include_secondary_support) {
_trampoline = "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline($android_secondary_abi_toolchain)"
deps += [
"//android_webview:webview_secondary_abi_assets",
_trampoline,
]
_secondary_out_dir = get_label_info(_trampoline, "root_out_dir")
secondary_abi_loadable_modules =
[ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ]
if (webview_includes_weblayer) {
deps += [ "//base/android/linker:chromium_android_linker($android_secondary_abi_toolchain)" ]
secondary_abi_loadable_modules +=
[ "$_secondary_out_dir/libchromium_android_linker$shlib_extension" ]
}
}
if (!_use_trichrome_library || android_64bit_target_cpu) {
# 32-bit TrichromeWebView doesn't have a native library, so only do this
# for other configs.
native_lib_version_rule = "//build/util:chrome_version_json"
_native_lib_file =
rebase_path("$root_gen_dir/CHROME_VERSION.json", root_out_dir)
native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)"
}
aapt_locale_allowlist = locales
resource_exclusion_regex = common_resource_exclusion_regex
resource_exclusion_exceptions = common_resource_exclusion_exceptions
if (webview_includes_weblayer) {
resource_values_filter_rules = weblayer_resource_values_filter_rules
resource_exclusion_exceptions += weblayer_resource_exclusion_exceptions
# Note: WebLayer's resource exclusion regex deliberately does not start
# with "|".
resource_exclusion_regex += "|" + weblayer_resource_exclusion_regex
}
if (!_is_bundle_module) {
# Used as an additional apk in test scripts.
never_incremental = true
command_line_flags_file = "webview-command-line"
}
if (!is_java_debug) {
proguard_enabled = true
if (!defined(proguard_configs)) {
proguard_configs = []
}
proguard_configs += [
"//android_webview/nonembedded/java/proguard.flags",
"//base/android/proguard/chromium_apk.flags",
"//base/android/proguard/chromium_code.flags",
]
if (enable_proguard_obfuscation) {
proguard_configs +=
[ "//base/android/proguard/enable_obfuscation.flags" ]
} else {
proguard_configs +=
[ "//base/android/proguard/disable_all_obfuscation.flags" ]
}
png_to_webp = true
}
if (!defined(version_code)) {
if (_use_trichrome_library) {
if (android_64bit_target_cpu) {
if (invoker.is_64_bit_browser) {
if (invoker.include_32_bit_webview) {
version_code = trichrome_64_32_version_code
} else {
version_code = trichrome_64_version_code
}
} else {
if (invoker.include_64_bit_webview) {
version_code = trichrome_32_64_version_code
} else {
version_code = trichrome_32_version_code
}
}
} else {
version_code = trichrome_version_code
}
} else {
if (android_channel == "dev") {
if (_pure_32_bit) {
version_code = webview_32_dev_version_code
} else {
version_code = webview_dev_version_code
}
} else if (android_channel == "beta") {
if (_pure_32_bit) {
version_code = webview_32_beta_version_code
} else {
version_code = webview_beta_version_code
}
} else {
if (_pure_32_bit) {
version_code = webview_32_stable_version_code
} else {
version_code = webview_stable_version_code
}
}
}
}
if (!defined(version_name)) {
version_name = chrome_version_name
}
}
}

View file

@ -1,34 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
import("//build/config/locales.gni")
template("system_webview_bundle") {
android_app_bundle(target_name) {
command_line_flags_file = "webview-command-line"
proguard_enabled = !is_java_debug
enable_language_splits = true
system_image_locale_allowlist = locales
is_multi_abi =
android_64bit_target_cpu && (!defined(invoker.include_64_bit_webview) ||
invoker.include_64_bit_webview) &&
(!defined(invoker.include_32_bit_webview) ||
invoker.include_32_bit_webview)
if (!defined(proguard_android_sdk_dep)) {
proguard_android_sdk_dep = webview_framework_dep
}
# NOTE: Only sign bundle for official builds since this is very slow.
if (enable_chrome_android_internal && use_signing_keys &&
is_official_build) {
sign_bundle = true
keystore_path = webview_keystore_path
keystore_name = webview_keystore_name
keystore_password = webview_keystore_password
}
forward_variables_from(invoker, "*")
}
}

View file

@ -1,511 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//android_webview/variables.gni")
import("//build/config/android/rules.gni")
import("//build/config/python.gni")
import("//device/vr/buildflags/buildflags.gni")
import("//testing/test.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
# Mark all targets as test only.
testonly = true
group("test") {
deps = [
":android_webview_junit_tests",
":android_webview_unittests",
":webview_instrumentation_test_apk",
]
}
python_library("webview_cts_tests") {
pydeps_file = "//android_webview/tools/run_cts.pydeps"
deps = [ "//android_webview:system_webview_apk" ]
data_deps = [
"//build/android:logdog_wrapper_py",
"//build/android:test_runner_py",
"//testing/buildbot/filters:webview_cts_tests_filters",
]
data = [ "//android_webview/tools/cts_config/" ]
}
python_library("system_webview_wpt") {
testonly = true
pydeps_file = "//testing/scripts/run_android_wpt.pydeps"
data_deps = [
"//android_webview:system_webview_apk",
"//android_webview/tools/system_webview_shell:system_webview_shell_layout_test_apk",
"//chrome/test/chromedriver:chromedriver($host_toolchain)",
"//third_party/blink/tools:wpt_tests_android_isolate",
]
}
android_apk("webview_instrumentation_apk") {
deps = [
":webview_instrumentation_apk_assets",
":webview_instrumentation_apk_resources",
":webview_instrumentation_test_utils_java",
"//android_webview:android_webview_java",
"//android_webview:android_webview_product_config_java",
"//android_webview:common_java",
"//android_webview:locale_pak_assets",
"//android_webview:platform_service_bridge_upstream_implementation_java",
"//base:base_java",
"//base:base_java_test_support",
"//components/heap_profiling/multi_process:heap_profiling_java_test_support",
"//components/policy/android:policy_java_test_support",
"//content/public/android:content_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
"//ui/android:ui_java",
"//url:gurl_java",
]
apk_name = "WebViewInstrumentation"
android_manifest = "shell/AndroidManifest.xml"
sources = [
"shell/src/org/chromium/android_webview/shell/AwShellActivity.java",
"shell/src/org/chromium/android_webview/shell/AwShellApplication.java",
"shell/src/org/chromium/android_webview/shell/AwShellResourceProvider.java",
"shell/src/org/chromium/android_webview/shell/AwShellSwitches.java",
"shell/src/org/chromium/android_webview/shell/DrawFn.java",
"shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java",
"shell/src/org/chromium/android_webview/test/AwTestContainerView.java",
"shell/src/org/chromium/android_webview/test/AwTestRunnerActivity.java",
"shell/src/org/chromium/android_webview/test/NullContentsClient.java",
"shell/src/org/chromium/android_webview/test/OnlyRunIn.java",
"shell/src/org/chromium/android_webview/test/SecondBrowserProcess.java",
"shell/src/org/chromium/android_webview/test/TestContentProvider.java",
]
product_config_java_packages = [ webview_product_config_java_package ]
shared_libraries = [ ":libstandalonelibwebviewchromium" ]
native_lib_version_rule = "//build/util:chrome_version_json"
_native_lib_file =
rebase_path("$root_gen_dir/CHROME_VERSION.json", root_build_dir)
native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)"
command_line_flags_file = "android-webview-command-line"
}
android_resources("webview_instrumentation_apk_resources") {
sources = [
"shell/res/layout/testshell_activity.xml",
"shell/res/raw/resource_file.html",
"shell/res/raw/resource_icon.png",
"shell/res/values/config.xml",
]
custom_package = "org.chromium.android_webview.shell"
}
android_assets("webview_instrumentation_apk_assets") {
deps = [
"//android_webview:pak_file_assets",
"//third_party/icu:icu_assets",
]
sources = [
"shell/assets/asset_file.html",
"shell/assets/asset_icon.png",
"shell/assets/autofill.html",
"shell/assets/cookie_test.html",
"shell/assets/cors.html",
"shell/assets/full_screen_video.js",
"shell/assets/full_screen_video_inside_div_test.html",
"shell/assets/full_screen_video_test.html",
"shell/assets/full_screen_video_test_not_preloaded.html",
"shell/assets/key-system-test.html",
"shell/assets/star.svg",
"shell/assets/star.svgz",
"shell/assets/video.webm",
"shell/assets/visual_state_during_fullscreen_test.html",
"shell/assets/visual_state_on_page_commit_visible_test.html",
"shell/assets/visual_state_waits_for_js_detached_test.html",
"shell/assets/visual_state_waits_for_js_test.html",
]
if (use_v8_context_snapshot) {
deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
} else {
deps += [ "//v8:v8_external_startup_data_assets" ]
}
}
shared_library("libstandalonelibwebviewchromium") {
testonly = true
sources = [ "shell/src/draw_gl/draw_fn.cc" ]
ldflags = [ "-Wl,-shared,-Bsymbolic" ]
deps = [
":webview_instrumentation_test_native_jni_impl",
"//android_webview/lib",
"//android_webview/lib:webview_entry_point",
"//android_webview/nonembedded",
"//android_webview/public",
"//base",
"//components/heap_profiling/multi_process:test_support",
"//content/public/test/android:content_native_test_support",
]
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
configs += [ "//build/config/android:hide_all_but_jni" ]
}
instrumentation_test_apk("webview_instrumentation_test_apk") {
apk_name = "WebViewInstrumentationTest"
apk_under_test = ":webview_instrumentation_apk"
android_manifest = "../javatests/AndroidManifest.xml"
min_sdk_version = 21
deps = [
":webview_instrumentation_test_utils_java",
"//android_webview:android_webview_java",
"//android_webview:common_aidl_java",
"//android_webview:common_crash_java",
"//android_webview:common_platform_services_java",
"//android_webview:common_variations_java",
"//android_webview/nonembedded:devui_java",
"//android_webview/nonembedded:services_java",
"//android_webview/proto:aw_variations_seed_proto_java",
"//android_webview/proto:metrics_bridge_records_proto_java",
"//android_webview/test/embedded_test_server:aw_net_java_test_support",
"//base:base_java",
"//base:base_java_test_support",
"//components/autofill/android:autofill_java",
"//components/autofill/android/provider:java",
"//components/autofill/core/common/mojom:mojo_types_java",
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
"//components/content_capture/android:java",
"//components/embedder_support/android:web_contents_delegate_java",
"//components/heap_profiling/multi_process:heap_profiling_java_test_support",
"//components/metrics:metrics_java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/minidump_uploader:minidump_uploader_javatests",
"//components/policy/android:policy_java",
"//components/policy/android:policy_java_test_support",
"//components/safe_browsing/android:safe_browsing_java",
"//components/variations/android:variations_java",
"//components/variations/proto:proto_java",
"//components/version_info/android:version_constants_java",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
"//mojo/public/java:bindings_java",
"//net/android:net_java",
"//net/android:net_java_test_support",
"//net/android:net_javatests",
"//services/device/public/java:geolocation_java",
"//services/device/public/java:geolocation_java_test_support",
"//third_party/android_deps:com_google_guava_failureaccess_java",
"//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
"//third_party/android_deps:espresso_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/blink/public/mojom:web_feature_mojo_bindings_java",
"//third_party/guava:guava_android_java",
"//third_party/hamcrest:hamcrest_java",
"//third_party/junit",
"//third_party/metrics_proto:metrics_proto_java",
"//third_party/mockito:mockito_java",
"//ui/android:ui_java",
"//url:gurl_java",
]
sources = [
"../javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java",
"../javatests/src/org/chromium/android_webview/test/AndroidProtocolHandlerTest.java",
"../javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java",
"../javatests/src/org/chromium/android_webview/test/AndroidViewIntegrationTest.java",
"../javatests/src/org/chromium/android_webview/test/ArchiveTest.java",
"../javatests/src/org/chromium/android_webview/test/AwActivityTestRule.java",
"../javatests/src/org/chromium/android_webview/test/AwAutocompleteTest.java",
"../javatests/src/org/chromium/android_webview/test/AwAutofillTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentCaptureTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsAnchorViewTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientAutoLoginTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientFaviconTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientFullScreenTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientGetDefaultVideoPosterTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnFormResubmissionTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnRenderProcessGoneTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnRendererUnresponsiveTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnUnhandledKeyEventTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientShouldInterceptRequestTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientVisitedHistoryTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsContainerViewTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsGarbageCollectionTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsLifecycleNotifierTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsRenderTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsStaticsTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsTest.java",
"../javatests/src/org/chromium/android_webview/test/AwFormDatabaseTest.java",
"../javatests/src/org/chromium/android_webview/test/AwImeTest.java",
"../javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java",
"../javatests/src/org/chromium/android_webview/test/AwLegacyQuirksTest.java",
"../javatests/src/org/chromium/android_webview/test/AwMetricsIntegrationTest.java",
"../javatests/src/org/chromium/android_webview/test/AwNetworkConfigurationTest.java",
"../javatests/src/org/chromium/android_webview/test/AwPageLoadMetricsTest.java",
"../javatests/src/org/chromium/android_webview/test/AwPermissionManagerTest.java",
"../javatests/src/org/chromium/android_webview/test/AwProxyControllerTest.java",
"../javatests/src/org/chromium/android_webview/test/AwQuotaManagerBridgeTest.java",
"../javatests/src/org/chromium/android_webview/test/AwSecondBrowserProcessTest.java",
"../javatests/src/org/chromium/android_webview/test/AwServiceWorkerClientTest.java",
"../javatests/src/org/chromium/android_webview/test/AwSettingsTest.java",
"../javatests/src/org/chromium/android_webview/test/AwUncaughtExceptionTest.java",
"../javatests/src/org/chromium/android_webview/test/AwVariationsSeedFetcherTest.java",
"../javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java",
"../javatests/src/org/chromium/android_webview/test/AwZoomTest.java",
"../javatests/src/org/chromium/android_webview/test/CleanupReferenceTest.java",
"../javatests/src/org/chromium/android_webview/test/ClearHistoryTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientAddMessageToConsoleTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnPageStartedTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnReceivedError2Test.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnReceivedErrorTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnReceivedHttpErrorTest.java",
"../javatests/src/org/chromium/android_webview/test/ConsoleMessagesForBlockedLoadsTest.java",
"../javatests/src/org/chromium/android_webview/test/ContentViewMiscTest.java",
"../javatests/src/org/chromium/android_webview/test/CookieManagerStartupTest.java",
"../javatests/src/org/chromium/android_webview/test/CookieManagerTest.java",
"../javatests/src/org/chromium/android_webview/test/DarkModeTest.java",
"../javatests/src/org/chromium/android_webview/test/DisableHardwareAccelerationForTest.java",
"../javatests/src/org/chromium/android_webview/test/FullScreenVideoTestAwContentsClient.java",
"../javatests/src/org/chromium/android_webview/test/GeolocationTest.java",
"../javatests/src/org/chromium/android_webview/test/GetTitleTest.java",
"../javatests/src/org/chromium/android_webview/test/HeapProfilingTest.java",
"../javatests/src/org/chromium/android_webview/test/HttpAuthDatabaseTest.java",
"../javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java",
"../javatests/src/org/chromium/android_webview/test/KeySystemTest.java",
"../javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java",
"../javatests/src/org/chromium/android_webview/test/LoadUrlTest.java",
"../javatests/src/org/chromium/android_webview/test/MediaAccessPermissionRequestTest.java",
"../javatests/src/org/chromium/android_webview/test/MemoryMetricsLoggerTest.java",
"../javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java",
"../javatests/src/org/chromium/android_webview/test/OnDiskFileTest.java",
"../javatests/src/org/chromium/android_webview/test/PolicyUrlFilteringTest.java",
"../javatests/src/org/chromium/android_webview/test/PopupWindowTest.java",
"../javatests/src/org/chromium/android_webview/test/PostMessageTest.java",
"../javatests/src/org/chromium/android_webview/test/RenderProcessGoneHelper.java",
"../javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java",
"../javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java",
"../javatests/src/org/chromium/android_webview/test/SslPreferencesTest.java",
"../javatests/src/org/chromium/android_webview/test/StandaloneAwQuotaManagerBridgeTest.java",
"../javatests/src/org/chromium/android_webview/test/TestAwContents.java",
"../javatests/src/org/chromium/android_webview/test/TestAwContentsClient.java",
"../javatests/src/org/chromium/android_webview/test/TestAwServiceWorkerClient.java",
"../javatests/src/org/chromium/android_webview/test/UserAgentTest.java",
"../javatests/src/org/chromium/android_webview/test/VariationsSeedHolderTest.java",
"../javatests/src/org/chromium/android_webview/test/VariationsSeedLoaderTest.java",
"../javatests/src/org/chromium/android_webview/test/VariationsTest.java",
"../javatests/src/org/chromium/android_webview/test/VisualStateTest.java",
"../javatests/src/org/chromium/android_webview/test/WebKitHitTestTest.java",
"../javatests/src/org/chromium/android_webview/test/WebViewAsynchronousFindApisTest.java",
"../javatests/src/org/chromium/android_webview/test/WebViewFindApisTestRule.java",
"../javatests/src/org/chromium/android_webview/test/WebViewModalDialogOverrideTest.java",
"../javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoEqualityMatcher.java",
"../javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoTest.java",
"../javatests/src/org/chromium/android_webview/test/common/variations/VariationsUtilsTest.java",
"../javatests/src/org/chromium/android_webview/test/devui/AwNonembeddedUmaRecorderTest.java",
"../javatests/src/org/chromium/android_webview/test/devui/DeveloperUiTest.java",
"../javatests/src/org/chromium/android_webview/test/devui/util/CrashBugUrlFactoryTest.java",
"../javatests/src/org/chromium/android_webview/test/devui/util/UnuploadedFilesStateLoaderTest.java",
"../javatests/src/org/chromium/android_webview/test/devui/util/UploadedCrashesInfoLoaderTest.java",
"../javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashInfoCollectorTest.java",
"../javatests/src/org/chromium/android_webview/test/devui/util/WebViewCrashLogParserTest.java",
"../javatests/src/org/chromium/android_webview/test/services/CrashReceiverServiceTest.java",
"../javatests/src/org/chromium/android_webview/test/services/MetricsBridgeServiceTest.java",
"../javatests/src/org/chromium/android_webview/test/services/MinidumpUploadJobTest.java",
"../javatests/src/org/chromium/android_webview/test/services/MockMetricsBridgeService.java",
"../javatests/src/org/chromium/android_webview/test/services/MockVariationsSeedServer.java",
"../javatests/src/org/chromium/android_webview/test/services/ServiceConnectionHelper.java",
"../javatests/src/org/chromium/android_webview/test/services/VariationsSeedServerTest.java",
"../javatests/src/org/chromium/android_webview/test/services/VisualStateCallbackTest.java",
"../javatests/src/org/chromium/android_webview/test/util/AwQuotaManagerBridgeTestUtil.java",
"../javatests/src/org/chromium/android_webview/test/util/AwTestTouchUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/CommonResources.java",
"../javatests/src/org/chromium/android_webview/test/util/CookieUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/GraphicsTestUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/ImagePageGenerator.java",
"../javatests/src/org/chromium/android_webview/test/util/JSUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/JavascriptEventObserver.java",
"../javatests/src/org/chromium/android_webview/test/util/VideoSurfaceViewUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/VideoTestUtil.java",
"../javatests/src/org/chromium/android_webview/test/util/VideoTestWebServer.java",
]
if (!use_jacoco_coverage) {
# Jacoco requires strict mode to be turned off since it writes coverage data to files.
sources += [ "../javatests/src/org/chromium/android_webview/test/AwStrictModeTest.java" ]
}
data = [ "data/" ]
data_deps =
[ "//testing/buildbot/filters:webview_instrumentation_test_apk_filters" ]
if (enable_chrome_android_internal) {
data_deps +=
[ "//clank/build/bot/filters:webview_instrumentation_test_apk_filters" ]
}
# We only want to bother including these on bots set up for VR testing
if (include_vr_data) {
data += [
"//chrome/android/shared_preference_files/test/",
"//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk",
]
}
additional_apks = [
"//android_webview/test/embedded_test_server:aw_net_test_support_apk",
"//net/android:net_test_support_apk",
]
}
android_library("webview_instrumentation_test_utils_java") {
testonly = true
sources = [
"../javatests/src/org/chromium/android_webview/test/util/VariationsTestUtils.java",
"shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java",
]
deps = [
"//android_webview:common_variations_java",
"//base:base_java",
"//base:jni_java",
"//components/variations/android:variations_java",
"//third_party/junit",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
}
generate_jni("webview_instrumentation_test_native_jni") {
testonly = true
sources = [
"../javatests/src/org/chromium/android_webview/test/util/VariationsTestUtils.java",
"shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java",
]
}
source_set("webview_instrumentation_test_native_jni_impl") {
sources = [
"browser/variations_test_utils.cc",
"shell/memory_metrics_logger_utils.cc",
]
deps = [
":webview_instrumentation_test_native_jni",
"//android_webview/browser",
"//base",
"//base/test:test_support",
"//components/embedder_support/android/metrics",
"//third_party/protobuf:protobuf_lite",
]
}
test("android_webview_unittests") {
deps = [
":android_webview_unittests_assets",
":android_webview_unittests_java",
":android_webview_unittests_jni",
"//android_webview/browser",
"//android_webview/browser/gfx",
"//android_webview/browser/lifecycle",
"//android_webview/browser/metrics",
"//android_webview/common",
"//base/test:test_support",
"//components/autofill/core/browser",
"//components/metrics",
"//components/prefs:prefs",
"//components/prefs:test_support",
"//content:content",
"//content/test:test_support",
"//mojo/core/embedder",
"//net:net",
"//net:test_support",
"//services/network:test_support",
"//ui/base:ui_base_jni_headers",
"//ui/gl",
"//ui/gl:test_support",
]
sources = [
"../browser/aw_browser_context_unittest.cc",
"../browser/aw_content_browser_client_unittest.cc",
"../browser/aw_contents_client_bridge_unittest.cc",
"../browser/aw_form_database_service_unittest.cc",
"../browser/aw_media_url_interceptor_unittest.cc",
"../browser/aw_pac_processor_unittest.cc",
"../browser/aw_permission_manager_unittest.cc",
"../browser/gfx/aw_attaching_to_window_recorder_unittest.cc",
"../browser/gfx/begin_frame_source_webview_unittest.cc",
"../browser/gfx/browser_view_renderer_unittest.cc",
"../browser/gfx/test/fake_window.cc",
"../browser/gfx/test/fake_window.h",
"../browser/gfx/test/rendering_test.cc",
"../browser/gfx/test/rendering_test.h",
"../browser/input_stream_unittest.cc",
"../browser/lifecycle/aw_contents_lifecycle_notifier_unittest.cc",
"../browser/metrics/aw_stability_metrics_provider_unittest.cc",
"../browser/metrics/visibility_metrics_logger_unittest.cc",
"../browser/network_service/android_stream_reader_url_loader_unittest.cc",
"../browser/network_service/input_stream_reader_unittest.cc",
"../browser/permission/media_access_permission_request_unittest.cc",
"../browser/permission/permission_request_handler_unittest.cc",
"../browser/renderer_host/auto_login_parser_unittest.cc",
"../browser/safe_browsing/aw_safe_browsing_whitelist_manager_unittest.cc",
"../browser/scoped_add_feature_flags_unittests.cc",
"../browser/state_serializer_unittest.cc",
"../lib/webview_tests.cc",
]
deps += [ "//v8:v8_external_startup_data_assets" ]
}
android_assets("android_webview_unittests_assets") {
sources = [ "unittest/assets/asset_file.ogg" ]
}
android_library("android_webview_unittests_java") {
testonly = true
deps = [
"//android_webview:android_webview_java",
"//base:base_java",
"//content/public/test/android:content_java_test_support",
]
sources = [
"../unittestjava/src/org/chromium/android_webview/unittest/InputStreamUnittest.java",
"../unittestjava/src/org/chromium/android_webview/unittest/MockAwContentsClientBridge.java",
]
}
generate_jni("android_webview_unittests_jni") {
testonly = true
sources = [
"../unittestjava/src/org/chromium/android_webview/unittest/InputStreamUnittest.java",
"../unittestjava/src/org/chromium/android_webview/unittest/MockAwContentsClientBridge.java",
]
}
# robolectric tests
junit_binary("android_webview_junit_tests") {
sources = [
"../junit/src/org/chromium/android_webview/robolectric/AwLayoutSizerTest.java",
"../junit/src/org/chromium/android_webview/robolectric/AwScrollOffsetManagerTest.java",
"../junit/src/org/chromium/android_webview/robolectric/FindAddressTest.java",
"../junit/src/org/chromium/android_webview/robolectric/common/FlagOverrideHelperTest.java",
"../junit/src/org/chromium/android_webview/robolectric/common/services/ServiceNamesTest.java",
"../junit/src/org/chromium/android_webview/robolectric/metrics/AwNonembeddedUmaReplayerTest.java",
]
deps = [
"//android_webview:android_webview_java",
"//android_webview/nonembedded:services_java",
"//android_webview/proto:metrics_bridge_records_proto_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
"//content/public/test/android:content_java_test_support",
"//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
"//third_party/android_support_test_runner:runner_java",
]
package_name = "org.chromium.android_webview.robolectric"
}

View file

@ -1,74 +0,0 @@
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("aw_net_java_test_support") {
testonly = true
sources = [
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServer.java",
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServerImpl.java",
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServerService.java",
]
deps = [
"//base:base_java",
"//base:base_java_test_support",
"//net/android:embedded_test_server_aidl_java",
"//net/android:net_java",
"//net/android:net_java_test_support",
"//net/android:net_java_test_support_provider",
]
}
generate_jni("aw_net_jni_headers") {
testonly = true
sources = [
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServerImpl.java",
]
}
source_set("aw_java_test_native_support") {
testonly = true
sources = [
"../../../net/test/embedded_test_server/android/embedded_test_server_android.cc",
"../../../net/test/embedded_test_server/android/embedded_test_server_android.h",
"aw_embedded_test_server.cc",
"aw_test_entry_point.cc",
]
deps = [ "//net:test_support" ]
public_deps = [
":aw_net_jni_headers",
"//net:net_test_jni_headers",
]
}
shared_library("aw_net_java_test_native_support") {
testonly = true
deps = [
":aw_java_test_native_support",
"//net:test_support",
]
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
configs += [ "//build/config/android:hide_all_but_jni" ]
}
android_apk("aw_net_test_support_apk") {
testonly = true
# Used as an additional_apk in test scripts.
never_incremental = true
# Multidex requires a custom Application class to initialize it. Simpler to
# just disable it.
enable_multidex = false
deps = [
":aw_net_java_test_support",
"//base:base_java",
]
android_manifest = "java/AndroidManifest.xml"
apk_name = "ChromiumNetTestAwSupport"
shared_libraries = [ ":aw_net_java_test_native_support" ]
}

View file

@ -1,73 +0,0 @@
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
import("//testing/test.gni")
group("webview_ui_test_app") {
testonly = true
deps = [
":webview_ui_test_app_apk",
":webview_ui_test_app_test_apk",
]
}
android_apk("webview_ui_test_app_apk") {
apk_name = "WebViewUiTestApp"
android_manifest = "java/AndroidManifest.xml"
deps = [
":webview_ui_test_app_apk_resources",
":webview_ui_test_app_java",
]
}
android_library("webview_ui_test_app_java") {
sources =
[ "java/src/org/chromium/webview_ui_test/WebViewUiTestActivity.java" ]
deps = [
":webview_ui_test_app_apk_resources",
"//base:base_java",
]
}
android_resources("webview_ui_test_app_apk_resources") {
sources = [
"java/res/layout/edittext_webview.xml",
"java/res/layout/fullscreen_webview.xml",
"java/res/values/strings.xml",
]
custom_package = "org.chromium.webview_ui_test"
}
instrumentation_test_apk("webview_ui_test_app_test_apk") {
apk_name = "WebViewUiTestAppTest"
apk_under_test = ":webview_ui_test_app_apk"
android_manifest = "javatests/AndroidManifest.xml"
sources = [
"javatests/src/org/chromium/webview_ui_test/test/ActionModeTest.java",
"javatests/src/org/chromium/webview_ui_test/test/DropDownListTest.java",
"javatests/src/org/chromium/webview_ui_test/test/WebViewJSTest.java",
"javatests/src/org/chromium/webview_ui_test/test/util/Actions.java",
"javatests/src/org/chromium/webview_ui_test/test/util/Atoms.java",
"javatests/src/org/chromium/webview_ui_test/test/util/UseLayout.java",
"javatests/src/org/chromium/webview_ui_test/test/util/WebViewSyncWrapper.java",
"javatests/src/org/chromium/webview_ui_test/test/util/WebViewUiTestRule.java",
]
deps = [
":webview_ui_test_app_apk_resources",
":webview_ui_test_app_java",
"//base:base_java",
"//base:base_java_test_support",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:espresso_java",
"//third_party/android_sdk:android_test_base_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/hamcrest:hamcrest_java",
"//third_party/junit",
"//third_party/ub-uiautomator:ub_uiautomator_java",
]
data = [ "test/data/" ]
use_webview_provider = system_webview_apk_target
}

View file

@ -1,77 +0,0 @@
# Generated by running:
# build/print_python_deps.py --output android_webview/tools/run_cts.pydeps --gn-paths android_webview/tools/run_cts.py
//android_webview/tools/run_cts.py
//build/android/devil_chromium.py
//build/android/pylib/__init__.py
//build/android/pylib/constants/__init__.py
//build/android/pylib/constants/host_paths.py
//build/android/pylib/local/__init__.py
//build/android/pylib/local/emulator/__init__.py
//build/android/pylib/local/emulator/avd.py
//build/android/pylib/local/emulator/ini.py
//build/android/pylib/local/emulator/proto/__init__.py
//build/android/pylib/local/emulator/proto/avd_pb2.py
//build/android/pylib/utils/__init__.py
//build/android/pylib/utils/test_filter.py
//third_party/catapult/common/py_utils/py_utils/__init__.py
//third_party/catapult/common/py_utils/py_utils/cloud_storage.py
//third_party/catapult/common/py_utils/py_utils/cloud_storage_global_lock.py
//third_party/catapult/common/py_utils/py_utils/lock.py
//third_party/catapult/common/py_utils/py_utils/tempfile_ext.py
//third_party/catapult/dependency_manager/dependency_manager/__init__.py
//third_party/catapult/dependency_manager/dependency_manager/archive_info.py
//third_party/catapult/dependency_manager/dependency_manager/base_config.py
//third_party/catapult/dependency_manager/dependency_manager/cloud_storage_info.py
//third_party/catapult/dependency_manager/dependency_manager/dependency_info.py
//third_party/catapult/dependency_manager/dependency_manager/dependency_manager_util.py
//third_party/catapult/dependency_manager/dependency_manager/exceptions.py
//third_party/catapult/dependency_manager/dependency_manager/local_path_info.py
//third_party/catapult/dependency_manager/dependency_manager/manager.py
//third_party/catapult/dependency_manager/dependency_manager/uploader.py
//third_party/catapult/devil/devil/__init__.py
//third_party/catapult/devil/devil/android/__init__.py
//third_party/catapult/devil/devil/android/apk_helper.py
//third_party/catapult/devil/devil/android/constants/__init__.py
//third_party/catapult/devil/devil/android/constants/chrome.py
//third_party/catapult/devil/devil/android/constants/file_system.py
//third_party/catapult/devil/devil/android/decorators.py
//third_party/catapult/devil/devil/android/device_denylist.py
//third_party/catapult/devil/devil/android/device_errors.py
//third_party/catapult/devil/devil/android/device_signal.py
//third_party/catapult/devil/devil/android/device_temp_file.py
//third_party/catapult/devil/devil/android/device_utils.py
//third_party/catapult/devil/devil/android/install_commands.py
//third_party/catapult/devil/devil/android/logcat_monitor.py
//third_party/catapult/devil/devil/android/md5sum.py
//third_party/catapult/devil/devil/android/ndk/__init__.py
//third_party/catapult/devil/devil/android/ndk/abis.py
//third_party/catapult/devil/devil/android/sdk/__init__.py
//third_party/catapult/devil/devil/android/sdk/aapt.py
//third_party/catapult/devil/devil/android/sdk/adb_wrapper.py
//third_party/catapult/devil/devil/android/sdk/build_tools.py
//third_party/catapult/devil/devil/android/sdk/bundletool.py
//third_party/catapult/devil/devil/android/sdk/intent.py
//third_party/catapult/devil/devil/android/sdk/keyevent.py
//third_party/catapult/devil/devil/android/sdk/split_select.py
//third_party/catapult/devil/devil/android/sdk/version_codes.py
//third_party/catapult/devil/devil/android/tools/__init__.py
//third_party/catapult/devil/devil/android/tools/script_common.py
//third_party/catapult/devil/devil/base_error.py
//third_party/catapult/devil/devil/constants/__init__.py
//third_party/catapult/devil/devil/constants/exit_codes.py
//third_party/catapult/devil/devil/devil_env.py
//third_party/catapult/devil/devil/utils/__init__.py
//third_party/catapult/devil/devil/utils/cmd_helper.py
//third_party/catapult/devil/devil/utils/host_utils.py
//third_party/catapult/devil/devil/utils/lazy/__init__.py
//third_party/catapult/devil/devil/utils/lazy/weak_constant.py
//third_party/catapult/devil/devil/utils/logging_common.py
//third_party/catapult/devil/devil/utils/lsusb.py
//third_party/catapult/devil/devil/utils/parallelizer.py
//third_party/catapult/devil/devil/utils/reraiser_thread.py
//third_party/catapult/devil/devil/utils/reset_usb.py
//third_party/catapult/devil/devil/utils/run_tests_helper.py
//third_party/catapult/devil/devil/utils/timeout_retry.py
//third_party/catapult/devil/devil/utils/watchdog_timer.py
//third_party/catapult/devil/devil/utils/zip_utils.py
//third_party/catapult/third_party/zipfile/zipfile_2_7_13.py

View file

@ -1,135 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
import("//testing/test.gni")
# Mark all targets as test only.
testonly = true
group("system_webview_shell") {
deps = [
":system_webview_shell_apk",
":system_webview_shell_layout_test_apk",
":system_webview_shell_page_cycler_apk",
]
}
declare_args() {
# Android package name to use for system_webview_shell_apk (the WebView shell
# browser). You can change this package name to work around signing key
# conflicts (INSTALL_FAILED_UPDATE_INCOMPATIBLE) on devices/emulators which
# have the shell browser preinstalled under the default package name.
system_webview_shell_package_name = "org.chromium.webview_shell"
}
system_webview_shell_android_manifest =
"$root_gen_dir/android_webview/system_webview_shell_apk/AndroidManifest.xml"
android_apk("system_webview_shell_apk") {
apk_name = "SystemWebViewShell"
sources = [
"apk/src/org/chromium/webview_shell/JankActivity.java",
"apk/src/org/chromium/webview_shell/PageCyclerTestActivity.java",
"apk/src/org/chromium/webview_shell/StartupTimeActivity.java",
"apk/src/org/chromium/webview_shell/TelemetryActivity.java",
"apk/src/org/chromium/webview_shell/TelemetryMemoryPressureActivity.java",
"apk/src/org/chromium/webview_shell/WebPlatformTestsActivity.java",
"apk/src/org/chromium/webview_shell/WebViewAnimationTestActivity.java",
"apk/src/org/chromium/webview_shell/WebViewBrowserActivity.java",
"apk/src/org/chromium/webview_shell/WebViewBrowserSecondProcessActivity.java",
"apk/src/org/chromium/webview_shell/WebViewCreateDestroyActivity.java",
"apk/src/org/chromium/webview_shell/WebViewLayoutTestActivity.java",
"apk/src/org/chromium/webview_shell/WebViewPackageHelper.java",
"apk/src/org/chromium/webview_shell/WebViewThreadTestActivity.java",
"apk/src/org/chromium/webview_shell/WebViewTracingActivity.java",
"apk/src/org/chromium/webview_shell/WebViewWithClipPath.java",
]
android_manifest = system_webview_shell_android_manifest
android_manifest_dep = ":system_webview_shell_manifest"
target_sdk_version = 29
deps = [
":system_webview_shell_apk_resources",
"//base:base_java",
"//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/guava:guava_android_java",
]
}
jinja_template("system_webview_shell_manifest") {
input = "apk/AndroidManifest.xml"
output = system_webview_shell_android_manifest
variables = [ "manifest_package=$system_webview_shell_package_name" ]
}
android_resources("system_webview_shell_apk_resources") {
sources = [
"apk/res/drawable-mdpi/breadcrumb_arrow_black.png",
"apk/res/drawable-mdpi/ic_launcher.png",
"apk/res/layout/activity_empty.xml",
"apk/res/layout/activity_web_platform_tests.xml",
"apk/res/layout/activity_web_platform_tests_child.xml",
"apk/res/layout/activity_webview.xml",
"apk/res/layout/activity_webview_animation_test.xml",
"apk/res/layout/activity_webview_browser.xml",
"apk/res/menu/main_menu.xml",
"apk/res/values-night/colors.xml",
"apk/res/values-v17/styles.xml",
"apk/res/values-v29/styles.xml",
"apk/res/values/colors.xml",
"apk/res/values/strings.xml",
"apk/res/values/styles.xml",
"apk/res/xml/network_security_config.xml",
]
custom_package = "org.chromium.webview_shell"
deps = [ "//third_party/android_deps:android_support_v7_appcompat_java" ]
}
instrumentation_test_apk("system_webview_shell_page_cycler_apk") {
apk_name = "SystemWebViewShellPageCycler"
apk_under_test = ":system_webview_shell_apk"
android_manifest = "page_cycler/AndroidManifest.xml"
sources = [ "page_cycler/src/org/chromium/webview_shell/page_cycler/PageCyclerTest.java" ]
deps = [
"//base:base_java",
"//base:base_java_test_support",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
"//testing/android/reporter:reporter_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
]
}
instrumentation_test_apk("system_webview_shell_layout_test_apk") {
apk_name = "SystemWebViewShellLayoutTest"
apk_under_test = ":system_webview_shell_apk"
android_manifest = "layout_tests/AndroidManifest.xml"
sources = [
"layout_tests/src/org/chromium/webview_shell/test/WebPlatformTestsActivityTest.java",
"layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java",
"layout_tests/src/org/chromium/webview_shell/test/WebViewThreadTest.java",
]
deps = [
"//base:base_java",
"//base:base_java_test_support",
"//testing/android/reporter:reporter_java",
"//third_party/android_sdk:android_test_base_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
]
data = [
"test/data/",
"//third_party/blink/web_tests/platform/linux/virtual/stable/webexposed/",
"//third_party/blink/web_tests/platform/mac/virtual/stable/webexposed/",
"//third_party/blink/web_tests/platform/win/virtual/stable/webexposed/",
"//third_party/blink/web_tests/resources/global-interface-listing.js",
"//third_party/blink/web_tests/virtual/stable/webexposed/",
"//third_party/blink/web_tests/webexposed/global-interface-listing.html",
"//third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt",
]
use_webview_provider = system_webview_apk_target
}

View file

@ -1,35 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/channel.gni")
import("//build/config/android/config.gni")
import("//weblayer/variables.gni")
declare_args() {
# Show a launcher icon to open WebView developer UI. This is enabled by
# default for all prestable builds. The icon for Monochrome is shown
# dynamically at runtime if Monochrome is the current selected system WebView
# implementation or hidden otherwise.
webview_devui_show_icon = android_channel != "stable"
}
system_webview_android_manifest =
"$root_gen_dir/android_webview/system_webview_apk/AndroidManifest.xml"
trichrome_webview_android_manifest =
"$root_gen_dir/android_webview/trichrome_webview_apk/AndroidManifest.xml"
trichrome_webview_64_32_android_manifest = "$root_gen_dir/android_webview/trichrome_webview_64_32_apk/AndroidManifest.xml"
trichrome_webview_32_android_manifest =
"$root_gen_dir/android_webview/trichrome_webview_32_apk/AndroidManifest.xml"
upstream_only_webview_deps = [
"//android_webview:platform_service_bridge_upstream_implementation_java",
"//android_webview/nonembedded:icon_resources",
]
if (webview_includes_weblayer) {
upstream_only_webview_deps +=
[ "//weblayer/browser/java:gms_bridge_upstream_impl_java" ]
}
webview_product_config_java_package = "org.chromium.android_webview"

View file

@ -1,35 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/repack.gni")
import("webview_repack_locales_list.gni")
# Wraps repack_locales(), setting the source_patterns and deps required for
# Chrome.
template("webview_repack_locales") {
repack_locales(target_name) {
forward_variables_from(invoker, "*")
if (!defined(deps)) {
deps = []
}
# Adding webview specific pak file? You should add it to
# webview_repack_locales_source_patterns, so it is also included in
# Monochrome.
source_patterns = [
"${root_gen_dir}/android_webview/components_strings_",
"${root_gen_dir}/third_party/blink/public/strings/blink_strings_",
"${root_gen_dir}/ui/strings/app_locale_settings_",
]
deps += [
"//android_webview:generate_components_strings",
"//third_party/blink/public/strings",
"//ui/strings:app_locale_settings",
]
source_patterns += webview_repack_locales_source_patterns
deps += webview_repack_locales_deps
output_dir = "$root_out_dir/android_webview/locales"
}
}

View file

@ -1,10 +0,0 @@
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# For how to add pattern, see additional_source_patterns argument of
# _repack_one_locale in chrome/chrome_repack_locales.gni.
webview_repack_locales_source_patterns =
[ "${root_gen_dir}/android_webview/aw_strings_" ]
webview_repack_locales_deps = [ "//android_webview:generate_aw_strings" ]

View file

@ -1,65 +0,0 @@
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//extensions/buildflags/buildflags.gni")
assert(!is_android && !is_ios)
assert(enable_extensions,
"Cannot depend on extensions because enable_extensions=false.")
static_library("apps") {
sources = []
sources += [
"app_lifetime_monitor.cc",
"app_lifetime_monitor.h",
"app_lifetime_monitor_factory.cc",
"app_lifetime_monitor_factory.h",
"app_restore_service.cc",
"app_restore_service.h",
"app_restore_service_factory.cc",
"app_restore_service_factory.h",
"browser_context_keyed_service_factories.cc",
"browser_context_keyed_service_factories.h",
"launcher.cc",
"launcher.h",
"saved_files_service.cc",
"saved_files_service.h",
"saved_files_service_factory.cc",
"saved_files_service_factory.h",
"switches.cc",
"switches.h",
]
configs += [ "//build/config/compiler:wexit_time_destructors" ]
deps = [
"//base/util/values:values_util",
"//components/keyed_service/content",
"//content/public/browser",
"//content/public/common",
"//extensions/browser",
"//extensions/common",
"//extensions/common/api",
]
if (is_chromeos) {
deps += [ "//components/user_manager" ]
}
}
static_library("test_support") {
testonly = true
sources = [
"test/app_window_waiter.cc",
"test/app_window_waiter.h",
]
public_deps = [
"//content/public/browser",
"//extensions/browser",
]
}

View file

@ -1,26 +0,0 @@
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/ui.gni")
import("//extensions/buildflags/buildflags.gni")
assert(enable_extensions)
source_set("views") {
sources = [
"app_window_frame_view.cc",
"app_window_frame_view.h",
]
deps = [
"//cc/paint",
"//chrome/app/theme:theme_resources",
"//extensions/browser",
"//extensions/common",
"//skia",
"//ui/gfx",
"//ui/strings",
"//ui/views",
]
}

File diff suppressed because it is too large Load diff

View file

@ -1,267 +0,0 @@
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/ui.gni")
import("//testing/test.gni")
assert(is_chromeos)
component("app_list") {
sources = [
"app_list_export.h",
"app_list_metrics.cc",
"app_list_metrics.h",
"app_list_presenter_delegate.h",
"app_list_presenter_impl.cc",
"app_list_presenter_impl.h",
"app_list_util.cc",
"app_list_util.h",
"app_list_view_delegate.h",
"paged_view_structure.cc",
"paged_view_structure.h",
"views/app_list_drag_and_drop_host.h",
"views/app_list_folder_view.cc",
"views/app_list_folder_view.h",
"views/app_list_item_view.cc",
"views/app_list_item_view.h",
"views/app_list_main_view.cc",
"views/app_list_main_view.h",
"views/app_list_menu_model_adapter.cc",
"views/app_list_menu_model_adapter.h",
"views/app_list_page.cc",
"views/app_list_page.h",
"views/app_list_view.cc",
"views/app_list_view.h",
"views/apps_container_view.cc",
"views/apps_container_view.h",
"views/apps_grid_view.cc",
"views/apps_grid_view.h",
"views/apps_grid_view_folder_delegate.h",
"views/assistant/assistant_dialog_plate.cc",
"views/assistant/assistant_dialog_plate.h",
"views/assistant/assistant_main_stage.cc",
"views/assistant/assistant_main_stage.h",
"views/assistant/assistant_main_view.cc",
"views/assistant/assistant_main_view.h",
"views/assistant/assistant_page_view.cc",
"views/assistant/assistant_page_view.h",
"views/assistant/assistant_privacy_info_view.cc",
"views/assistant/assistant_privacy_info_view.h",
"views/contents_view.cc",
"views/contents_view.h",
"views/expand_arrow_view.cc",
"views/expand_arrow_view.h",
"views/folder_background_view.cc",
"views/folder_background_view.h",
"views/folder_header_view.cc",
"views/folder_header_view.h",
"views/folder_header_view_delegate.h",
"views/ghost_image_view.cc",
"views/ghost_image_view.h",
"views/page_switcher.cc",
"views/page_switcher.h",
"views/privacy_info_view.cc",
"views/privacy_info_view.h",
"views/pulsing_block_view.cc",
"views/pulsing_block_view.h",
"views/remove_query_confirmation_dialog.cc",
"views/remove_query_confirmation_dialog.h",
"views/result_selection_controller.cc",
"views/result_selection_controller.h",
"views/search_box_view.cc",
"views/search_box_view.h",
"views/search_result_actions_view.cc",
"views/search_result_actions_view.h",
"views/search_result_actions_view_delegate.h",
"views/search_result_answer_card_view.cc",
"views/search_result_answer_card_view.h",
"views/search_result_base_view.cc",
"views/search_result_base_view.h",
"views/search_result_container_view.cc",
"views/search_result_container_view.h",
"views/search_result_list_view.cc",
"views/search_result_list_view.h",
"views/search_result_page_anchored_dialog.cc",
"views/search_result_page_anchored_dialog.h",
"views/search_result_page_view.cc",
"views/search_result_page_view.h",
"views/search_result_suggestion_chip_view.cc",
"views/search_result_suggestion_chip_view.h",
"views/search_result_tile_item_list_view.cc",
"views/search_result_tile_item_list_view.h",
"views/search_result_tile_item_view.cc",
"views/search_result_tile_item_view.h",
"views/search_result_view.cc",
"views/search_result_view.h",
"views/suggested_content_info_view.cc",
"views/suggested_content_info_view.h",
"views/suggestion_chip_container_view.cc",
"views/suggestion_chip_container_view.h",
"views/top_icon_animation_view.cc",
"views/top_icon_animation_view.h",
]
defines = [ "APP_LIST_IMPLEMENTATION" ]
deps = [
"//ash/app_list/resources",
"//ash/app_menu",
"//ash/assistant/model",
"//ash/assistant/ui",
"//ash/assistant/ui:constants",
"//ash/assistant/util",
"//ash/keyboard/ui",
"//ash/public/cpp/app_list/vector_icons",
"//ash/public/cpp/vector_icons",
"//ash/resources/vector_icons",
"//ash/strings",
"//base",
"//base:i18n",
"//base/third_party/dynamic_annotations",
"//cc/paint",
"//chromeos:chromeos",
"//chromeos/services/assistant/public/cpp",
"//components/keyed_service/core",
"//components/sync",
"//mojo/public/cpp/bindings",
"//services/content/public/cpp",
"//skia",
"//third_party/icu",
"//ui/accessibility",
"//ui/aura",
"//ui/base",
"//ui/base/ime",
"//ui/base/ime/chromeos",
"//ui/chromeos/search_box",
"//ui/compositor",
"//ui/compositor_extra",
"//ui/display",
"//ui/events",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/resources",
"//ui/strings",
"//ui/views",
"//ui/wm",
"//ui/wm/public",
]
# TODO(hejq): Remove this once app_list is migrated. http://crbug.com/733662
public_deps = [
"//ash/app_list/model:app_list_model",
"//ash/app_list/model:search_model",
"//ash/public/cpp",
"//base",
"//mojo/public/cpp/bindings",
"//services/content/public/mojom",
"//ui/aura",
"//ui/compositor",
"//ui/gfx/geometry",
"//ui/views",
"//ui/wm",
"//ui/wm/public",
]
}
static_library("test_support") {
testonly = true
sources = [
"test/app_list_test_model.cc",
"test/app_list_test_model.h",
"test/app_list_test_view_delegate.cc",
"test/app_list_test_view_delegate.h",
"test/test_search_result.cc",
"test/test_search_result.h",
"views/test/apps_grid_view_test_api.cc",
"views/test/apps_grid_view_test_api.h",
]
deps = [
":app_list",
"//base",
"//services/content/public/cpp/test:test_support",
"//ui/base:base",
"//ui/events",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/views",
]
}
executable("app_list_demo") {
testonly = true
sources = [ "demo/app_list_demo_views.cc" ]
deps = [
":app_list",
":test_support",
"//base",
"//build/win:default_exe_manifest",
"//content",
"//content/public/browser",
"//skia",
"//ui/base",
"//ui/events",
"//ui/resources",
"//ui/resources:ui_test_pak",
"//ui/views",
"//ui/views_content_client",
"//url",
]
}
test("app_list_unittests") {
sources = [
"folder_image_unittest.cc",
"test/run_all_unittests.cc",
"views/app_list_main_view_unittest.cc",
"views/app_list_menu_model_adapter_unittest.cc",
"views/app_list_view_unittest.cc",
"views/apps_grid_view_unittest.cc",
"views/folder_header_view_unittest.cc",
"views/result_selection_controller_unittest.cc",
"views/search_box_view_unittest.cc",
"views/search_result_answer_card_view_unittest.cc",
"views/search_result_list_view_unittest.cc",
"views/search_result_page_view_unittest.cc",
"views/search_result_tile_item_list_view_unittest.cc",
]
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":app_list",
":test_support",
"//ash/keyboard/ui",
"//ash/public/cpp/app_list/vector_icons",
"//base",
"//base/test:test_support",
"//chromeos/constants",
"//chromeos/services/assistant/public/cpp",
"//mojo/core/embedder",
"//mojo/public/cpp/bindings",
"//services/content/public/cpp",
"//services/content/public/cpp/test:test_support",
"//services/content/public/mojom",
"//skia",
"//testing/gtest",
"//ui/accessibility",
"//ui/base",
"//ui/chromeos/search_box",
"//ui/compositor",
"//ui/events:test_support",
"//ui/gfx:test_support",
"//ui/gl:test_support",
"//ui/resources",
"//ui/views",
"//ui/views:test_support",
]
data_deps = [
"//third_party/mesa_headers",
"//ui/resources:ui_test_pak_data",
]
}

View file

@ -1,56 +0,0 @@
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
component("app_list_model") {
sources = [
"app_list_folder_item.cc",
"app_list_folder_item.h",
"app_list_item.cc",
"app_list_item.h",
"app_list_item_list.cc",
"app_list_item_list.h",
"app_list_item_list_observer.h",
"app_list_item_observer.h",
"app_list_model.cc",
"app_list_model.h",
"app_list_model_observer.h",
"folder_image.cc",
"folder_image.h",
]
defines = [ "APP_LIST_MODEL_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp:cpp",
"//base:i18n",
"//cc/paint",
"//components/sync",
"//skia",
"//third_party/icu",
"//ui/base",
"//ui/gfx",
]
}
component("search_model") {
sources = [
"search/search_box_model.cc",
"search/search_box_model.h",
"search/search_box_model_observer.h",
"search/search_model.cc",
"search/search_model.h",
"search/search_result.cc",
"search/search_result.h",
"search/search_result_observer.h",
]
defines = [ "APP_LIST_MODEL_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp:cpp",
"//base:i18n",
"//ui/base",
"//ui/gfx",
]
}

View file

@ -1,20 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni")
group("resources") {
public_deps = [ ":resources_grd" ]
}
grit("resources_grd") {
source = "app_list_resources.grd"
outputs = [
"grit/app_list_resources.h",
"app_list_resources_100_percent.pak",
"app_list_resources_200_percent.pak",
"app_list_resources_300_percent.pak",
]
}

View file

@ -1,36 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/ui.gni")
assert(is_chromeos)
component("app_menu") {
sources = [
"app_menu_model_adapter.cc",
"app_menu_model_adapter.h",
"notification_item_view.cc",
"notification_item_view.h",
"notification_menu_controller.cc",
"notification_menu_controller.h",
"notification_menu_header_view.cc",
"notification_menu_header_view.h",
"notification_menu_view.cc",
"notification_menu_view.h",
"notification_overflow_view.cc",
"notification_overflow_view.h",
]
defines = [ "APP_MENU_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp",
"//base",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/message_center",
"//ui/strings:ui_strings_grit",
"//ui/views",
]
}

View file

@ -1,55 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
assert(is_chromeos)
component("model") {
output_name = "assistant_model"
defines = [ "IS_ASSISTANT_MODEL_IMPL" ]
sources = [
"assistant_alarm_timer_model.cc",
"assistant_alarm_timer_model.h",
"assistant_alarm_timer_model_observer.h",
"assistant_interaction_model.cc",
"assistant_interaction_model.h",
"assistant_interaction_model_observer.h",
"assistant_notification_model.cc",
"assistant_notification_model.h",
"assistant_notification_model_observer.h",
"assistant_query.cc",
"assistant_query.h",
"assistant_query_history.cc",
"assistant_query_history.h",
"assistant_response.cc",
"assistant_response.h",
"assistant_response_observer.h",
"assistant_screen_context_model.cc",
"assistant_screen_context_model.h",
"assistant_screen_context_model_observer.h",
"assistant_suggestions_model.cc",
"assistant_suggestions_model.h",
"assistant_suggestions_model_observer.h",
"assistant_ui_model.cc",
"assistant_ui_model.h",
"assistant_ui_model_observer.h",
"ui/assistant_card_element.cc",
"ui/assistant_card_element.h",
"ui/assistant_text_element.cc",
"ui/assistant_text_element.h",
"ui/assistant_ui_element.cc",
"ui/assistant_ui_element.h",
]
deps = [
"//ash/assistant/ui:constants",
"//ash/public/cpp",
"//chromeos/services/assistant/public/cpp",
"//chromeos/services/assistant/public/mojom",
"//services/content/public/cpp",
"//ui/accessibility/mojom",
"//ui/gfx/geometry",
]
}

View file

@ -1,117 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/ui.gni")
import("//chromeos/assistant/assistant.gni")
assert(is_chromeos)
component("constants") {
output_name = "assistant_ui_constants"
defines = [ "IS_ASSISTANT_UI_CONSTANTS_IMPL" ]
sources = [
"assistant_ui_constants.cc",
"assistant_ui_constants.h",
]
deps = [
"//base",
"//skia",
"//ui/aura",
"//ui/base",
"//ui/gfx",
]
}
component("ui") {
output_name = "assistant_ui"
defines = [ "IS_ASSISTANT_UI_IMPL" ]
sources = [
"assistant_view_delegate.h",
"assistant_view_ids.h",
"assistant_web_container_view.cc",
"assistant_web_container_view.h",
"assistant_web_view_delegate.h",
"base/assistant_button.cc",
"base/assistant_button.h",
"base/assistant_button_listener.h",
"base/assistant_scroll_view.cc",
"base/assistant_scroll_view.h",
"base/stack_layout.cc",
"base/stack_layout.h",
"dialog_plate/mic_view.cc",
"dialog_plate/mic_view.h",
"logo_view/logo_view.cc",
"logo_view/logo_view.h",
"main_stage/animated_container_view.cc",
"main_stage/animated_container_view.h",
"main_stage/assistant_card_element_view.cc",
"main_stage/assistant_card_element_view.h",
"main_stage/assistant_footer_view.cc",
"main_stage/assistant_footer_view.h",
"main_stage/assistant_onboarding_view.cc",
"main_stage/assistant_onboarding_view.h",
"main_stage/assistant_opt_in_view.cc",
"main_stage/assistant_opt_in_view.h",
"main_stage/assistant_progress_indicator.cc",
"main_stage/assistant_progress_indicator.h",
"main_stage/assistant_query_view.cc",
"main_stage/assistant_query_view.h",
"main_stage/assistant_text_element_view.cc",
"main_stage/assistant_text_element_view.h",
"main_stage/assistant_ui_element_view.cc",
"main_stage/assistant_ui_element_view.h",
"main_stage/assistant_ui_element_view_factory.cc",
"main_stage/assistant_ui_element_view_factory.h",
"main_stage/assistant_zero_state_view.cc",
"main_stage/assistant_zero_state_view.h",
"main_stage/element_animator.cc",
"main_stage/element_animator.h",
"main_stage/suggestion_chip_view.cc",
"main_stage/suggestion_chip_view.h",
"main_stage/suggestion_container_view.cc",
"main_stage/suggestion_container_view.h",
"main_stage/ui_element_container_view.cc",
"main_stage/ui_element_container_view.h",
]
deps = [
"//ash/assistant/model",
"//ash/assistant/ui:constants",
"//ash/assistant/util",
"//ash/keyboard/ui",
"//ash/public/cpp",
"//ash/public/cpp/vector_icons",
"//ash/resources/vector_icons",
"//ash/strings",
"//base",
"//chromeos/assistant:buildflags",
"//chromeos/services/assistant/public/cpp",
"//chromeos/services/assistant/public/mojom",
"//services/content/public/cpp",
"//ui/aura",
"//ui/compositor",
"//ui/gfx",
"//ui/views",
"//ui/views/window/vector_icons",
"//ui/wm",
]
if (enable_cros_libassistant) {
sources += [
"logo_view/logo_view_impl.cc",
"logo_view/logo_view_impl.h",
"logo_view/shape/mic_part_shape.cc",
"logo_view/shape/mic_part_shape.h",
"logo_view/shape/shape.cc",
"logo_view/shape/shape.h",
]
deps += [ "//chromeos/assistant/internal/logo_view" ]
}
}

View file

@ -1,20 +0,0 @@
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
static_library("test_support") {
testonly = true
sources = [
"mock_assistant_view_delegate.cc",
"mock_assistant_view_delegate.h",
]
deps = [
"//ash/assistant/ui",
"//base",
"//testing/gmock",
"//testing/gtest",
"//ui/gfx",
]
}

View file

@ -1,38 +0,0 @@
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
assert(is_chromeos)
component("util") {
output_name = "assistant_util"
defines = [ "IS_ASSISTANT_UTIL_IMPL" ]
sources = [
"animation_util.cc",
"animation_util.h",
"assistant_util.cc",
"assistant_util.h",
"deep_link_util.cc",
"deep_link_util.h",
"histogram_util.cc",
"histogram_util.h",
"i18n_util.cc",
"i18n_util.h",
]
deps = [
"//ash/assistant/model",
"//base",
"//base:i18n",
"//chromeos/constants",
"//chromeos/services/assistant/public/cpp",
"//chromeos/services/assistant/public/mojom",
"//net",
"//ui/base",
"//ui/gfx",
"//ui/views",
"//url",
]
}

View file

@ -1,177 +0,0 @@
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/jumbo.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//testing/test.gni")
import("//third_party/google_input_tools/closure.gni")
import("//third_party/google_input_tools/inputview.gni")
import("//tools/grit/grit_rule.gni")
assert(is_chromeos)
jumbo_component("ui") {
sources = [
"container_behavior.cc",
"container_behavior.h",
"container_floating_behavior.cc",
"container_floating_behavior.h",
"container_full_width_behavior.cc",
"container_full_width_behavior.h",
"display_util.cc",
"display_util.h",
"drag_descriptor.h",
"keyboard_event_handler.cc",
"keyboard_event_handler.h",
"keyboard_export.h",
"keyboard_layout_delegate.h",
"keyboard_layout_manager.cc",
"keyboard_layout_manager.h",
"keyboard_ui.cc",
"keyboard_ui.h",
"keyboard_ui_controller.cc",
"keyboard_ui_controller.h",
"keyboard_ui_factory.cc",
"keyboard_ui_factory.h",
"keyboard_ui_model.cc",
"keyboard_ui_model.h",
"keyboard_ukm_recorder.cc",
"keyboard_ukm_recorder.h",
"keyboard_util.cc",
"keyboard_util.h",
"notification_manager.cc",
"notification_manager.h",
"queued_container_type.cc",
"queued_container_type.h",
"queued_display_change.cc",
"queued_display_change.h",
"resources/keyboard_resource_util.cc",
"resources/keyboard_resource_util.h",
"shaped_window_targeter.cc",
"shaped_window_targeter.h",
]
defines = [ "KEYBOARD_IMPLEMENTATION" ]
deps = [
":resources",
"//ash/public/cpp",
"//base",
"//services/metrics/public/cpp:ukm_builders",
"//ui/aura",
"//ui/base",
"//ui/base/ime",
"//ui/compositor",
"//ui/display:display",
"//ui/events",
"//ui/events:dom_keycode_converter",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/wm",
]
if (use_ozone) {
deps += [ "//ui/ozone" ]
}
data_deps = [ ":resources" ]
}
static_library("test_support") {
testonly = true
sources = [
"test/keyboard_test_util.cc",
"test/keyboard_test_util.h",
"test/test_keyboard_controller_observer.cc",
"test/test_keyboard_controller_observer.h",
"test/test_keyboard_layout_delegate.cc",
"test/test_keyboard_layout_delegate.h",
"test/test_keyboard_ui_factory.cc",
"test/test_keyboard_ui_factory.h",
]
deps = [
":ui",
"//ash/public/cpp",
"//base",
"//ui/aura",
"//ui/aura:test_support",
"//ui/base:test_support",
"//ui/display",
]
}
grit("resources_grit") {
source = "keyboard_resources.grd"
outputs = [
"grit/keyboard_resources.h",
"grit/keyboard_resources_map.h",
"keyboard_resources.pak",
]
input_tools_root_dir = "//third_party/google_input_tools/src/chrome/os"
inputview_gen_js = "$root_gen_dir/ash/keyboard/ui/resources/inputview.js"
grit_flags = [
"-E",
"input_tools_root_dir=" + rebase_path(input_tools_root_dir, "."),
"-E",
"inputview_gen_js=" + rebase_path(inputview_gen_js, root_build_dir),
]
deps = [ ":inputview" ]
}
copy("resources") {
sources = [ "$target_gen_dir/keyboard_resources.pak" ]
outputs = [ "$root_out_dir/keyboard_resources.pak" ]
public_deps = [ ":resources_grit" ]
}
build_closure("inputview") {
sources = inputview_sources
target = "$target_gen_dir/resources/inputview.js"
path = rebase_path("//third_party/google_input_tools")
}
test("keyboard_unittests") {
sources = [
"container_floating_behavior_unittest.cc",
"container_full_width_behavior_unittest.cc",
"keyboard_event_handler_unittest.cc",
"keyboard_ui_controller_unittest.cc",
"keyboard_ui_model_unittest.cc",
"keyboard_ukm_recorder_unittest.cc",
"keyboard_util_unittest.cc",
"notification_manager_unittest.cc",
"test/run_all_unittests.cc",
]
deps = [
":test_support",
":ui",
"//ash/public/cpp",
"//base",
"//base/test:test_support",
"//components/ukm:test_support",
"//mojo/core/embedder",
"//testing/gmock",
"//testing/gtest",
"//ui/aura:test_support",
"//ui/base",
"//ui/base:test_support",
"//ui/base/ime/init",
"//ui/compositor:test_support",
"//ui/events:test_support",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/gl:test_support",
"//ui/resources:ui_test_pak",
"//ui/wm",
]
data_deps = [ "//ui/resources:ui_test_pak_data" ]
if (use_ozone) {
deps += [ "//ui/ozone" ]
}
}

View file

@ -1,17 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/grit_rule.gni")
grit("resources") {
source = "login_resources.grd"
outputs = [
"grit/login_resources.h",
"grit/login_resources_map.cc",
"grit/login_resources_map.h",
"login_resources_100_percent.pak",
"login_resources_200_percent.pak",
"login_resources_300_percent.pak",
]
}

View file

@ -1,374 +0,0 @@
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//mojo/public/tools/bindings/mojom.gni")
# C++ headers and sources that can be used outside ash.
component("cpp") {
sources = [
"accelerators.cc",
"accelerators.h",
"accessibility_controller.cc",
"accessibility_controller.h",
"accessibility_controller_client.h",
"accessibility_controller_enums.h",
"accessibility_focus_ring_controller.cc",
"accessibility_focus_ring_controller.h",
"accessibility_focus_ring_info.cc",
"accessibility_focus_ring_info.h",
"ambient/ambient_backend_controller.cc",
"ambient/ambient_backend_controller.h",
"ambient/ambient_client.cc",
"ambient/ambient_client.h",
"ambient/ambient_prefs.cc",
"ambient/ambient_prefs.h",
"ambient/ambient_ui_model.cc",
"ambient/ambient_ui_model.h",
"ambient/common/ambient_settings.cc",
"ambient/common/ambient_settings.h",
"android_intent_helper.cc",
"android_intent_helper.h",
"app_list/app_list_client.h",
"app_list/app_list_config.cc",
"app_list/app_list_config.h",
"app_list/app_list_config_provider.cc",
"app_list/app_list_config_provider.h",
"app_list/app_list_controller.cc",
"app_list/app_list_controller.h",
"app_list/app_list_controller_observer.h",
"app_list/app_list_features.cc",
"app_list/app_list_features.h",
"app_list/app_list_metrics.cc",
"app_list/app_list_metrics.h",
"app_list/app_list_notifier.h",
"app_list/app_list_switches.cc",
"app_list/app_list_switches.h",
"app_list/app_list_types.cc",
"app_list/app_list_types.h",
"app_list/internal_app_id_constants.h",
"app_menu_constants.h",
"app_types.h",
"arc_app_id_provider.cc",
"arc_app_id_provider.h",
"ash_constants.h",
"ash_features.cc",
"ash_features.h",
"ash_pref_names.cc",
"ash_pref_names.h",
"ash_public_export.h",
"ash_switches.cc",
"ash_switches.h",
"ash_typography.cc",
"ash_typography.h",
"ash_view_ids.h",
"assistant/assistant_client.cc",
"assistant/assistant_client.h",
"assistant/assistant_interface_binder.cc",
"assistant/assistant_interface_binder.h",
"assistant/assistant_setup.cc",
"assistant/assistant_setup.h",
"assistant/assistant_state.cc",
"assistant/assistant_state.h",
"assistant/assistant_state_base.cc",
"assistant/assistant_state_base.h",
"assistant/assistant_web_view.cc",
"assistant/assistant_web_view.h",
"assistant/assistant_web_view_factory.cc",
"assistant/assistant_web_view_factory.h",
"assistant/controller/assistant_alarm_timer_controller.cc",
"assistant/controller/assistant_alarm_timer_controller.h",
"assistant/controller/assistant_controller.cc",
"assistant/controller/assistant_controller.h",
"assistant/controller/assistant_controller_observer.h",
"assistant/controller/assistant_interaction_controller.cc",
"assistant/controller/assistant_interaction_controller.h",
"assistant/controller/assistant_screen_context_controller.cc",
"assistant/controller/assistant_screen_context_controller.h",
"assistant/controller/assistant_suggestions_controller.cc",
"assistant/controller/assistant_suggestions_controller.h",
"assistant/controller/assistant_ui_controller.cc",
"assistant/controller/assistant_ui_controller.h",
"assistant/conversation_starter.cc",
"assistant/conversation_starter.h",
"assistant/conversation_starters_client.cc",
"assistant/conversation_starters_client.h",
"back_gesture_contextual_nudge_controller.h",
"back_gesture_contextual_nudge_delegate.h",
"caption_buttons/caption_button_model.h",
"caption_buttons/frame_back_button.cc",
"caption_buttons/frame_back_button.h",
"caption_buttons/frame_caption_button_container_view.cc",
"caption_buttons/frame_caption_button_container_view.h",
"caption_buttons/frame_size_button.cc",
"caption_buttons/frame_size_button.h",
"caption_buttons/frame_size_button_delegate.h",
"caption_buttons/snap_controller.cc",
"caption_buttons/snap_controller.h",
"cast_config_controller.cc",
"cast_config_controller.h",
"default_frame_header.cc",
"default_frame_header.h",
"default_scale_factor_retriever.cc",
"default_scale_factor_retriever.h",
"desks_helper.cc",
"desks_helper.h",
"fps_counter.cc",
"fps_counter.h",
"frame_header.cc",
"frame_header.h",
"frame_utils.cc",
"frame_utils.h",
"gesture_action_type.h",
"image_downloader.cc",
"image_downloader.h",
"ime_controller.cc",
"ime_controller.h",
"ime_controller_client.h",
"ime_info.cc",
"ime_info.h",
"immersive/immersive_context.cc",
"immersive/immersive_context.h",
"immersive/immersive_focus_watcher.cc",
"immersive/immersive_focus_watcher.h",
"immersive/immersive_fullscreen_controller.cc",
"immersive/immersive_fullscreen_controller.h",
"immersive/immersive_fullscreen_controller_delegate.h",
"immersive/immersive_revealed_lock.cc",
"immersive/immersive_revealed_lock.h",
"keyboard/arc/arc_input_method_bounds_tracker.cc",
"keyboard/arc/arc_input_method_bounds_tracker.h",
"keyboard/keyboard_config.h",
"keyboard/keyboard_controller.cc",
"keyboard/keyboard_controller.h",
"keyboard/keyboard_controller_observer.h",
"keyboard/keyboard_switches.cc",
"keyboard/keyboard_switches.h",
"keyboard/keyboard_types.h",
"keyboard_shortcut_viewer.h",
"kiosk_app_menu.cc",
"kiosk_app_menu.h",
"locale_update_controller.cc",
"locale_update_controller.h",
"lock_screen_widget_factory.cc",
"lock_screen_widget_factory.h",
"login_constants.h",
"login_screen.cc",
"login_screen.h",
"login_screen_client.h",
"login_screen_model.cc",
"login_screen_model.h",
"login_screen_test_api.h",
"login_types.cc",
"login_types.h",
"media_client.h",
"media_controller.cc",
"media_controller.h",
"message_center/arc_notification_constants.h",
"message_center/arc_notification_manager_base.cc",
"message_center/arc_notification_manager_base.h",
"message_center/arc_notification_manager_delegate.h",
"message_center/arc_notifications_host_initializer.cc",
"message_center/arc_notifications_host_initializer.h",
"metrics_util.cc",
"metrics_util.h",
"network_config_service.cc",
"network_config_service.h",
"network_icon_image_source.cc",
"network_icon_image_source.h",
"new_window_delegate.cc",
"new_window_delegate.h",
"night_light_controller.cc",
"night_light_controller.h",
"note_taking_client.cc",
"note_taking_client.h",
"notification_utils.cc",
"notification_utils.h",
"notifier_metadata.cc",
"notifier_metadata.h",
"notifier_settings_controller.cc",
"notifier_settings_controller.h",
"notifier_settings_observer.h",
"pagination/pagination_controller.cc",
"pagination/pagination_controller.h",
"pagination/pagination_model.cc",
"pagination/pagination_model.h",
"pagination/pagination_model_observer.h",
"power_utils.cc",
"power_utils.h",
"presentation_time_recorder.cc",
"presentation_time_recorder.h",
"quick_answers/controller/quick_answers_controller.cc",
"quick_answers/controller/quick_answers_controller.h",
"rounded_corner_decorator.cc",
"rounded_corner_decorator.h",
"scale_utility.cc",
"scale_utility.h",
"scoped_guest_button_blocker.h",
"scoped_singleton_resetter_for_test.h",
"screen_backlight.cc",
"screen_backlight.h",
"screen_backlight_observer.h",
"screen_backlight_type.h",
"select_to_speak_event_handler_delegate.h",
"session/session_activation_observer.h",
"session/session_controller.cc",
"session/session_controller.h",
"session/session_controller_client.h",
"session/session_types.cc",
"session/session_types.h",
"session/user_info.cc",
"session/user_info.h",
"shelf_item.cc",
"shelf_item.h",
"shelf_item_delegate.cc",
"shelf_item_delegate.h",
"shelf_model.cc",
"shelf_model.h",
"shelf_model_observer.h",
"shelf_prefs.cc",
"shelf_prefs.h",
"shelf_types.cc",
"shelf_types.h",
"shelf_ui_info.cc",
"shelf_ui_info.h",
"shell_window_ids.cc",
"shell_window_ids.h",
"shutdown_controller.cc",
"shutdown_controller.h",
"spoken_feedback_event_rewriter_delegate.h",
"stylus_utils.cc",
"stylus_utils.h",
"switch_access_event_handler_delegate.h",
"system_tray.cc",
"system_tray.h",
"system_tray_client.h",
"system_tray_focus_observer.h",
"tablet_mode.cc",
"tablet_mode.h",
"tablet_mode_observer.h",
"toast_data.cc",
"toast_data.h",
"toast_manager.cc",
"toast_manager.h",
"update_types.h",
"view_shadow.cc",
"view_shadow.h",
"wallpaper_controller.cc",
"wallpaper_controller.h",
"wallpaper_controller_client.h",
"wallpaper_controller_observer.cc",
"wallpaper_controller_observer.h",
"wallpaper_info.h",
"wallpaper_types.h",
"window_animation_types.h",
"window_backdrop.cc",
"window_backdrop.h",
"window_pin_type.cc",
"window_pin_type.h",
"window_properties.cc",
"window_properties.h",
"window_state_type.cc",
"window_state_type.h",
]
defines = [ "ASH_PUBLIC_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp/vector_icons",
"//chromeos/constants",
"//chromeos/dbus/power:power_manager_proto",
"//chromeos/services/assistant/public/cpp",
"//chromeos/services/network_config:in_process_instance",
"//components/prefs",
"//components/sync:rest_of_sync",
"//mojo/public/cpp/bindings",
"//net/traffic_annotation",
"//services/network/public/cpp:cpp",
"//skia/public/mojom",
"//ui/aura",
"//ui/chromeos/strings",
"//ui/compositor_extra",
"//ui/display",
"//ui/events/devices",
"//ui/message_center/public/cpp",
"//ui/views",
"//ui/views/window/vector_icons",
"//ui/wm",
"//ui/wm/public",
]
public_deps = [
"//ash/public/mojom",
"//base",
"//chromeos/components/security_token_pin",
"//chromeos/services/assistant/public/mojom",
"//chromeos/services/network_config/public/mojom",
"//components/arc/mojom:notifications",
"//components/session_manager:base",
"//components/user_manager",
"//ui/base/ime/chromeos:ime_types",
"//ui/gfx",
]
output_name = "ash_public_cpp"
}
source_set("unit_tests") {
testonly = true
sources = [
"android_intent_helper_unittest.cc",
"app_list/app_list_config_provider_unittest.cc",
"default_scale_factor_retriever_unittest.cc",
"pagination/pagination_model_unittest.cc",
"power_utils_unittest.cc",
"rounded_corner_decorator_unittest.cc",
"shelf_model_unittest.cc",
"view_shadow_unittest.cc",
]
deps = [
":cpp",
"//base",
"//base/test:test_support",
"//mojo/public/cpp/bindings",
"//testing/gtest",
"//ui/aura:test_support",
"//ui/compositor_extra",
"//ui/gfx:test_support",
"//ui/views",
"//ui/views:test_support",
]
}
source_set("test_support") {
testonly = true
sources = [
"immersive/immersive_fullscreen_controller_test_api.cc",
"immersive/immersive_fullscreen_controller_test_api.h",
"test/test_ambient_client.cc",
"test/test_ambient_client.h",
"test/test_image_downloader.cc",
"test/test_image_downloader.h",
"test/test_keyboard_controller_observer.cc",
"test/test_keyboard_controller_observer.h",
"test/test_new_window_delegate.cc",
"test/test_new_window_delegate.h",
"test/test_system_tray_client.cc",
"test/test_system_tray_client.h",
"test/test_tablet_mode.cc",
"test/test_tablet_mode.h",
]
deps = [
":cpp",
"//base",
"//services/device/public/cpp:test_support",
"//services/network/public/cpp:cpp",
"//ui/aura",
"//ui/aura:test_support",
"//ui/gfx",
"//ui/gfx:test_support",
"//ui/views",
]
}

View file

@ -1,40 +0,0 @@
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//components/vector_icons/vector_icons.gni")
aggregate_vector_icons("app_list_vector_icons") {
icon_directory = "."
icons = [
"arrow_up.icon",
"badge_instant.icon",
"badge_play.icon",
"badge_rating.icon",
"bookmark.icon",
"domain.icon",
"equal.icon",
"google_black.icon",
"google_color.icon",
"history.icon",
"mic_black.icon",
"search.icon",
"search_engine_not_google.icon",
"search_result_append.icon",
"search_result_remove.icon",
"vertical_bar_end.icon",
"vertical_bar_middle.icon",
"vertical_bar_single.icon",
"vertical_bar_start.icon",
]
}
source_set("vector_icons") {
sources = get_target_outputs(":app_list_vector_icons")
deps = [
":app_list_vector_icons",
"//skia",
]
}

View file

@ -1,14 +0,0 @@
static_library("test_support") {
testonly = true
sources = [
"mock_assistant_controller.cc",
"mock_assistant_controller.h",
]
deps = [
"//ash/public/cpp",
"//testing/gmock",
"//url",
]
}

View file

@ -1,89 +0,0 @@
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/ui.gni")
static_library("external_arc") {
sources = [
"keyboard/arc_input_method_surface_manager.cc",
"keyboard/arc_input_method_surface_manager.h",
"message_center/arc_notification_content_view.cc",
"message_center/arc_notification_content_view.h",
"message_center/arc_notification_delegate.cc",
"message_center/arc_notification_delegate.h",
"message_center/arc_notification_item.h",
"message_center/arc_notification_item_impl.cc",
"message_center/arc_notification_item_impl.h",
"message_center/arc_notification_manager.cc",
"message_center/arc_notification_manager.h",
"message_center/arc_notification_surface.h",
"message_center/arc_notification_surface_impl.cc",
"message_center/arc_notification_surface_impl.h",
"message_center/arc_notification_surface_manager.cc",
"message_center/arc_notification_surface_manager.h",
"message_center/arc_notification_surface_manager_impl.cc",
"message_center/arc_notification_surface_manager_impl.h",
"message_center/arc_notification_view.cc",
"message_center/arc_notification_view.h",
]
defines = [ "ASH_PUBLIC_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp",
"//base",
"//components/account_id",
"//components/arc:arc_metrics_constants",
"//components/arc:connection_holder",
"//components/arc/mojom:notifications",
"//components/exo",
"//mojo/public/cpp/system",
"//ui/message_center",
"//ui/views",
"//ui/wm",
]
}
source_set("unit_tests") {
testonly = true
sources = [
"keyboard/arc_input_method_surface_manager_unittest.cc",
"message_center/arc_notification_content_view_unittest.cc",
"message_center/arc_notification_manager_unittest.cc",
"message_center/arc_notification_view_unittest.cc",
]
public_deps = [ "//ash:test_support" ]
deps = [
":external_arc",
":test_support",
"//ash",
"//ash:test_support",
"//ash/public/cpp",
"//base/test:test_support",
"//components/arc:connection_holder",
"//components/arc:notification_test_support",
"//components/exo",
"//components/exo:test_support",
"//testing/gmock",
"//ui/aura:test_support",
"//ui/base:test_support",
"//ui/events:test_support",
"//ui/message_center:test_support",
"//ui/views:test_support",
]
assert_no_deps = [ "//compponents/arc:arc_base" ]
}
source_set("test_support") {
testonly = true
sources = [
"message_center/mock_arc_notification_item.cc",
"message_center/mock_arc_notification_item.h",
"message_center/mock_arc_notification_surface.cc",
"message_center/mock_arc_notification_surface.h",
]
deps = [
":external_arc",
"//ash/public/cpp",
"//base",
"//ui/aura",
]
}

View file

@ -1,13 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/grit_rule.gni")
grit("ash_public_unscaled_resources") {
source = "ash_public_unscaled_resources.grd"
outputs = [
"grit/ash_public_unscaled_resources.h",
"ash_public_unscaled_resources.pak",
]
}

View file

@ -1,34 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//components/vector_icons/vector_icons.gni")
# The icons in this target, unlike those in //ash/resources/vector_icons, are ok to use from outside of ash/.
aggregate_vector_icons("ash_public_vector_icons") {
icon_directory = "."
icons = [
"assistant.icon",
"notification_assistant.icon",
"notification_supervised_user.icon",
"notification_warning.icon",
"window_control_back.icon",
"window_control_dezoom.icon",
"window_control_left_snapped.icon",
"window_control_menu.icon",
"window_control_right_snapped.icon",
"window_control_zoom.icon",
]
}
source_set("vector_icons") {
sources = get_target_outputs(":ash_public_vector_icons")
deps = [
":ash_public_vector_icons",
"//base",
"//skia",
"//ui/gfx",
]
}

View file

@ -1,38 +0,0 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//mojo/public/tools/bindings/mojom.gni")
mojom("mojom") {
disable_variants = true
sources = [
"assistant_controller.mojom",
"assistant_volume_control.mojom",
"cros_display_config.mojom",
"tray_action.mojom",
"voice_interaction_controller.mojom",
]
public_deps = [
"//chromeos/components/proximity_auth/public/mojom",
"//chromeos/services/assistant/public/mojom:notification",
"//components/account_id/mojom",
"//components/sync/mojom",
"//mojo/public/mojom/base",
"//services/content/public/mojom",
"//services/preferences/public/mojom",
"//skia/public/mojom",
"//ui/display/mojom:mojom",
"//ui/gfx/geometry/mojom",
"//ui/gfx/image/mojom",
"//ui/gfx/range/mojom",
"//url/mojom:url_mojom_gurl",
]
component_output_prefix = "ash_public_interfaces"
export_class_attribute = "ASH_PUBLIC_EXPORT"
export_define = "ASH_PUBLIC_IMPLEMENTATION=1"
export_header = "ash/public/cpp/ash_public_export.h"
}

View file

@ -1,34 +0,0 @@
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module ash.mojom;
import "chromeos/services/assistant/public/mojom/assistant_notification.mojom";
// Interface to the AssistantNotificationController which is owned by the
// AssistantController. Currently used by the Assistant service to modify
// Assistant notification state in Ash in response to LibAssistant events.
interface AssistantNotificationController {
// Requests that the specified |notification| be added or updated. If the
// |client_id| for |notification| matches that of an existing notification,
// an update will occur. Otherwise, a new notification will be added.
AddOrUpdateNotification(
chromeos.assistant.mojom.AssistantNotification notification);
// Requests that the notification uniquely identified by |id| be removed. If
// |from_server| is true the request to remove was initiated by the server.
RemoveNotificationById(string id, bool from_server);
// Requests that all notifications associated with the given |grouping_key|
// be removed. If |from_server| is true the request to remove was initiated
// by the server.
RemoveNotificationByGroupingKey(string grouping_key, bool from_server);
// Requests that all notifications be removed. If |from_server| is true the
// request was initiated by the server.
RemoveAllNotifications(bool from_server);
// Changes the quiet mode state in the message center.
SetQuietMode(bool enabled);
};

View file

@ -1,27 +0,0 @@
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module ash.mojom;
// Interface to control system volume through Ash.
interface AssistantVolumeControl {
// Sets system volume to |volume|, which is between 0 - 100.
SetVolume(int32 volume, bool user_initiated);
// Sets mute state to |muted|.
SetMuted(bool muted);
// Adds volume observer. The observer will be immediately notified of volume
// and mute status when added.
AddVolumeObserver(pending_remote<VolumeObserver> observer);
};
// Observes volume state changes.
interface VolumeObserver {
// Called when volume is updated.
OnVolumeChanged(int32 volume);
// Called when mute state changed.
OnMuteStateChanged(bool muted);
};

View file

@ -1,312 +0,0 @@
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module ash.mojom;
import "ui/gfx/geometry/mojom/geometry.mojom";
import "ui/display/mojom/display.mojom";
// This API is used for communication between Settings WebUI and Ash C++ code.
// All points, bounds, and insets are in display pixels unless otherwise
// sepcified.
// SetDisplayLayoutInfo or SetDisplayProperties result.
enum DisplayConfigResult {
kSuccess = 0,
kInvalidOperationError,
kInvalidDisplayIdError,
kUnifiedNotEnabledError,
kPropertyValueOutOfRangeError,
kNotSupportedOnInternalDisplayError,
kNegativeValueError,
kSetDisplayModeError,
kInvalidDisplayLayoutError,
kMirrorModeSingleDisplayError,
kMirrorModeSourceIdError,
kMirrorModeDestIdError,
kCalibrationNotAvailableError,
kCalibrationNotStartedError,
kCalibrationInProgressError,
kCalibrationInvalidDataError,
kCalibrationFailedError,
};
// Describes how the displays are laid out.
enum DisplayLayoutMode {
// In normal mode displays are laid out as described by
// DisplayLayoutInfo.layouts.
kNormal = 0,
// In unified desktop mode, a single desktop will be stretched across all
// available displays.
kUnified,
// In mirrored mode, the display defined by DisplayLayoutInfo.mirrorSourceId
// will be mirrored in the displays defined by
// DisplayLayoutInfo.mirrorDestinationIds, or in all other displays if
// mirrorDestinationIds is empty.
kMirrored
};
// Describes a display edge.
enum DisplayLayoutPosition {
kTop = 0,
kRight,
kBottom,
kLeft
};
// Describes an overscan or touch calibration operation.
enum DisplayConfigOperation {
kStart = 0,
kAdjust,
kReset,
kComplete,
kShowNative,
};
// Describes who initiated configuration change.
enum DisplayConfigSource {
kUser = 0,
kPolicy
};
// Describes the options the DisplayConfigProperties.rotation and
// DisplayUnitInfo.rotation_options can be set to.
enum DisplayRotationOptions {
// In physical tablet state, enables auto-rotation and clears the user
// rotation lock. Otherwise, it behaves the same as kZeroDegrees.
kAutoRotate,
// In physical tablet state, Sets the user rotation lock to 0 degrees.
// Otherwise, it sets the display rotation to 0.
kZeroDegrees,
// In physical tablet state, Sets the user rotation lock to 90 degrees.
// Otherwise, it sets the display rotation 90.
k90Degrees,
// In physical tablet state, Sets the user rotation lock to 180 degrees.
// Otherwise, it sets the display rotation 180.
k180Degrees,
// In physical tablet state, Sets the user rotation lock to 270 degrees.
// Otherwise, it sets the display rotation 270.
k270Degrees,
};
// Defines a pair of display + touch points used for touch calibration.
struct TouchCalibrationPair {
// The coordinates of the display point.
gfx.mojom.Point display_point;
// The coordinates of the touch point corresponding to the display point.
gfx.mojom.Point touch_point;
};
// Defines the data required for touch calibration.
struct TouchCalibration {
// Must contain exactly four pairs of touch calibration points.
array<TouchCalibrationPair> pairs;
// Width and height of the display area when the touch calibration was
// performed.
gfx.mojom.Size bounds;
};
// Defines the layout of a single display.
struct DisplayLayout {
// The unique identifier of the display.
string id;
// The unique identifier of the parent display. Empty for the root display.
string parent_id;
// The edge of the display that is shared with the parent display. Ignored for
// the root display.
DisplayLayoutPosition position;
// The offset of the display along the connected edge. 0 indicates that
// the topmost or leftmost corner is aligned.
int32 offset;
};
// Defines the layout mode and details.
struct DisplayLayoutInfo {
// The layout mode to use, see DisplayLayoutMode for details.
DisplayLayoutMode layout_mode;
// Ignored if If layout_mode is not kMirrored. Otherwise, if provided,
// specifies the unique identifier of the source display for mirroring. If
// not provided, mirror_destination_ids will be ignored and default ('normal')
// mirrored mode will be enabled.
string? mirror_source_id;
// Ignored if layout_mode is not kMirrored. Otherwise, if provided, specifies
// the unique identifiers of the displays to mirror the source display. If not
// provided or empty, all displays will mirror the source display.
array<string>? mirror_destination_ids;
// An array of layouts describing a directed graph of displays. Required if
// layout_mode is kNormal or kMirrored and not all displays are mirrored
// ('mixed' mode). Ignored if layout_mode is kUnified.
array<DisplayLayout>? layouts;
};
// EDID extracted parameters. Field description refers to "VESA ENHANCED
// EXTENDED DISPLAY IDENTIFICATION DATA STANDARD (Defines EDID Structure
// Version 1, Revision 4)" Release A, Revision 2 September 25, 2006.
// https://www.vesa.org/vesa-standards
struct Edid {
// Three character manufacturer code, Sec. 3.4.1 page 21.
string manufacturer_id;
// Two byte manufacturer-assigned code, Sec. 3.4.2 page 21.
string product_id;
// Year of manufacture. Sec. 3.4.4 page 22.
int32 year_of_manufacture;
};
// Struct wrapper so that the property can be optional.
struct DisplayRotation {
DisplayRotationOptions rotation;
};
// Defines the properties for a display mode, i.e. a valid size and scale.
struct DisplayMode {
// The display mode size in device independent (user visible) pixels.
gfx.mojom.Size size;
// The display mode size in native pixels.
gfx.mojom.Size size_in_native_pixels;
// The display mode device scale factor.
double device_scale_factor;
// The display mode refresh rate in hertz.
double refresh_rate;
// True if the mode is the display's native mode.
bool is_native;
// True if the mode is interlaced.
bool is_interlaced;
};
// Defines the properties of an individual display, returned by
// GetDisplayLayoutInfo.
struct DisplayUnitInfo {
// The unique identifier of the display.
string id;
// The user-friendly name (e.g. "Acme LCD monitor").
string name;
// EDID properties when available.
Edid? edid;
// True if this is the primary display.
bool is_primary;
// True if this is an internal display.
bool is_internal;
// True if this display is enabled.
bool is_enabled;
// True when the device is in tablet physical state.
bool is_in_tablet_physical_state;
// True if this display has a touch input device associated with it.
bool has_touch_support;
// True if this display has an accelerometer associated with it.
bool has_accelerometer_support;
// The number of pixels per inch along the x-axis.
double dpi_x;
// The number of pixels per inch along the y-axis.
double dpi_y;
// The display rotation options.
DisplayRotationOptions rotation_options;
// The display's logical bounds.
gfx.mojom.Rect bounds;
// The display's ovserscan insets within its screen's bounds.
gfx.mojom.Insets overscan;
// The usable work area of the display within the display bounds. Excludes
// areas of the display reserved for the OS, e.g. the taskbar and launcher.
gfx.mojom.Rect work_area;
// The index of the selected display mode.
int32 selected_display_mode_index;
// The list of available display modes.
array<DisplayMode> available_display_modes;
// The ratio between the display's current and default zoom. i.e. 1.0 is
// is equivalent to 100% zoom, and value 1.5 is equivalent to 150% zoom.
double display_zoom_factor;
// The list of allowed zoom factor values for the display.
array<double> available_display_zoom_factors;
};
// Properties for configuring an individual display, used in
// SetDisplayProperties.
struct DisplayConfigProperties {
// If true, makes the display primary. No-op if set to false.
bool set_primary;
// If provided, sets the display's overscan insets to the provided value.
// Note: overscan values may not be negative or larger than a half of the
// screen's size. Overscan cannot be changed on the internal monitor.
gfx.mojom.Insets? overscan;
// If provided updates the display's rotation, or if the device is in a
// physical tablet state, it can be used to set or clear the user rotation
// lock, enabling or disabling auto-rotation.
DisplayRotation? rotation;
// If provided, updates the display's logical bounds origin. Note: when
// updating the display origin, some constraints will be applied. so the final
// bounds origin may be different than the one set. The actual bounds will be
// reflected in DisplayUnitInfo. Cannot be changed on the primary display (or
// if set_primary is true).
gfx.mojom.Point? bounds_origin;
// If non zero, updates the zoom associated with the display. This zoom
// performs relayout and repaint thus resulting in a better quality zoom than
// just performing a pixel by pixel stretch enlargement.
double display_zoom_factor;
// Optional DisplayMode properties to set. This should match one of the
// modes listed in DisplayUnitInfo.available_display_modes. Other custom
// modes may or may not be valid.
DisplayMode? display_mode;
};
// Interface for configuring displays in Chrome OS. Currently this is
// implemented in Ash through classes owned by ash::Shell, but the interface
// should not have any Ash specific dependencies.
interface CrosDisplayConfigController {
// Observers are notified when the display layout or any display properties
// change.
AddObserver(pending_associated_remote<CrosDisplayConfigObserver> observer);
// Returns the display layout info, including the list of layouts.
GetDisplayLayoutInfo() => (DisplayLayoutInfo info);
// Sets the layout mode, mirroring, and layouts. Returns kSuccess if the
// layout is valid or an error value otherwise.
SetDisplayLayoutInfo(DisplayLayoutInfo info) => (DisplayConfigResult result);
// Returns the properties for all displays. If |single_unified| is true, a
// single display will be returned if the display layout is in unifed mode.
GetDisplayUnitInfoList(bool single_unified) =>
(array<DisplayUnitInfo> info_list);
// Sets |properties| for individual display with identifier |id|. |source|
// should describe who initiated the change. Returns Success if the properties
// are valid or an error value otherwise.
SetDisplayProperties(string id,
DisplayConfigProperties properties,
DisplayConfigSource source) =>
(DisplayConfigResult result);
// Enables or disables unified desktop mode. If the current display mode is
// kMirrored the mode will not be changed, if it is kNormal then the mode will
// be set to kUnified.
SetUnifiedDesktopEnabled(bool enabled);
// Starts, updates, completes, or resets overscan calibration for the display
// with identifier |display_id|. If |op| is kAdjust, |delta| describes the
// amount to change the overscan value. Runs the callback after performing the
// operation or on error.
OverscanCalibration(string display_id,
DisplayConfigOperation op,
gfx.mojom.Insets? delta) => (DisplayConfigResult result);
// Starts, completes, or resets touch calibration for the display with
// identifier |display_id|. If |op| is kShowNative shows the native
// calibration UI. Runs the callback after performing the operation or on
// error.
TouchCalibration(string display_id,
DisplayConfigOperation op,
TouchCalibration? calibration) =>
(DisplayConfigResult result);
// Sets |id| of display to render identification highlight on. Invalid |id|
// turns identification highlight off.
HighlightDisplay(int64 id);
};
// Interface for clients needing to be informed when the display configuration
// changes.
interface CrosDisplayConfigObserver {
// Called any time the display configuration changes.
OnDisplayConfigChanged();
};

View file

@ -1,103 +0,0 @@
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module ash.mojom;
// An action handler state.
enum TrayActionState {
// The action cannot be handled - due to no client being set, the client not
// supporting the action, user session not being locked etc.
kNotAvailable,
// The client supports the action and is not currently handling the action.
kAvailable,
// The client received the request for the action and it is launching the
// flow to handle it.
kLaunching,
// The client is currently handling the action.
kActive,
};
// The user action that triggered a request for a new note.
// Used in histograms - should be kept in sync with
// NewLockScreenNoteRequestType histogram enum, and assigned values should
// never be changed.
enum LockScreenNoteOrigin {
// The note request originated from the new note button in the system
// tray - note that this UI element is deprecated.
kTrayAction = 0,
// The user tapped the note action button shown on the lock screen.
kLockScreenButtonTap = 1,
// The user swiped from the note action button shown on the lock screen.
kLockScreenButtonSwipe = 2,
// The user activated the lock screen button shown on the lock screen using
// the keyboard.
kLockScreenButtonKeyboard = 3,
// The user ejected the stylus tool from the device.
kStylusEject = 4,
};
// Reason for closing a lock screen note, and consequentially closing any
// existing note handler app windows.
// Used primarily for metrics reporting.
// IMPORTANT: The values should be kept in sync with
// LockScreenNoteTakingExitReason histogram enum, and assigned values should
// never be changed.
enum CloseLockScreenNoteReason {
// The user session was unlocked.
kSessionUnlock = 0,
// The user session was shut down (e.g. due to user sign-out).
kShutdown = 1,
// The user display was completely dimmed (e.g. due to user inactivity).
kScreenDimmed = 2,
// Device suspended.
kSuspend = 3,
// The app window associated with the note was closed by the app.
kAppWindowClosed = 4,
// The note taking app's support for the lock screen note taking was disabled
// (e.g. because of a policy update).
kAppLockScreenSupportDisabled = 5,
// The user pressed "Unlock" button on the lock screen UI.
kUnlockButtonPressed = 6,
};
// Used by a client (e.g. Chrome) to set up a handler for a tray action, and
// notify ash on the action handler's state changes. A tray action is one of
// predefined actions (currently only the "new note on lock screen" action is
// supported) that appear as an ash status area button if the client declares
// the action as available. Clicking the button invokes a client method that
// requests the action associated with the button to be handled.
interface TrayAction {
// Sets the client to be used to handle action requests.
// |lock_screen_note_state|: The current lock screen note action state
// associated with the client.
SetClient(pending_remote<TrayActionClient> client,
TrayActionState lock_screen_note_state);
// Updates action state for the lock screen note action. If called with no
// client set, the state change will not take effect until a client is set.
// Null client is equivalent to kNotAvailable state.
UpdateLockScreenNoteState(TrayActionState state);
};
// Used by ash to request Chrome to handle an action.
interface TrayActionClient {
// Requests a lock screen note action to be handled.
RequestNewLockScreenNote(LockScreenNoteOrigin origin);
// Closes lock screen note.
CloseLockScreenNote(CloseLockScreenNoteReason reason);
};

View file

@ -1,23 +0,0 @@
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module ash.mojom;
// There is another copy of the VoiceInteractionState definition in
// //components/arc/mojom/voice_interaction_framework.mojom
// Please also update the other one if you change it.
// The duplicate definition is because we do not use extensible widely
// (crbug.com/731893).
// The initial state is NOT_READY, then it will either becomes STOPPED or
// RUNNING. If the mojo connection is lost, the state will be set back to
// NOT_READY.
enum VoiceInteractionState {
// Voice interaction service is not ready yet, request sent will be waiting.
NOT_READY = 0,
// Voice interaction session is stopped.
STOPPED,
// Voice interaction session is currently running.
RUNNING
};

View file

@ -1,88 +0,0 @@
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni")
import("//ui/base/ui_features.gni")
assert(is_chromeos)
assert(enable_hidpi)
# Repacks resources needed for ash_unittests, etc. at a given scale.
# TODO(msw): Use ui_test.pak instead of its pieces? (no 200% support?)
template("ash_test_resources") {
percent = invoker.percent
repack("ash_test_resources_${target_name}") {
output = "$root_build_dir/${target_name}.pak"
sources = [
"$root_gen_dir/ash/app_list/resources/app_list_resources_${percent}_percent.pak",
"$root_gen_dir/ash/login/resources/login_resources_${percent}_percent.pak",
"$root_gen_dir/ash/public/cpp/resources/ash_public_unscaled_resources.pak",
"$root_gen_dir/ui/chromeos/resources/ui_chromeos_resources_${percent}_percent.pak",
"$root_gen_dir/ui/resources/ui_resources_${percent}_percent.pak",
"$root_gen_dir/ui/views/resources/views_resources_${percent}_percent.pak",
]
if (percent == "100") {
sources += [
"$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
"$root_gen_dir/ui/resources/webui_resources.pak",
]
}
if (defined(invoker.sources)) {
sources += invoker.sources
}
deps = [
"//ash/app_list/resources",
"//ash/login/resources",
"//ash/public/cpp/resources:ash_public_unscaled_resources",
"//mojo/public/js:resources",
"//ui/chromeos/resources",
"//ui/resources",
"//ui/views/resources",
]
if (defined(invoker.deps)) {
deps += invoker.deps
}
if (percent == "100") {
# TODO(msw): This seems bad, but follows repack_ui_test_pak's example.
deps += [ "//third_party/blink/public:resources_grit" ]
sources += [
"$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
]
}
}
}
ash_test_resources("100_percent") {
percent = "100"
}
ash_test_resources("200_percent") {
percent = "200"
}
# There is no with_content_200_percent as content resources are only available
# at 100%.
ash_test_resources("with_content_100_percent") {
percent = "100"
sources = [
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/content/dev_ui_content_resources.pak",
"$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
"$root_gen_dir/third_party/blink/public/strings/blink_strings_en-US.pak",
]
deps = [
"//content:content_resources",
"//content:dev_ui_content_resources",
"//third_party/blink/public:scaled_resources_100_percent",
"//third_party/blink/public/strings",
]
}

View file

@ -1,311 +0,0 @@
# Copyright 2016 The Chromium Authors.All rights reserved.
# Use of this source code is governed by a BSD - style license that can be
# found in the LICENSE file.
import("//build/config/chrome_build.gni")
import("//components/vector_icons/vector_icons.gni")
aggregate_vector_icons("ash_vector_icons") {
icon_directory = "."
icons = [
"always_show_shelf.icon",
"auto_hide.icon",
"autoclick.icon",
"autoclick_close.icon",
"autoclick_double_click.icon",
"autoclick_drag.icon",
"autoclick_left_click.icon",
"autoclick_right_click.icon",
"autoclick_pause.icon",
"autoclick_position_bottom_left.icon",
"autoclick_position_bottom_right.icon",
"autoclick_position_top_left.icon",
"autoclick_position_top_right.icon",
"autoclick_scroll.icon",
"autoclick_scroll_down.icon",
"autoclick_scroll_left.icon",
"autoclick_scroll_right.icon",
"autoclick_scroll_up.icon",
"captive_portal.icon",
"check_circle.icon",
"desks_close_desk_button.icon",
"desks_new_desk_button.icon",
"dictation_menu.icon",
"dictation_off.icon",
"dictation_off_newui.icon",
"dictation_on.icon",
"dictation_on_newui.icon",
"dogfood.icon",
"hollow_check_circle.icon",
"ime_menu_emoticon.icon",
"ime_menu_microphone.icon",
"ime_menu_on_screen_keyboard.icon",
"ime_menu_write.icon",
"keyboard.icon",
"lock_screen_alert.icon",
"lock_screen_arrow.icon",
"lock_screen_arrow_back.icon",
"lock_screen_backspace.icon",
"lock_screen_caps_lock.icon",
"lock_screen_dropdown.icon",
"lock_screen_fingerprint.icon",
"lock_screen_password_invisible.icon",
"lock_screen_password_visible.icon",
"lock_screen_smart_card.icon",
"lock_screen_smart_card_failure.icon",
"lock_screen_fingerprint_success.icon",
"lock_screen_time_limit_lock.icon",
"lock_screen_time_limit_moon.icon",
"lock_screen_time_limit_timer.icon",
"login_screen_button_dropdown.icon",
"login_screen_menu_dropdown.icon",
"login_screen_enterprise.icon",
"mic.icon",
"muted_microphone.icon",
"network_badge_captive_portal.icon",
"network_badge_off.icon",
"network_badge_roaming.icon",
"network_badge_secure.icon",
"network_badge_technology_1x.icon",
"network_badge_technology_3g.icon",
"network_badge_technology_4g.icon",
"network_badge_technology_edge.icon",
"network_badge_technology_evdo.icon",
"network_badge_technology_gprs.icon",
"network_badge_technology_hspa.icon",
"network_badge_technology_hspa_plus.icon",
"network_badge_technology_lte.icon",
"network_badge_technology_lte_advanced.icon",
"network_badge_vpn.icon",
"network_ethernet.icon",
"network_mobile_not_connected_x.icon",
"network_vpn.icon",
"notification_accessibility.icon",
"notification_accessibility_braille.icon",
"notification_battery_critical.icon",
"notification_battery_fluctuating.icon",
"notification_battery_low.icon",
"notification_bluetooth_battery_warning.icon",
"notification_bluetooth.icon",
"notification_capslock.icon",
"notification_center_all_done.icon",
"notification_center_clear_all.icon",
"notification_center_collapse.icon",
"notification_center_do_not_disturb_off.icon",
"notification_center_do_not_disturb_on.icon",
"notification_center_empty.icon",
"notification_center_settings.icon",
"notification_charging_usb_c.icon",
"notification_chromevox.icon",
"notification_keyboard.icon",
"notification_low_power_charger.icon",
"notification_monitor_warning.icon",
"notification_multi_device_setup.icon",
"notification_screen.icon",
"notification_screenshare.icon",
"notification_sms_sync.icon",
"notification_stylus_battery_warning.icon",
"notification_timer.icon",
"overview_window_close.icon",
"overview_drop_target_plus.icon",
"overflow_shelf_left.icon",
"overflow_shelf_right.icon",
"palette_action_capture_region.icon",
"palette_action_capture_screen.icon",
"palette_action_create_note.icon",
"palette_mode_laser_pointer.icon",
"palette_mode_magnify.icon",
"palette_mode_metalayer.icon",
"palette_tray_icon_capture_region.icon",
"palette_tray_icon_default.icon",
"palette_tray_icon_default_newui.icon",
"palette_tray_icon_laser_pointer.icon",
"palette_tray_icon_magnify.icon",
"palette_tray_icon_metalayer.icon",
"pin_request_lock.icon",
"privacy_screen.icon",
"send.icon",
"settings.icon",
"shelf_add_person_button.icon",
"shelf_apps_button.icon",
"shelf_back.icon",
"shelf_browse_as_guest_button.icon",
"shelf_cancel_button.icon",
"shelf_globe.icon",
"shelf_keyboard.icon",
"shelf_keyboard_newui.icon",
"shelf_logout.icon",
"shelf_notifications.icon",
"shelf_overflow.icon",
"shelf_overflow_horizontal_dots.icon",
"shelf_overview.icon",
"shelf_position.icon",
"shelf_shutdown_button.icon",
"shelf_sign_out_button.icon",
"shelf_unlock_button.icon",
"switch_access.icon",
"switch_access_back.icon",
"switch_access_close.icon",
"switch_access_copy.icon",
"switch_access_cut.icon",
"switch_access_decrement.icon",
"switch_access_end_text_selection.icon",
"switch_access_increment.icon",
"switch_access_jump_to_beginning_of_text.icon",
"switch_access_jump_to_end_of_text.icon",
"switch_access_keyboard.icon",
"switch_access_move_backward_one_char_of_text.icon",
"switch_access_move_backward_one_word_of_text.icon",
"switch_access_move_cursor.icon",
"switch_access_move_down_one_line_of_text.icon",
"switch_access_move_forward_one_char_of_text.icon",
"switch_access_move_forward_one_word_of_text.icon",
"switch_access_move_up_one_line_of_text.icon",
"switch_access_paste.icon",
"switch_access_scroll_down.icon",
"switch_access_scroll_left.icon",
"switch_access_scroll_right.icon",
"switch_access_scroll_up.icon",
"switch_access_select.icon",
"switch_access_settings.icon",
"switch_access_start_text_selection.icon",
"system_menu_accessibility.icon",
"system_menu_accessibility_auto_click.icon",
"system_menu_accessibility_chromevox.icon",
"system_menu_accessibility_contrast.icon",
"system_menu_accessibility_docked_magnifier.icon",
"system_menu_accessibility_fullscreen_magnifier.icon",
"system_menu_accessibility_select_to_speak.icon",
"system_menu_audio_input.icon",
"system_menu_audio_output.icon",
"system_menu_add_connection.icon",
"system_menu_arrow_back.icon",
"system_menu_bluetooth.icon",
"system_menu_bluetooth_connected.icon",
"system_menu_bluetooth_disabled.icon",
"system_menu_brightness.icon",
"system_menu_business.icon",
"system_menu_caps_lock.icon",
"system_menu_cast.icon",
"system_menu_cast_audio.icon",
"system_menu_cast_audio_group.icon",
"system_menu_cast_enabled.icon",
"system_menu_cast_generic.icon",
"system_menu_cast_message.icon",
"system_menu_computer.icon",
"system_menu_gamepad.icon",
"system_menu_guest.icon",
"system_menu_hdmi.icon",
"system_menu_headset.icon",
"system_menu_help.icon",
"system_menu_info.icon",
"system_menu_keyboard.icon",
"system_menu_keyboard_brightness.icon",
"system_menu_legacy_supervised_user.icon",
"system_menu_lock.icon",
"system_menu_mouse.icon",
"system_menu_phone.icon",
"system_menu_power.icon",
"system_menu_rollback.icon",
"system_menu_rotation_lock_auto.icon",
"system_menu_rotation_lock_landscape.icon",
"system_menu_rotation_lock_portrait.icon",
"system_menu_screen_share.icon",
"system_menu_settings.icon",
"system_menu_supervised_user.icon",
"system_menu_tablet.icon",
"system_menu_tracing.icon",
"system_menu_timer.icon",
"system_menu_new_user.icon",
"system_menu_update.icon",
"system_menu_usb.icon",
"system_menu_videocam.icon",
"system_menu_volume_high.icon",
"system_menu_volume_low.icon",
"system_menu_volume_medium.icon",
"system_menu_volume_mute.icon",
"system_power_button_menu_feedback.icon",
"system_power_button_menu_lock_screen.icon",
"system_power_button_menu_power_off.icon",
"system_power_button_menu_sign_out.icon",
"system_tray_accessibility.icon",
"system_tray_caps_lock.icon",
"system_tray_cast.icon",
"system_tray_do_not_disturb.icon",
"system_tray_supervised_user.icon",
"system_tray_managed.icon",
"system_tray_notification_counter_plus.icon",
"system_tray_recording.icon",
"system_tray_rotation_lock_auto.icon",
"system_tray_rotation_lock_locked.icon",
"system_tray_select_to_speak.icon",
"system_tray_select_to_speak_newui.icon",
"system_tray_select_to_speak_active.icon",
"system_tray_select_to_speak_active_newui.icon",
"system_tray_screen_share.icon",
"system_tray_stop.icon",
"system_tray_stop_newui.icon",
"system_tray_tracing.icon",
"system_tray_update.icon",
"system_tray_volume_mute.icon",
"touch_calibration_complete_check.icon",
"touch_calibration_hand.icon",
"tray_action_new_lock_screen_note.icon",
"unified_menu_accessibility.icon",
"unified_menu_arrow_back.icon",
"unified_menu_battery_alert.icon",
"unified_menu_battery_bolt.icon",
"unified_menu_battery_unreliable.icon",
"unified_menu_battery_x.icon",
"unified_menu_bluetooth_connected.icon",
"unified_menu_bluetooth.icon",
"unified_menu_brightness.icon",
"unified_menu_cast.icon",
"unified_menu_do_not_disturb.icon",
"unified_menu_expand.icon",
"unified_menu_info.icon",
"unified_menu_keyboard_brightness.icon",
"unified_menu_keyboard.icon",
"unified_menu_locale.icon",
"unified_menu_lock.icon",
"unified_menu_managed.icon",
"unified_menu_more.icon",
"unified_menu_night_light.icon",
"unified_menu_power.icon",
"unified_menu_rotation_lock_auto.icon",
"unified_menu_rotation_lock_landscape.icon",
"unified_menu_rotation_lock_portrait.icon",
"unified_menu_settings.icon",
"unified_menu_volume_high.icon",
"unified_menu_volume_low.icon",
"unified_menu_volume_medium.icon",
"unified_menu_volume_mute.icon",
"unified_menu_vpn.icon",
"unified_menu_wifi_off.icon",
"unified_network_badge_captive_portal.icon",
"unified_network_badge_secure.icon",
"unified_network_badge_vpn.icon",
"wallpaper.icon",
]
if (is_chrome_branded) {
icons += [
"system_menu_cast_device.icon",
"system_menu_cast_education.icon",
"system_menu_cast_hangout.icon",
"system_menu_cast_meeting.icon",
]
}
}
source_set("vector_icons") {
sources = get_target_outputs(":ash_vector_icons")
deps = [
":ash_vector_icons",
"//base",
"//skia",
"//ui/gfx",
]
}

View file

@ -1,58 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# KSV: Keyboard Shortcut Viewer
source_set("shortcut_viewer") {
sources = [
"keyboard_shortcut_item.cc",
"keyboard_shortcut_item.h",
"keyboard_shortcut_viewer_metadata.cc",
"keyboard_shortcut_viewer_metadata.h",
"ksv_export.h",
"views/bubble_view.cc",
"views/bubble_view.h",
"views/keyboard_shortcut_item_list_view.cc",
"views/keyboard_shortcut_item_list_view.h",
"views/keyboard_shortcut_item_view.cc",
"views/keyboard_shortcut_item_view.h",
"views/keyboard_shortcut_view.cc",
"views/keyboard_shortcut_view.h",
"views/ksv_search_box_view.cc",
"views/ksv_search_box_view.h",
]
defines = [ "KSV_IMPLEMENTATION" ]
deps = [
"//ash",
"//ash/public/cpp",
"//ash/public/cpp/resources:ash_public_unscaled_resources",
"//ash/shortcut_viewer/strings",
"//ash/shortcut_viewer/vector_icons",
"//cc/paint",
"//ui/accessibility",
"//ui/aura",
"//ui/chromeos/events",
"//ui/chromeos/search_box",
"//ui/events:events_base",
"//ui/events/devices",
"//ui/events/ozone/layout",
"//ui/views",
]
}
source_set("unit_tests") {
testonly = true
sources = [ "views/keyboard_shortcut_view_unittest.cc" ]
deps = [
":shortcut_viewer",
"//ash:test_support",
"//base/test:test_support",
"//testing/gtest",
"//ui/compositor:test_support",
"//ui/events:test_support",
"//ui/events/devices:test_support",
"//ui/views",
]
}

View file

@ -1,66 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/grit_rule.gni")
grit("strings") {
source = "../shortcut_viewer_strings.grd"
outputs = [
"grit/shortcut_viewer_strings.h",
"shortcut_viewer_strings_am.pak",
"shortcut_viewer_strings_ar.pak",
"shortcut_viewer_strings_bg.pak",
"shortcut_viewer_strings_bn.pak",
"shortcut_viewer_strings_ca.pak",
"shortcut_viewer_strings_cs.pak",
"shortcut_viewer_strings_da.pak",
"shortcut_viewer_strings_de.pak",
"shortcut_viewer_strings_el.pak",
"shortcut_viewer_strings_en-GB.pak",
"shortcut_viewer_strings_en-US.pak",
"shortcut_viewer_strings_es-419.pak",
"shortcut_viewer_strings_es.pak",
"shortcut_viewer_strings_et.pak",
"shortcut_viewer_strings_fake-bidi.pak",
"shortcut_viewer_strings_fa.pak",
"shortcut_viewer_strings_fil.pak",
"shortcut_viewer_strings_fi.pak",
"shortcut_viewer_strings_fr.pak",
"shortcut_viewer_strings_gu.pak",
"shortcut_viewer_strings_he.pak",
"shortcut_viewer_strings_hi.pak",
"shortcut_viewer_strings_hr.pak",
"shortcut_viewer_strings_hu.pak",
"shortcut_viewer_strings_id.pak",
"shortcut_viewer_strings_it.pak",
"shortcut_viewer_strings_ja.pak",
"shortcut_viewer_strings_kn.pak",
"shortcut_viewer_strings_ko.pak",
"shortcut_viewer_strings_lt.pak",
"shortcut_viewer_strings_lv.pak",
"shortcut_viewer_strings_ml.pak",
"shortcut_viewer_strings_mr.pak",
"shortcut_viewer_strings_ms.pak",
"shortcut_viewer_strings_nb.pak",
"shortcut_viewer_strings_nl.pak",
"shortcut_viewer_strings_pl.pak",
"shortcut_viewer_strings_pt-BR.pak",
"shortcut_viewer_strings_pt-PT.pak",
"shortcut_viewer_strings_ro.pak",
"shortcut_viewer_strings_ru.pak",
"shortcut_viewer_strings_sk.pak",
"shortcut_viewer_strings_sl.pak",
"shortcut_viewer_strings_sr.pak",
"shortcut_viewer_strings_sv.pak",
"shortcut_viewer_strings_sw.pak",
"shortcut_viewer_strings_ta.pak",
"shortcut_viewer_strings_te.pak",
"shortcut_viewer_strings_th.pak",
"shortcut_viewer_strings_tr.pak",
"shortcut_viewer_strings_uk.pak",
"shortcut_viewer_strings_vi.pak",
"shortcut_viewer_strings_zh-CN.pak",
"shortcut_viewer_strings_zh-TW.pak",
]
}

View file

@ -1,41 +0,0 @@
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//components/vector_icons/vector_icons.gni")
aggregate_vector_icons("ksv_vector_icons") {
icon_directory = "."
icons = [
"ksv_search_back.icon",
"ksv_search_bar.icon",
"ksv_search_close.icon",
"ksv_search_no_result.icon",
"ksv_separator_plus.icon",
"ksv_arrow_down.icon",
"ksv_arrow_left.icon",
"ksv_arrow_right.icon",
"ksv_arrow_up.icon",
"ksv_brightness_down.icon",
"ksv_brightness_up.icon",
"ksv_browser_back.icon",
"ksv_browser_forward.icon",
"ksv_fullscreen.icon",
"ksv_mute.icon",
"ksv_overview.icon",
"ksv_privacy_screen_toggle.icon",
"ksv_reload.icon",
"ksv_volume_down.icon",
"ksv_volume_up.icon",
]
}
source_set("vector_icons") {
sources = get_target_outputs(":ksv_vector_icons")
deps = [
":ksv_vector_icons",
"//skia",
]
}

View file

@ -1,109 +0,0 @@
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni")
assert(is_chromeos)
grit("strings") {
source = "../ash_strings.grd"
defines = [ "is_chrome_branded=$is_chrome_branded" ]
outputs = [
"grit/ash_strings.h",
"ash_strings_am.pak",
"ash_strings_ar.pak",
"ash_strings_bg.pak",
"ash_strings_bn.pak",
"ash_strings_ca.pak",
"ash_strings_cs.pak",
"ash_strings_da.pak",
"ash_strings_de.pak",
"ash_strings_el.pak",
"ash_strings_en-GB.pak",
"ash_strings_en-US.pak",
"ash_strings_es.pak",
"ash_strings_es-419.pak",
"ash_strings_et.pak",
"ash_strings_fa.pak",
"ash_strings_fake-bidi.pak",
"ash_strings_fi.pak",
"ash_strings_fil.pak",
"ash_strings_fr.pak",
"ash_strings_gu.pak",
"ash_strings_he.pak",
"ash_strings_hi.pak",
"ash_strings_hr.pak",
"ash_strings_hu.pak",
"ash_strings_id.pak",
"ash_strings_it.pak",
"ash_strings_ja.pak",
"ash_strings_kn.pak",
"ash_strings_ko.pak",
"ash_strings_lt.pak",
"ash_strings_lv.pak",
"ash_strings_ml.pak",
"ash_strings_mr.pak",
"ash_strings_ms.pak",
"ash_strings_nl.pak",
"ash_strings_nb.pak",
"ash_strings_pl.pak",
"ash_strings_pt-BR.pak",
"ash_strings_pt-PT.pak",
"ash_strings_ro.pak",
"ash_strings_ru.pak",
"ash_strings_sk.pak",
"ash_strings_sl.pak",
"ash_strings_sr.pak",
"ash_strings_sv.pak",
"ash_strings_sw.pak",
"ash_strings_ta.pak",
"ash_strings_te.pak",
"ash_strings_th.pak",
"ash_strings_tr.pak",
"ash_strings_uk.pak",
"ash_strings_vi.pak",
"ash_strings_zh-CN.pak",
"ash_strings_zh-TW.pak",
]
}
# Creates locale-specific pak files with strings needed for ash_unittests, etc.
template("repack_one_locale_ash") {
locale = invoker.locale
output = invoker.output
repack(target_name) {
# Each input pak file should also have a deps line for completeness.
sources = [
"$root_gen_dir/ash/shortcut_viewer/strings/shortcut_viewer_strings_${locale}.pak",
"$root_gen_dir/ash/strings/ash_strings_${locale}.pak",
"$root_gen_dir/chromeos/strings/chromeos_strings_${locale}.pak",
"$root_gen_dir/components/strings/components_strings_${locale}.pak",
"$root_gen_dir/device/bluetooth/strings/bluetooth_strings_${locale}.pak",
"$root_gen_dir/ui/chromeos/strings/ui_chromeos_strings_${locale}.pak",
"$root_gen_dir/ui/strings/app_locale_settings_${locale}.pak",
"$root_gen_dir/ui/strings/ui_strings_${locale}.pak",
]
deps = [
"//ash/shortcut_viewer/strings",
"//ash/strings",
"//chromeos/strings",
"//components/strings",
"//device/bluetooth/strings",
"//ui/chromeos/strings",
"//ui/strings:app_locale_settings",
"//ui/strings:ui_strings",
]
}
}
# Creates a pak file containing en-US strings for ash_unittests, etc.
repack_one_locale_ash("ash_test_strings") {
output = "$root_build_dir/ash_test_strings.pak"
locale = "en-US"
}

Some files were not shown because too many files have changed in this diff Show more