Compare commits
No commits in common. "v84.0.4147.89-1" and "master" have entirely different histories.
v84.0.4147
...
master
|
@ -1,35 +0,0 @@
|
|||
branches:
|
||||
except:
|
||||
- dev
|
||||
version: '{build}'
|
||||
platform:
|
||||
- x64
|
||||
- x86
|
||||
image: Visual Studio 2017
|
||||
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
|
@ -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
|
@ -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
|
||||
|
|
99
.travis.yml
|
@ -1,99 +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: "osx"
|
||||
os: osx
|
||||
osx_image: xcode11.3
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- ninja-build
|
||||
- pkg-config
|
||||
- libnss3-dev
|
||||
- qemu-user
|
||||
homebrew:
|
||||
packages:
|
||||
- ninja
|
||||
- ccache
|
||||
update: true
|
||||
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
|
|
@ -1 +1 @@
|
|||
84.0.4147.89
|
||||
135.0.7049.38
|
||||
|
|
214
README.md
|
@ -1,161 +1,161 @@
|
|||
# NaïveProxy [](https://travis-ci.com/klzgrad/naiveproxy) [](https://ci.appveyor.com/project/klzgrad/naiveproxy)
|
||||
# NaïveProxy 
|
||||
|
||||
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=./forwardproxy
|
||||
sudo setcap cap_net_bind_service=+ep ./caddy
|
||||
./caddy run --config caddy.json
|
||||
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
|
||||
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy=github.com/klzgrad/forwardproxy@naive
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Example caddy.json using Let's Encrypt (replace example values accordingly)</summary>
|
||||
|
||||
```json
|
||||
Example Caddyfile (replace `user` and `pass` accordingly):
|
||||
```
|
||||
{
|
||||
"apps": {
|
||||
"http": {
|
||||
"servers": {
|
||||
"srv0": {
|
||||
"listen": [":443"],
|
||||
"routes": [{
|
||||
"handle": [{
|
||||
"handler": "forward_proxy",
|
||||
"hide_ip": true,
|
||||
"hide_via": true,
|
||||
"auth_user": "username",
|
||||
"auth_pass": "password",
|
||||
"probe_resistance": {"domain": "use a secret name or empty string here:0"}
|
||||
}]
|
||||
}, {
|
||||
"match": [{"host": ["example.com", "www.example.com"]}],
|
||||
"handle": [{
|
||||
"handler": "file_server",
|
||||
"root": "/var/www/html"
|
||||
}],
|
||||
"terminal": true
|
||||
}],
|
||||
"tls_connection_policies": [{
|
||||
"match": {"sni": ["example.com", "www.example.com"]}
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
"tls": {
|
||||
"automation": {
|
||||
"policies": [{
|
||||
"subjects": ["example.com", "www.example.com"],
|
||||
"issuer": {
|
||||
"email": "admin@example.com",
|
||||
"module": "acme"
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
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
|
||||
}
|
||||
file_server {
|
||||
root /var/www/html
|
||||
}
|
||||
}
|
||||
```
|
||||
</details>
|
||||
`: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/).
|
||||
|
||||
Run with the Caddyfile:
|
||||
```
|
||||
sudo setcap cap_net_bind_service=+ep ./caddy
|
||||
./caddy start
|
||||
```
|
||||
|
||||
Locally run `./naive` with the following `config.json` to get a SOCKS5 proxy at local port 1080.
|
||||
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 [Parameter Tuning](https://github.com/klzgrad/naiveproxy/wiki/Parameter-Tuning) to improve client-side performance.
|
||||
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.
|
||||
|
|
46
USAGE.txt
|
@ -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
|
@ -0,0 +1,3 @@
|
|||
.gradle/
|
||||
app/build/
|
||||
app/libs/
|
73
apk/app/build.gradle.kts
Normal 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")
|
||||
}
|
||||
}
|
45
apk/app/src/main/AndroidManifest.xml
Normal 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>
|
|
@ -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()
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
}
|
25
apk/app/src/main/res/drawable/ic_launcher_foreground.xml
Normal 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>
|
6
apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
Normal 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>
|
|
@ -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>
|
BIN
apk/app/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
apk/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
apk/app/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
apk/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
apk/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
apk/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
apk/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
apk/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
apk/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
apk/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 12 KiB |
4
apk/app/src/main/res/values/ic_launcher_background.xml
Normal 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
|
@ -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
|
@ -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
7
apk/gradle/wrapper/gradle-wrapper.properties
vendored
Normal 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
|
@ -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
|
@ -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
10
apk/settings.gradle
Normal file
|
@ -0,0 +1,10 @@
|
|||
dependencyResolutionManagement {
|
||||
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
rootProject.name = "Naive Plugin"
|
||||
|
||||
include ':app'
|
|
@ -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
|
@ -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
|
||||
|
|
572
src/.gn
|
@ -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,529 +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/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/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.
|
||||
#
|
||||
|
@ -626,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.
|
||||
|
|
613
src/AUTHORS
1359
src/BUILD.gn
|
@ -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.
|
||||
//
|
||||
|
|
|
@ -1,960 +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"
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
# Material design is a large dependency that pulls in a lot of res/ files.
|
||||
# At time of this comment, adding this dep even when unused adds 220kb.
|
||||
assert_no_deps = [
|
||||
"//third_party/android_deps:com_google_android_material_material_java",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
# Standalone WebView APK.
|
||||
standalone_system_webview_apk_tmpl("system_webview_apk") {
|
||||
apk_name = "SystemWebView"
|
||||
|
||||
# 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 =
|
||||
!enable_chrome_android_internal && android_channel == "stable"
|
||||
if (_verify_android_configuration) {
|
||||
verify_manifest = true
|
||||
}
|
||||
}
|
||||
|
||||
# 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
|
||||
}
|
||||
|
||||
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 (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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android_resource_sizes_test("resource_sizes_system_webview_apk") {
|
||||
apk_name = "SystemWebView"
|
||||
data_deps = [ ":system_webview_apk" ]
|
||||
}
|
||||
|
||||
# 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
|
||||
}
|
||||
|
||||
# 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 =
|
||||
!enable_chrome_android_internal && android_channel == "stable"
|
||||
if (_verify_android_configuration) {
|
||||
verify_manifest = true
|
||||
}
|
||||
}
|
||||
|
||||
if (enable_webview_bundles) {
|
||||
trichrome_webview_tmpl("trichrome_webview_base_bundle_module") {
|
||||
target_type = "android_app_bundle_module"
|
||||
is_base_module = true
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
# 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.
|
||||
shared_library("libwebviewchromium") {
|
||||
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" ]
|
||||
}
|
||||
|
||||
# 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",
|
||||
"//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 += [
|
||||
"//components/viz/service:service_java",
|
||||
"//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/AwVariationsSeedBridge.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/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/AwFeatures.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/AwVariationsSeedBridge.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/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_metrics_java",
|
||||
":common_platform_services_java",
|
||||
":common_variations_java",
|
||||
":resources",
|
||||
"//android_webview/nonembedded:system_webview_manifest",
|
||||
"//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",
|
||||
"//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/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_metrics_java") {
|
||||
sources = [
|
||||
"java/src/org/chromium/android_webview/common/metrics/AwNonembeddedUmaRecorder.java",
|
||||
"java/src/org/chromium/android_webview/common/metrics/AwNonembeddedUmaReplayer.java",
|
||||
]
|
||||
deps = [
|
||||
":common_aidl_java",
|
||||
":common_java",
|
||||
"//android_webview/proto:metrics_bridge_records_proto_java",
|
||||
"//base:base_java",
|
||||
"//third_party/android_deps:com_google_protobuf_protobuf_javalite_java",
|
||||
]
|
||||
}
|
||||
|
||||
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/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) {
|
||||
generate_resource_whitelist("system_webview_pak_whitelist") {
|
||||
deps = [ ":libwebviewchromium" ]
|
||||
inputs =
|
||||
[ "$root_out_dir/lib.unstripped/libwebviewchromium$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" ]
|
||||
}
|
||||
}
|
||||
|
||||
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_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" ])
|
||||
}
|
|
@ -1,274 +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_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_pref_names.cc",
|
||||
"aw_pref_names.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_seed_bridge.cc",
|
||||
"aw_variations_seed_bridge.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/js_java_configurator_host.cc",
|
||||
"js_java_interaction/js_java_configurator_host.h",
|
||||
"js_java_interaction/js_reply_proxy.cc",
|
||||
"js_java_interaction/js_reply_proxy.h",
|
||||
"js_java_interaction/js_to_java_messaging.cc",
|
||||
"js_java_interaction/js_to_java_messaging.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_whitelist.cc",
|
||||
"tracing/aw_trace_event_args_whitelist.h",
|
||||
"tracing/aw_tracing_controller.cc",
|
||||
"tracing/aw_tracing_controller.h",
|
||||
"tracing/aw_tracing_delegate.cc",
|
||||
"tracing/aw_tracing_delegate.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/common:common_mojom",
|
||||
"//base",
|
||||
"//components/autofill/android:provider",
|
||||
"//components/autofill/content/browser",
|
||||
"//components/cdm/browser",
|
||||
"//components/content_capture/android",
|
||||
"//components/content_capture/browser",
|
||||
|
||||
# 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/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",
|
||||
]
|
||||
}
|
|
@ -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" ]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -1,89 +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")
|
||||
|
||||
mojom("common_mojom") {
|
||||
sources = [
|
||||
"aw_origin_matcher.mojom",
|
||||
"js_java_interaction/interfaces.mojom",
|
||||
]
|
||||
|
||||
public_deps = [
|
||||
"//mojo/public/mojom/base",
|
||||
"//services/network/public/mojom:mojom",
|
||||
"//third_party/blink/public/mojom:mojom_core",
|
||||
]
|
||||
|
||||
cpp_typemaps = [
|
||||
{
|
||||
types = [
|
||||
{
|
||||
mojom = "android_webview.mojom.AwOriginMatcher"
|
||||
cpp = "::android_webview::AwOriginMatcher"
|
||||
},
|
||||
]
|
||||
traits_headers =
|
||||
[ "//android_webview/common/aw_origin_matcher_mojom_traits.h" ]
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
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_origin_matcher.cc",
|
||||
"aw_origin_matcher.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",
|
||||
]
|
||||
}
|
|
@ -1,10 +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.
|
||||
|
||||
module android_webview.mojom;
|
||||
|
||||
// This corresponds to the string representation of AwOriginMatcher.
|
||||
struct AwOriginMatcher {
|
||||
array<string> rules;
|
||||
};
|
|
@ -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.
|
||||
|
||||
module android_webview.mojom;
|
||||
|
||||
import "android_webview/common/aw_origin_matcher.mojom";
|
||||
import "mojo/public/mojom/base/string16.mojom";
|
||||
import "third_party/blink/public/mojom/messaging/message_port_descriptor.mojom";
|
||||
|
||||
// JsObject struct represents a JavaScript object we will inject in the main
|
||||
// JavaScript world of a frame. |js_object_name| will be used as the name
|
||||
// of the JavaScript object. We will inject the object if the frame's origin
|
||||
// matches |origin_matcher|. |js_to_java_messaging| will be used for that
|
||||
// JavaScript object to send message back to browser (hence Java) side.
|
||||
struct JsObject {
|
||||
mojo_base.mojom.String16 js_object_name;
|
||||
pending_associated_remote<JsToJavaMessaging> js_to_java_messaging;
|
||||
android_webview.mojom.AwOriginMatcher origin_matcher;
|
||||
};
|
||||
|
||||
// DocumentStartJavascript struct contains the JavaScript snippet |script| and
|
||||
// the corresponding |origin_matcher|. We will run the script if the frame's
|
||||
// origin matches any rules in the |origin_matcher|.
|
||||
struct DocumentStartJavascript {
|
||||
int32 script_id;
|
||||
mojo_base.mojom.String16 script;
|
||||
android_webview.mojom.AwOriginMatcher origin_matcher;
|
||||
};
|
||||
|
||||
// For JavaScript postMessage() API, implemented by browser.
|
||||
interface JsToJavaMessaging {
|
||||
// Called from renderer, browser receives |message| and possible |ports|,
|
||||
// The |message| is an opaque type and the contents are defined by the client
|
||||
// of this API.
|
||||
PostMessage(mojo_base.mojom.String16 message,
|
||||
array<blink.mojom.MessagePortDescriptor> ports);
|
||||
|
||||
// When there is a new JavaToJsMessaging created in renderer, we need to send
|
||||
// it to browser, so browser could send message back to Js.
|
||||
SetJavaToJsMessaging(
|
||||
pending_associated_remote<JavaToJsMessaging> java_to_js_messaging);
|
||||
};
|
||||
|
||||
// For Java to reply back to injected JavaScript object. Implemented by
|
||||
// renderer.
|
||||
interface JavaToJsMessaging {
|
||||
// Called from browser, to send message from Java to JavaScript.
|
||||
OnPostMessage(mojo_base.mojom.String16 message);
|
||||
};
|
||||
|
||||
// For browser to configure renderer, implemented by renderer.
|
||||
interface JsJavaConfigurator {
|
||||
// Called from browser, to tell renderer that if we need to inject
|
||||
// JavaScript objects to the frame based on the |js_objects| array.
|
||||
SetJsObjects(array<android_webview.mojom.JsObject> js_objects);
|
||||
|
||||
// Called from browser, to add a script for a frame to run at document start
|
||||
// stage. The script will run only if the frame's origin matches any of the
|
||||
// allowed_origin_rules.
|
||||
AddDocumentStartScript(android_webview.mojom.DocumentStartJavascript script);
|
||||
|
||||
// Called from browser, to remove the script by the given script_id.
|
||||
RemoveDocumentStartScript(int32 script_id);
|
||||
};
|
|
@ -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") {
|
||||
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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -1,68 +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/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",
|
||||
"//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" ]
|
||||
}
|
||||
}
|
|
@ -1,196 +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/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_java",
|
||||
"//base:base_java",
|
||||
"//base:jni_java",
|
||||
"//components/about_ui/android:aboutui_java",
|
||||
"//components/embedder_support/android:application_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_metrics_java",
|
||||
"//android_webview:common_platform_services_java",
|
||||
"//base:base_java",
|
||||
"//components/minidump_uploader:minidump_uploader_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_metrics_java",
|
||||
"//android_webview:common_platform_services_java",
|
||||
"//android_webview:common_variations_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",
|
||||
]
|
||||
}
|
||||
|
||||
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",
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,15 +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")
|
||||
|
||||
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" ]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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.
|
||||
|
||||
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",
|
||||
"js_java_interaction/js_binding.cc",
|
||||
"js_java_interaction/js_binding.h",
|
||||
"js_java_interaction/js_java_configurator.cc",
|
||||
"js_java_interaction/js_java_configurator.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//android_webview:generate_aw_resources",
|
||||
"//android_webview:generate_aw_strings",
|
||||
"//android_webview/common",
|
||||
"//android_webview/common:common_mojom",
|
||||
"//base",
|
||||
"//components/android_system_error_page",
|
||||
"//components/autofill/content/renderer",
|
||||
"//components/cdm/renderer",
|
||||
"//components/content_capture/common",
|
||||
"//components/content_capture/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",
|
||||
"//gin",
|
||||
"//third_party/blink/public:blink",
|
||||
"//ui/base",
|
||||
"//url",
|
||||
"//v8",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
"//android_webview/support_library/boundary_interfaces:boundary_interface_java",
|
||||
"//android_webview/support_library/callback:callback_java",
|
||||
"//base:base_java",
|
||||
"//content/public/android:content_java",
|
||||
]
|
||||
}
|
|
@ -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" ]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -1,255 +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")
|
||||
|
||||
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 (!_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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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, "*")
|
||||
}
|
||||
}
|
|
@ -1,474 +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/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/test/embedded_test_server:aw_net_java_test_support",
|
||||
"//base:base_java",
|
||||
"//base:base_java_test_support",
|
||||
"//components/autofill/android:provider_java",
|
||||
"//components/embedder_support/android:web_contents_delegate_java",
|
||||
"//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",
|
||||
"//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_support_test_runner:rules_java",
|
||||
"//third_party/android_support_test_runner:runner_java",
|
||||
"//third_party/espresso:espresso_all_java",
|
||||
"//third_party/hamcrest:hamcrest_java",
|
||||
"//third_party/junit",
|
||||
"//third_party/metrics_proto:metrics_proto_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/AwDebugTest.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/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/metrics/AwNonembeddedUmaRecorderTest.java",
|
||||
"../javatests/src/org/chromium/android_webview/test/common/variations/VariationsUtilsTest.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/VariationsTestUtils.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 = [ "shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java" ]
|
||||
deps = [
|
||||
"//base:base_java",
|
||||
"//base:jni_java",
|
||||
]
|
||||
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
|
||||
}
|
||||
|
||||
generate_jni("webview_instrumentation_test_native_jni") {
|
||||
testonly = true
|
||||
sources = [ "shell/src/org/chromium/android_webview/test/util/MemoryMetricsLoggerUtils.java" ]
|
||||
}
|
||||
|
||||
source_set("webview_instrumentation_test_native_jni_impl") {
|
||||
sources = [ "shell/memory_metrics_logger_utils.cc" ]
|
||||
|
||||
deps = [
|
||||
":webview_instrumentation_test_native_jni",
|
||||
"//base",
|
||||
"//base/test:test_support",
|
||||
"//components/embedder_support/android/metrics",
|
||||
]
|
||||
}
|
||||
|
||||
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",
|
||||
"../common/aw_origin_matcher_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/metrics/AwNonembeddedUmaReplayerTest.java",
|
||||
"../junit/src/org/chromium/android_webview/robolectric/common/services/ServiceNamesTest.java",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//android_webview:android_webview_java",
|
||||
"//base:base_java_test_support",
|
||||
"//base:base_junit_test_support",
|
||||
"//content/public/test/android:content_java_test_support",
|
||||
"//third_party/android_support_test_runner:runner_java",
|
||||
]
|
||||
|
||||
package_name = "org.chromium.android_webview.robolectric"
|
||||
}
|
|
@ -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" ]
|
||||
}
|
|
@ -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_sdk:android_test_base_java",
|
||||
"//third_party/android_support_test_runner:rules_java",
|
||||
"//third_party/android_support_test_runner:runner_java",
|
||||
"//third_party/espresso:espresso_all_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
|
||||
}
|
|
@ -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_blacklist.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
|
|
@ -1,134 +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_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
|
||||
}
|
|
@ -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("//build/config/android/rules.gni")
|
||||
|
||||
android_apk("webview_log_verbosifier_apk") {
|
||||
apk_name = "WebViewLogVerbosifier"
|
||||
android_manifest = "AndroidManifest.xml"
|
||||
deps = [ ":webview_log_verbosifier_resources" ]
|
||||
min_sdk_version = 21
|
||||
target_sdk_version = 28
|
||||
}
|
||||
|
||||
android_resources("webview_log_verbosifier_resources") {
|
||||
sources = [
|
||||
"res/drawable-v24/ic_launcher_foreground.xml",
|
||||
"res/drawable/ic_launcher_background.xml",
|
||||
"res/mipmap-anydpi-v26/ic_launcher.xml",
|
||||
"res/mipmap-anydpi-v26/ic_launcher_round.xml",
|
||||
"res/mipmap-hdpi/ic_launcher.png",
|
||||
"res/mipmap-hdpi/ic_launcher_round.png",
|
||||
"res/mipmap-mdpi/ic_launcher.png",
|
||||
"res/mipmap-mdpi/ic_launcher_round.png",
|
||||
"res/mipmap-xhdpi/ic_launcher.png",
|
||||
"res/mipmap-xhdpi/ic_launcher_round.png",
|
||||
"res/mipmap-xxhdpi/ic_launcher.png",
|
||||
"res/mipmap-xxhdpi/ic_launcher_round.png",
|
||||
"res/mipmap-xxxhdpi/ic_launcher.png",
|
||||
"res/mipmap-xxxhdpi/ic_launcher_round.png",
|
||||
"res/values/ic_launcher_background.xml",
|
||||
]
|
||||
custom_package = "org.chromium.webview_log_verbosifier"
|
||||
}
|
|
@ -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"
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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" ]
|
|
@ -1,64 +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 = [
|
||||
"//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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
2608
src/ash/BUILD.gn
|
@ -1,263 +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/privacy_info_view.cc",
|
||||
"views/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/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/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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -1,54 +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/gfx/geometry",
|
||||
]
|
||||
}
|
|
@ -1,119 +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_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/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",
|
||||
"proactive_suggestions_rich_view.cc",
|
||||
"proactive_suggestions_rich_view.h",
|
||||
"proactive_suggestions_simple_view.cc",
|
||||
"proactive_suggestions_simple_view.h",
|
||||
"proactive_suggestions_view.cc",
|
||||
"proactive_suggestions_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" ]
|
||||
}
|
||||
}
|
|
@ -1,37 +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/mojom",
|
||||
"//net",
|
||||
"//ui/base",
|
||||
"//ui/gfx",
|
||||
"//ui/views",
|
||||
"//url",
|
||||
]
|
||||
}
|
|
@ -1,22 +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")
|
||||
|
||||
static_library("arc") {
|
||||
sources = [
|
||||
"arc_input_method_surface_manager.cc",
|
||||
"arc_input_method_surface_manager.h",
|
||||
"arc_virtual_keyboard_container_layout_manager.cc",
|
||||
"arc_virtual_keyboard_container_layout_manager.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//ash/public/cpp",
|
||||
"//base",
|
||||
"//components/exo",
|
||||
"//ui/aura",
|
||||
"//ui/gfx/geometry",
|
||||
]
|
||||
}
|
|
@ -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" ]
|
||||
}
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -1,362 +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_mode_state.cc",
|
||||
"ambient/ambient_mode_state.h",
|
||||
"ambient/ambient_prefs.cc",
|
||||
"ambient/ambient_prefs.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",
|
||||
"arc_notification_manager_base.cc",
|
||||
"arc_notification_manager_base.h",
|
||||
"arc_notifications_host_initializer.cc",
|
||||
"arc_notifications_host_initializer.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_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_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",
|
||||
"assistant/proactive_suggestions.cc",
|
||||
"assistant/proactive_suggestions.h",
|
||||
"assistant/proactive_suggestions_client.cc",
|
||||
"assistant/proactive_suggestions_client.h",
|
||||
"assistant/util/histogram_util.cc",
|
||||
"assistant/util/histogram_util.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/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",
|
||||
"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.cc",
|
||||
"quick_answers_controller.h",
|
||||
"rounded_corner_decorator.cc",
|
||||
"rounded_corner_decorator.h",
|
||||
"scale_utility.cc",
|
||||
"scale_utility.h",
|
||||
"scoped_guest_button_blocker.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/network/public/cpp:cpp",
|
||||
"//ui/aura",
|
||||
"//ui/aura:test_support",
|
||||
"//ui/gfx",
|
||||
"//ui/gfx:test_support",
|
||||
"//ui/views",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -1,79 +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";
|
||||
import "mojo/public/mojom/base/time.mojom";
|
||||
import "ui/gfx/geometry/mojom/geometry.mojom";
|
||||
|
||||
// Represents the current state of an Assistant timer.
|
||||
enum AssistantTimerState {
|
||||
kUnknown,
|
||||
|
||||
// The timer is scheduled to fire at some future date.
|
||||
kScheduled,
|
||||
|
||||
// The timer will not fire but is kept in the queue of scheduled events;
|
||||
// it can be resumed after which it will fire in |remaining_time|.
|
||||
kPaused,
|
||||
|
||||
// The timer has fired. In the simplest case this means the timer has
|
||||
// begun ringing.
|
||||
kFired,
|
||||
};
|
||||
|
||||
// Models an Assistant timer.
|
||||
struct AssistantTimer {
|
||||
string id;
|
||||
string label;
|
||||
AssistantTimerState state;
|
||||
mojo_base.mojom.Time fire_time;
|
||||
mojo_base.mojom.TimeDelta remaining_time;
|
||||
};
|
||||
|
||||
// Interface to the AssistantAlarmTimerController which is owned by the
|
||||
// AssistantController. Currently used by the Assistant service to notify Ash
|
||||
// of changes to the underlying alarm/timer state in LibAssistant.
|
||||
interface AssistantAlarmTimerController {
|
||||
// Invoked when timer state has changed. Note that |timers| may be empty.
|
||||
OnTimerStateChanged(array<AssistantTimer> timers);
|
||||
};
|
||||
|
||||
// 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);
|
||||
};
|
||||
|
||||
// Interface to the AssistantScreenContextController which is owned by the
|
||||
// AssistantController. Currently used by the Assistant service to request
|
||||
// screenshots.
|
||||
interface AssistantScreenContextController {
|
||||
// Requests a screenshot of the region enclosed by |rect| and returns the
|
||||
// screenshot encoded in JPEG format. If |rect| is empty, it returns a
|
||||
// fullscreen screenshot.
|
||||
RequestScreenshot(gfx.mojom.Rect rect) => (array<uint8> screenshot);
|
||||
};
|
|
@ -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);
|
||||
};
|
|
@ -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();
|
||||
};
|
|
@ -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);
|
||||
};
|
|
@ -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
|
||||
};
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -1,309 +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_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_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",
|
||||
]
|
||||
}
|
|
@ -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",
|
||||
]
|
||||
}
|
|
@ -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 = "../ash_components_strings.grd"
|
||||
outputs = [
|
||||
"grit/ash_components_strings.h",
|
||||
"ash_components_strings_am.pak",
|
||||
"ash_components_strings_ar.pak",
|
||||
"ash_components_strings_bg.pak",
|
||||
"ash_components_strings_bn.pak",
|
||||
"ash_components_strings_ca.pak",
|
||||
"ash_components_strings_cs.pak",
|
||||
"ash_components_strings_da.pak",
|
||||
"ash_components_strings_de.pak",
|
||||
"ash_components_strings_el.pak",
|
||||
"ash_components_strings_en-GB.pak",
|
||||
"ash_components_strings_en-US.pak",
|
||||
"ash_components_strings_es-419.pak",
|
||||
"ash_components_strings_es.pak",
|
||||
"ash_components_strings_et.pak",
|
||||
"ash_components_strings_fake-bidi.pak",
|
||||
"ash_components_strings_fa.pak",
|
||||
"ash_components_strings_fil.pak",
|
||||
"ash_components_strings_fi.pak",
|
||||
"ash_components_strings_fr.pak",
|
||||
"ash_components_strings_gu.pak",
|
||||
"ash_components_strings_he.pak",
|
||||
"ash_components_strings_hi.pak",
|
||||
"ash_components_strings_hr.pak",
|
||||
"ash_components_strings_hu.pak",
|
||||
"ash_components_strings_id.pak",
|
||||
"ash_components_strings_it.pak",
|
||||
"ash_components_strings_ja.pak",
|
||||
"ash_components_strings_kn.pak",
|
||||
"ash_components_strings_ko.pak",
|
||||
"ash_components_strings_lt.pak",
|
||||
"ash_components_strings_lv.pak",
|
||||
"ash_components_strings_ml.pak",
|
||||
"ash_components_strings_mr.pak",
|
||||
"ash_components_strings_ms.pak",
|
||||
"ash_components_strings_nb.pak",
|
||||
"ash_components_strings_nl.pak",
|
||||
"ash_components_strings_pl.pak",
|
||||
"ash_components_strings_pt-BR.pak",
|
||||
"ash_components_strings_pt-PT.pak",
|
||||
"ash_components_strings_ro.pak",
|
||||
"ash_components_strings_ru.pak",
|
||||
"ash_components_strings_sk.pak",
|
||||
"ash_components_strings_sl.pak",
|
||||
"ash_components_strings_sr.pak",
|
||||
"ash_components_strings_sv.pak",
|
||||
"ash_components_strings_sw.pak",
|
||||
"ash_components_strings_ta.pak",
|
||||
"ash_components_strings_te.pak",
|
||||
"ash_components_strings_th.pak",
|
||||
"ash_components_strings_tr.pak",
|
||||
"ash_components_strings_uk.pak",
|
||||
"ash_components_strings_vi.pak",
|
||||
"ash_components_strings_zh-CN.pak",
|
||||
"ash_components_strings_zh-TW.pak",
|
||||
]
|
||||
}
|