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