1c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian/* 2c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * Copyright (C) 2017 The Android Open Source Project 3c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * 4c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * you may not use this file except in compliance with the License. 6c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * You may obtain a copy of the License at 7c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * 8c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * 10c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * Unless required by applicable law or agreed to in writing, software 11c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * See the License for the specific language governing permissions and 14c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * limitations under the License 15c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian */ 16c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 17c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianpackage com.android.dialer.about; 18c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 19c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport android.content.Context; 20c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport android.support.v4.content.AsyncTaskLoader; 21c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport java.util.List; 22c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 23c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian/** {@link AsyncTaskLoader} to load the list of licenses for the license menu activity. */ 24c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianfinal class LicenseLoader extends AsyncTaskLoader<List<License>> { 25c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 26c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian private List<License> licenses; 27c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 28c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian LicenseLoader(Context context) { 29c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian // This must only pass the application context to avoid leaking a pointer to the Activity. 30c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian super(context.getApplicationContext()); 31c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 32c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 33c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 34c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian public List<License> loadInBackground() { 35c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian return Licenses.getLicenses(getContext()); 36c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 37c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 38c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 39c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian public void deliverResult(List<License> licenses) { 40c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian this.licenses = licenses; 41c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian super.deliverResult(licenses); 42c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 43c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 44c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 45c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian protected void onStartLoading() { 46c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian if (licenses != null) { 47c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian deliverResult(licenses); 48c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } else { 49c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian forceLoad(); 50c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 51c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 52c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 53c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 54c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian protected void onStopLoading() { 55c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian cancelLoad(); 56c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 57c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian} 58