# Copyright 2010-2018, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
#     * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# In order to include line number in stack trace below descriptions are needed.
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-useuniqueclassmembernames

# Keep the method names of the generated protobuf classes,
# because the protobuf library uses reflections.
-keepclassmembers class org.mozc.android.inputmethod.japanese.protobuf.* {
    <methods>;
}


# This class is created by reflection.
-keep class org.mozc.android.inputmethod.japanese.MozcView$RegionInsetsCalculator

# Can be accessed via reflection.
-keep public class * extends android.app.Fragment
-keepclassmembers class * extends org.mozc.android.inputmethod.japanese.util.ImeSwitcherFactory$ImeSwitcher {
    <methods>;
}

# libmozc.so depends on those methods.
-keepclassmembers class org.mozc.android.inputmethod.japanese.session.MozcJNI {
    native <methods>;
}

# The classes in nativecallback package must keep original class name and method name
# in order to be called back from native layer.
-keepclasseswithmembers class org.mozc.android.inputmethod.japanese.nativecallback.* {
    public static <methods>;
}

# Skin's fields are accessed by reflection.
-keepclassmembers class org.mozc.android.inputmethod.japanese.view.Skin {
    <fields>;
}

# Needed for Guava library.
-libraryjars libs/jsr305.jar
-dontwarn sun.misc.Unsafe
-dontwarn com.google.common.collect.MinMaxPriorityQueue
# Following suppression items are introduced for guava14.
# To resolve these references Guice (or its compatible) library is needed
# but we don't want to include it into our build dependency.
# Instead just ignore the warnings.
# Note: "Warning" in Proguard is like an error because it stops the build process.
-dontwarn javax.inject.Inject
-dontwarn javax.inject.Singleton
