| /* |
| * Copyright (C) 2017 The Android Open Source Project |
| * |
| * 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 |
| * |
| * http://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. |
| */ |
| package com.example.android.autofillframework.multidatasetservice.datasource; |
| |
| import android.content.Context; |
| import android.util.Log; |
| |
| import com.example.android.autofillframework.multidatasetservice.SecurityHelper; |
| |
| import static com.example.android.autofillframework.CommonUtil.TAG; |
| |
| /** |
| * Singleton repository that caches the result of Digital Asset Links checks. |
| */ |
| public class SharedPrefsDigitalAssetLinksRepository implements DigitalAssetLinksDataSource { |
| |
| private static SharedPrefsDigitalAssetLinksRepository sInstance; |
| |
| private SharedPrefsDigitalAssetLinksRepository() { |
| } |
| |
| public static SharedPrefsDigitalAssetLinksRepository getInstance() { |
| if (sInstance == null) { |
| sInstance = new SharedPrefsDigitalAssetLinksRepository(); |
| } |
| return sInstance; |
| } |
| |
| @Override |
| public boolean isValid(Context context, String webDomain, String packageName) { |
| // TODO: implement caching. It could cache the whole domain -> (packagename, fingerprint), |
| // but then either invalidate when the package change or when the DAL association times out |
| // (the maxAge is part of the API response), or document that a real-life service |
| // should do that. |
| |
| String fingerprint = null; |
| try { |
| fingerprint = SecurityHelper.getFingerprint(context, packageName); |
| } catch (Exception e) { |
| Log.w(TAG, "error getting fingerprint for " + packageName, e); |
| return false; |
| } |
| return SecurityHelper.isValid(webDomain, packageName, fingerprint); |
| } |
| |
| @Override |
| public void clear(Context context) { |
| // TODO: implement once if caches results or remove from the interface |
| } |
| } |