summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustav Sennton <gsennton@google.com>2018-03-05 10:23:12 +0000
committerGustav Sennton <gsennton@google.com>2018-03-09 17:28:37 +0000
commit68349a8634db3a240a19b72aea99176bc5260e29 (patch)
tree31c183ac4bc237e034b2d4fe13cf68f410d27aaa
parent7b2b795f08fce27bd0f31c2101c6dbaf3f855df7 (diff)
downloadwebview_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.gn4
-rw-r--r--proguard.flags9
-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
diff --git a/BUILD.gn b/BUILD.gn
index 6f08b1d..bc1fcb3 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -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;