diff options
author | Gustav Sennton <gsennton@google.com> | 2018-03-05 10:23:12 +0000 |
---|---|---|
committer | Gustav Sennton <gsennton@google.com> | 2018-03-09 17:28:37 +0000 |
commit | 68349a8634db3a240a19b72aea99176bc5260e29 (patch) | |
tree | 31c183ac4bc237e034b2d4fe13cf68f410d27aaa | |
parent | 7b2b795f08fce27bd0f31c2101c6dbaf3f855df7 (diff) | |
download | webview_support_interfaces-68349a8634db3a240a19b72aea99176bc5260e29.tar.gz |
[android_webview] Save boundary interfaces from proguard obfuscation
We need to keep the names of all boundary interface classes and methods
used by the support library and chromium to ensure their names are the
same in the support library as in the WebView APK.
However, utility classes in the boundary interface package can be
obfuscated just fine since they are not part of the boundary interface
API.
Ideally then, we will put everything that is part of the boundary
interface API in one specific package, and keep utility methods in a
sub-package, to allow for simple proguard rules (and avoid bugs where we
incorrectly keep/remove new boundary interfaces).
Bug: 809471
Change-Id: I7a700fcc50998d83bf3bfa799196477289bedb3e
Reviewed-on: https://chromium-review.googlesource.com/943504
Reviewed-by: agrieve <agrieve@chromium.org>
Reviewed-by: Richard Coles <torne@chromium.org>
Commit-Queue: Gustav Sennton <gsennton@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#540800}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 0a6e992e64dcf503e038e34a0c7952172b29d9a9
-rw-r--r-- | BUILD.gn | 4 | ||||
-rw-r--r-- | proguard.flags | 9 | ||||
-rw-r--r-- | src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java (renamed from src/org/chromium/support_lib_boundary/BoundaryInterfaceReflectionUtil.java) | 2 |
3 files changed, 13 insertions, 2 deletions
@@ -7,15 +7,17 @@ import("//build/config/android/rules.gni") android_library("boundary_interface_java") { java_files = [ - "src/org/chromium/support_lib_boundary/BoundaryInterfaceReflectionUtil.java", "src/org/chromium/support_lib_boundary/StaticsBoundaryInterface.java", "src/org/chromium/support_lib_boundary/VisualStateCallbackBoundaryInterface.java", "src/org/chromium/support_lib_boundary/WebSettingsBoundaryInterface.java", "src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java", "src/org/chromium/support_lib_boundary/WebViewProviderFactoryBoundaryInterface.java", "src/org/chromium/support_lib_boundary/WebkitToCompatConverterBoundaryInterface.java", + "src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java", ] + proguard_configs = [ "proguard.flags" ] + # We can't use ANY deps here, the support library should be able to build # these interfaces without any other chromium dependencies. deps = [] diff --git a/proguard.flags b/proguard.flags new file mode 100644 index 0000000..4a0d580 --- /dev/null +++ b/proguard.flags @@ -0,0 +1,9 @@ +# 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. + +# We need to avoid obfuscating the support library boundary interface because +# this API is shared with the Android Support Library. +# Note that we only 'keep' the package org.chromium.support_lib_boundary itself, +# any sub-packages of that package can still be obfuscated. +-keep public class org.chromium.support_lib_boundary.* { public *; } diff --git a/src/org/chromium/support_lib_boundary/BoundaryInterfaceReflectionUtil.java b/src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java index caf7277..5a772c5 100644 --- a/src/org/chromium/support_lib_boundary/BoundaryInterfaceReflectionUtil.java +++ b/src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java @@ -1,7 +1,7 @@ // 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. -package org.chromium.support_lib_boundary; +package org.chromium.support_lib_boundary.util; import android.annotation.TargetApi; import android.os.Build; |