blob: 1734b347ab9cec35c0ebf74b699e7a9b437f1731 [file] [log] [blame]
Jeremy Joslinf621bc92017-02-16 11:11:57 -08001package android.net;
2
3import android.annotation.Nullable;
4import android.content.ComponentName;
5import android.os.Parcel;
6import android.os.Parcelable;
7
8import java.util.Objects;
9
10/**
11 * Holds metadata about a discovered network scorer/recommendation application.
12 *
13 * @hide
14 */
15public final class NetworkScorerAppData implements Parcelable {
16 /** UID of the scorer app. */
17 public final int packageUid;
18 private final ComponentName mRecommendationService;
Stephen Chen8b1339a2017-02-28 18:11:34 -080019 /** User visible label in Settings for the recommendation service. */
20 private final String mRecommendationServiceLabel;
Jeremy Joslinf621bc92017-02-16 11:11:57 -080021 /**
22 * The {@link ComponentName} of the Activity to start before enabling the "connect to open
23 * wifi networks automatically" feature.
24 */
25 private final ComponentName mEnableUseOpenWifiActivity;
Amin Shaikhd6013602017-03-24 15:52:32 -070026 /**
27 * The {@link android.app.NotificationChannel} ID used by {@link #mRecommendationService} to
28 * post open network notifications.
29 */
30 private final String mNetworkAvailableNotificationChannelId;
Jeremy Joslinf621bc92017-02-16 11:11:57 -080031
32 public NetworkScorerAppData(int packageUid, ComponentName recommendationServiceComp,
Amin Shaikhd6013602017-03-24 15:52:32 -070033 String recommendationServiceLabel, ComponentName enableUseOpenWifiActivity,
34 String networkAvailableNotificationChannelId) {
Jeremy Joslinf621bc92017-02-16 11:11:57 -080035 this.packageUid = packageUid;
36 this.mRecommendationService = recommendationServiceComp;
Stephen Chen8b1339a2017-02-28 18:11:34 -080037 this.mRecommendationServiceLabel = recommendationServiceLabel;
Jeremy Joslinf621bc92017-02-16 11:11:57 -080038 this.mEnableUseOpenWifiActivity = enableUseOpenWifiActivity;
Amin Shaikhd6013602017-03-24 15:52:32 -070039 this.mNetworkAvailableNotificationChannelId = networkAvailableNotificationChannelId;
Jeremy Joslinf621bc92017-02-16 11:11:57 -080040 }
41
42 protected NetworkScorerAppData(Parcel in) {
43 packageUid = in.readInt();
44 mRecommendationService = ComponentName.readFromParcel(in);
Stephen Chen8b1339a2017-02-28 18:11:34 -080045 mRecommendationServiceLabel = in.readString();
Jeremy Joslinf621bc92017-02-16 11:11:57 -080046 mEnableUseOpenWifiActivity = ComponentName.readFromParcel(in);
Amin Shaikhd6013602017-03-24 15:52:32 -070047 mNetworkAvailableNotificationChannelId = in.readString();
Jeremy Joslinf621bc92017-02-16 11:11:57 -080048 }
49
50 @Override
51 public void writeToParcel(Parcel dest, int flags) {
52 dest.writeInt(packageUid);
53 ComponentName.writeToParcel(mRecommendationService, dest);
Stephen Chen8b1339a2017-02-28 18:11:34 -080054 dest.writeString(mRecommendationServiceLabel);
Jeremy Joslinf621bc92017-02-16 11:11:57 -080055 ComponentName.writeToParcel(mEnableUseOpenWifiActivity, dest);
Amin Shaikhd6013602017-03-24 15:52:32 -070056 dest.writeString(mNetworkAvailableNotificationChannelId);
Jeremy Joslinf621bc92017-02-16 11:11:57 -080057 }
58
59 @Override
60 public int describeContents() {
61 return 0;
62 }
63
64 public static final Creator<NetworkScorerAppData> CREATOR =
65 new Creator<NetworkScorerAppData>() {
66 @Override
67 public NetworkScorerAppData createFromParcel(Parcel in) {
68 return new NetworkScorerAppData(in);
69 }
70
71 @Override
72 public NetworkScorerAppData[] newArray(int size) {
73 return new NetworkScorerAppData[size];
74 }
75 };
76
77 public String getRecommendationServicePackageName() {
78 return mRecommendationService.getPackageName();
79 }
80
81 public ComponentName getRecommendationServiceComponent() {
82 return mRecommendationService;
83 }
84
85 @Nullable
86 public ComponentName getEnableUseOpenWifiActivity() {
87 return mEnableUseOpenWifiActivity;
88 }
89
Stephen Chen8b1339a2017-02-28 18:11:34 -080090 @Nullable
91 public String getRecommendationServiceLabel() {
92 return mRecommendationServiceLabel;
93 }
94
Amin Shaikhd6013602017-03-24 15:52:32 -070095 @Nullable
96 public String getNetworkAvailableNotificationChannelId() {
97 return mNetworkAvailableNotificationChannelId;
98 }
99
Jeremy Joslinf621bc92017-02-16 11:11:57 -0800100 @Override
101 public String toString() {
102 return "NetworkScorerAppData{" +
103 "packageUid=" + packageUid +
104 ", mRecommendationService=" + mRecommendationService +
Stephen Chen8b1339a2017-02-28 18:11:34 -0800105 ", mRecommendationServiceLabel=" + mRecommendationServiceLabel +
Jeremy Joslinf621bc92017-02-16 11:11:57 -0800106 ", mEnableUseOpenWifiActivity=" + mEnableUseOpenWifiActivity +
Amin Shaikhd6013602017-03-24 15:52:32 -0700107 ", mNetworkAvailableNotificationChannelId=" +
108 mNetworkAvailableNotificationChannelId +
Jeremy Joslinf621bc92017-02-16 11:11:57 -0800109 '}';
110 }
111
112 @Override
113 public boolean equals(Object o) {
114 if (this == o) return true;
115 if (o == null || getClass() != o.getClass()) return false;
116 NetworkScorerAppData that = (NetworkScorerAppData) o;
117 return packageUid == that.packageUid &&
118 Objects.equals(mRecommendationService, that.mRecommendationService) &&
Stephen Chen8b1339a2017-02-28 18:11:34 -0800119 Objects.equals(mRecommendationServiceLabel, that.mRecommendationServiceLabel) &&
Amin Shaikhd6013602017-03-24 15:52:32 -0700120 Objects.equals(mEnableUseOpenWifiActivity, that.mEnableUseOpenWifiActivity) &&
121 Objects.equals(mNetworkAvailableNotificationChannelId,
122 that.mNetworkAvailableNotificationChannelId);
Jeremy Joslinf621bc92017-02-16 11:11:57 -0800123 }
124
125 @Override
126 public int hashCode() {
Stephen Chen8b1339a2017-02-28 18:11:34 -0800127 return Objects.hash(packageUid, mRecommendationService, mRecommendationServiceLabel,
Amin Shaikhd6013602017-03-24 15:52:32 -0700128 mEnableUseOpenWifiActivity, mNetworkAvailableNotificationChannelId);
Jeremy Joslinf621bc92017-02-16 11:11:57 -0800129 }
130}