17079df5a3fb155947004843ee8ec25b36127e3edSteven Ng/* 27079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * Copyright 2016, The Android Open Source Project 37079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * 47079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * Licensed under the Apache License, Version 2.0 (the "License"); 57079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * you may not use this file except in compliance with the License. 67079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * You may obtain a copy of the License at 77079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * 87079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * http://www.apache.org/licenses/LICENSE-2.0 97079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * 107079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * Unless required by applicable law or agreed to in writing, software 117079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * distributed under the License is distributed on an "AS IS" BASIS, 127079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * See the License for the specific language governing permissions and 147079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * limitations under the License. 157079df5a3fb155947004843ee8ec25b36127e3edSteven Ng */ 167079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 177079df5a3fb155947004843ee8ec25b36127e3edSteven Ngpackage com.android.managedprovisioning.parser; 187079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 197079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport static android.nfc.NfcAdapter.ACTION_NDEF_DISCOVERED; 207079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport static com.android.internal.util.Preconditions.checkNotNull; 217079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 227079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport android.content.Context; 237079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport android.content.Intent; 247079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport android.support.annotation.VisibleForTesting; 259b26a5adee4f3d9f674c8b9dc1a185ea290dc624Benjamin Franz 267079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport com.android.managedprovisioning.common.IllegalProvisioningArgumentException; 277079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport com.android.managedprovisioning.common.Utils; 287079df5a3fb155947004843ee8ec25b36127e3edSteven Ngimport com.android.managedprovisioning.model.ProvisioningParams; 297079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 307079df5a3fb155947004843ee8ec25b36127e3edSteven Ng/** 317079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * This class can initialize a {@link ProvisioningParams} object from an intent. 327079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * 337079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * <p>A {@link ProvisioningParams} object stores various parameters both for the device owner 347079df5a3fb155947004843ee8ec25b36127e3edSteven Ng * provisioning and profile owner provisioning. 357079df5a3fb155947004843ee8ec25b36127e3edSteven Ng */ 367079df5a3fb155947004843ee8ec25b36127e3edSteven Ngpublic class MessageParser implements ProvisioningDataParser { 377079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 387079df5a3fb155947004843ee8ec25b36127e3edSteven Ng private final Utils mUtils; 3990f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang private final Context mContext; 407079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 4190f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang public MessageParser(Context context) { 4290f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang this(context, new Utils()); 437079df5a3fb155947004843ee8ec25b36127e3edSteven Ng } 447079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 457079df5a3fb155947004843ee8ec25b36127e3edSteven Ng @VisibleForTesting 4690f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang MessageParser(Context context, Utils utils) { 4790f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang mContext = checkNotNull(context); 487079df5a3fb155947004843ee8ec25b36127e3edSteven Ng mUtils = checkNotNull(utils); 497079df5a3fb155947004843ee8ec25b36127e3edSteven Ng } 507079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 517079df5a3fb155947004843ee8ec25b36127e3edSteven Ng @Override 5290f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang public ProvisioningParams parse(Intent provisioningIntent) 537079df5a3fb155947004843ee8ec25b36127e3edSteven Ng throws IllegalProvisioningArgumentException { 5490f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang return getParser(provisioningIntent).parse(provisioningIntent); 557079df5a3fb155947004843ee8ec25b36127e3edSteven Ng } 567079df5a3fb155947004843ee8ec25b36127e3edSteven Ng 577079df5a3fb155947004843ee8ec25b36127e3edSteven Ng @VisibleForTesting 587079df5a3fb155947004843ee8ec25b36127e3edSteven Ng ProvisioningDataParser getParser(Intent provisioningIntent) { 597079df5a3fb155947004843ee8ec25b36127e3edSteven Ng if (ACTION_NDEF_DISCOVERED.equals(provisioningIntent.getAction())) { 6090f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang return new PropertiesProvisioningDataParser(mContext, mUtils); 617079df5a3fb155947004843ee8ec25b36127e3edSteven Ng } else { 6290f58ca887207a527c80d7e9ccea97e205c960d4Victor Chang return new ExtrasProvisioningDataParser(mContext, mUtils); 637079df5a3fb155947004843ee8ec25b36127e3edSteven Ng } 647079df5a3fb155947004843ee8ec25b36127e3edSteven Ng } 657079df5a3fb155947004843ee8ec25b36127e3edSteven Ng} 66