17058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard/*
27058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * Copyright (C) 2013 The Android Open Source Project
37058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard *
47058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * Licensed under the Apache License, Version 2.0 (the "License");
57058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * you may not use this file except in compliance with the License.
67058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * You may obtain a copy of the License at
77058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard *
87058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard *      http://www.apache.org/licenses/LICENSE-2.0
97058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard *
107058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * Unless required by applicable law or agreed to in writing, software
117058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * distributed under the License is distributed on an "AS IS" BASIS,
127058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * See the License for the specific language governing permissions and
147058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * limitations under the License.
157058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard */
167058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard
177058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardpackage com.android.inputmethod.compat;
187058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard
197058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardimport android.content.pm.PackageInfo;
207058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardimport android.os.Build.VERSION_CODES;
217058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard
227058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard/**
237058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard * A class to encapsulate work-arounds specific to particular apps.
247058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard */
257058b02a9c798c21b169b778be2befc7739f4e9bJean Chalardpublic class AppWorkaroundsUtils {
261404c1af850236da4fe4ed3825b70cb228a1da5bJean Chalard    private final PackageInfo mPackageInfo; // May be null
271404c1af850236da4fe4ed3825b70cb228a1da5bJean Chalard    private final boolean mIsBrokenByRecorrection;
287058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard
291404c1af850236da4fe4ed3825b70cb228a1da5bJean Chalard    public AppWorkaroundsUtils(final PackageInfo packageInfo) {
307058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        mPackageInfo = packageInfo;
3189fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard        mIsBrokenByRecorrection = AppWorkaroundsHelper.evaluateIsBrokenByRecorrection(
3289fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard                packageInfo);
3389fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard    }
3489fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard
3589fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard    public boolean isBrokenByRecorrection() {
3689fe1f50881180730e451cbe6ec4d1f8dc67acf1Jean Chalard        return mIsBrokenByRecorrection;
377058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard    }
387058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard
397058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard    public boolean isBeforeJellyBean() {
407058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        if (null == mPackageInfo || null == mPackageInfo.applicationInfo) {
417058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard            return false;
427058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        }
437058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        return mPackageInfo.applicationInfo.targetSdkVersion < VERSION_CODES.JELLY_BEAN;
447058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard    }
457058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard
467058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard    @Override
477058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard    public String toString() {
487058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        if (null == mPackageInfo || null == mPackageInfo.applicationInfo) {
497058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard            return "";
507058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        }
517058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        final StringBuilder s = new StringBuilder();
527058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        s.append("Target application : ")
537058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard                .append(mPackageInfo.applicationInfo.name)
547058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard                .append("\nPackage : ")
557058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard                .append(mPackageInfo.applicationInfo.packageName)
567058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard                .append("\nTarget app sdk version : ")
577058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard                .append(mPackageInfo.applicationInfo.targetSdkVersion);
587058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard        return s.toString();
597058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard    }
607058b02a9c798c21b169b778be2befc7739f4e9bJean Chalard}
61