Home | History | Annotate | Download | only in managedprovisioning
      1 /*
      2  * Copyright 2014, The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *     http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.managedprovisioning;
     18 
     19 import android.os.Parcel;
     20 import android.os.Parcelable;
     21 import android.os.PersistableBundle;
     22 import android.util.Base64;
     23 import java.util.Locale;
     24 
     25 
     26 /**
     27  * Provisioning Parameters for DeviceOwner Provisioning
     28  */
     29 public class ProvisioningParams implements Parcelable {
     30     public static final long DEFAULT_LOCAL_TIME = -1;
     31     public static final boolean DEFAULT_WIFI_HIDDEN = false;
     32     public static final int DEFAULT_WIFI_PROXY_PORT = 0;
     33 
     34     public String mTimeZone;
     35     public long mLocalTime = DEFAULT_LOCAL_TIME;
     36     public Locale mLocale;
     37 
     38     public String mWifiSsid;
     39     public boolean mWifiHidden = DEFAULT_WIFI_HIDDEN;
     40     public String mWifiSecurityType;
     41     public String mWifiPassword;
     42     public String mWifiProxyHost;
     43     public int mWifiProxyPort = DEFAULT_WIFI_PROXY_PORT;
     44     public String mWifiProxyBypassHosts;
     45     public String mWifiPacUrl;
     46 
     47     public String mDeviceAdminPackageName; // Package name of the device admin package.
     48 
     49     public String mDeviceAdminPackageDownloadLocation; // Url of the device admin .apk
     50     public String mDeviceAdminPackageDownloadCookieHeader; // Cookie header for http request
     51     public byte[] mDeviceAdminPackageChecksum = new byte[0]; // SHA-1 sum of the .apk file.
     52 
     53     public PersistableBundle mAdminExtrasBundle;
     54 
     55     public boolean mStartedByNfc; // True iff provisioning flow was started by Nfc bump.
     56 
     57     public String getLocaleAsString() {
     58         if (mLocale != null) {
     59             return mLocale.getLanguage() + "_" + mLocale.getCountry();
     60         } else {
     61             return null;
     62         }
     63     }
     64 
     65     public String getDeviceAdminPackageChecksumAsString() {
     66         return Base64.encodeToString(mDeviceAdminPackageChecksum,
     67                 Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP);
     68     }
     69 
     70     @Override
     71     public int describeContents() {
     72         return 0;
     73     }
     74 
     75     @Override
     76     public void writeToParcel(Parcel out, int flags) {
     77         out.writeString(mTimeZone);
     78         out.writeLong(mLocalTime);
     79         out.writeSerializable(mLocale);
     80         out.writeString(mWifiSsid);
     81         out.writeInt(mWifiHidden ? 1 : 0);
     82         out.writeString(mWifiSecurityType);
     83         out.writeString(mWifiPassword);
     84         out.writeString(mWifiProxyHost);
     85         out.writeInt(mWifiProxyPort);
     86         out.writeString(mWifiProxyBypassHosts);
     87         out.writeString(mDeviceAdminPackageName);
     88         out.writeString(mDeviceAdminPackageDownloadLocation);
     89         out.writeString(mDeviceAdminPackageDownloadCookieHeader);
     90         out.writeInt(mDeviceAdminPackageChecksum.length);
     91         out.writeByteArray(mDeviceAdminPackageChecksum);
     92         out.writeParcelable(mAdminExtrasBundle, 0 /* default */);
     93         out.writeInt(mStartedByNfc ? 1 : 0);
     94     }
     95 
     96     public static final Parcelable.Creator<ProvisioningParams> CREATOR
     97         = new Parcelable.Creator<ProvisioningParams>() {
     98         @Override
     99         public ProvisioningParams createFromParcel(Parcel in) {
    100             ProvisioningParams params = new ProvisioningParams();
    101             params.mTimeZone = in.readString();
    102             params.mLocalTime = in.readLong();
    103             params.mLocale = (Locale) in.readSerializable();
    104             params.mWifiSsid = in.readString();
    105             params.mWifiHidden = in.readInt() == 1;
    106             params.mWifiSecurityType = in.readString();
    107             params.mWifiPassword = in.readString();
    108             params.mWifiProxyHost = in.readString();
    109             params.mWifiProxyPort = in.readInt();
    110             params.mWifiProxyBypassHosts = in.readString();
    111             params.mDeviceAdminPackageName = in.readString();
    112             params.mDeviceAdminPackageDownloadLocation = in.readString();
    113             params.mDeviceAdminPackageDownloadCookieHeader = in.readString();
    114             int checksumLength = in.readInt();
    115             params.mDeviceAdminPackageChecksum = new byte[checksumLength];
    116             in.readByteArray(params.mDeviceAdminPackageChecksum);
    117             params.mAdminExtrasBundle = in.readParcelable(null /* use default classloader */);
    118             params.mStartedByNfc = in.readInt() == 1;
    119             return params;
    120         }
    121 
    122         @Override
    123         public ProvisioningParams[] newArray(int size) {
    124             return new ProvisioningParams[size];
    125         }
    126     };
    127 }
    128