blob: 02343eaf099f6f001d5512b6e6e82c0e825a7fe9 [file] [log] [blame]
// Copyright 2017 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.chrome.browser.preferences.autofill;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.util.Pair;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.payments.AndroidPaymentAppFactory;
import org.chromium.chrome.browser.payments.ServiceWorkerPaymentAppBridge;
import org.chromium.chrome.browser.preferences.PreferenceUtils;
import org.chromium.chrome.browser.preferences.TextMessagePreference;
import java.util.Map;
/**
* Preference fragment to allow users to control use of the Android payment apps on device.
*/
public class AndroidPaymentAppsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceUtils.addPreferencesFromResource(
this, R.xml.autofill_and_payments_preference_fragment_screen);
getActivity().setTitle(R.string.payment_apps_title);
}
@Override
public void onResume() {
super.onResume();
rebuildPaymentAppsList();
}
private void rebuildPaymentAppsList() {
getPreferenceScreen().removeAll();
getPreferenceScreen().setOrderingAsAdded(true);
ServiceWorkerPaymentAppBridge.getServiceWorkerPaymentAppsInfo(
new ServiceWorkerPaymentAppBridge.GetServiceWorkerPaymentAppsInfoCallback() {
@Override
public void onGetServiceWorkerPaymentAppsInfo(
Map<String, Pair<String, Bitmap>> appsInfo) {
addPaymentAppsPreference(
AndroidPaymentAppFactory.getAndroidPaymentAppsInfo(), appsInfo);
}
});
}
private void addPaymentAppsPreference(Map<String, Pair<String, Drawable>> androidAppsInfo,
Map<String, Pair<String, Bitmap>> serviceWorkerAppsInfo) {
if (androidAppsInfo.isEmpty() && serviceWorkerAppsInfo.isEmpty()) return;
AndroidPaymentAppPreference pref = null;
for (Map.Entry<String, Pair<String, Drawable>> app : androidAppsInfo.entrySet()) {
pref = new AndroidPaymentAppPreference(getActivity());
pref.setTitle(app.getValue().first);
pref.setIcon(app.getValue().second);
getPreferenceScreen().addPreference(pref);
}
for (Map.Entry<String, Pair<String, Bitmap>> app : serviceWorkerAppsInfo.entrySet()) {
pref = new AndroidPaymentAppPreference(getActivity());
pref.setTitle(app.getValue().first);
pref.setSummary(app.getKey());
pref.setIcon(app.getValue().second == null
? new ColorDrawable(Color.TRANSPARENT)
: new BitmapDrawable(getResources(), app.getValue().second));
getPreferenceScreen().addPreference(pref);
}
// Add a divider line at the bottom of the last preference to separate it from below
// TextMessagePreference.
if (pref != null) pref.setDrawDivider(true);
TextMessagePreference textPreference = new TextMessagePreference(getActivity(), null);
textPreference.setTitle(getActivity().getString(R.string.payment_apps_usage_message));
getPreferenceScreen().addPreference(textPreference);
}
}