cleanup
deleted: licensing/ILicenseResultListener.aidl
deleted: licensing/ILicensingService.aidl
deleted: licensing/LicenseChecker.java
deleted: licensing/LicenseCheckerCallback.java
deleted: licensing/LicenseValidator.java
deleted: licensing/Policy.java
deleted: licensing/ResponseData.java
deleted: licensing/StrictPolicy.java
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/ILicenseResultListener.aidl b/samples/MarketLicensing/src/com/android/vending/licensing/ILicenseResultListener.aidl
deleted file mode 100755
index 869cb16..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/ILicenseResultListener.aidl
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-oneway interface ILicenseResultListener {
- void verifyLicense(int responseCode, String signedData, String signature);
-}
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/ILicensingService.aidl b/samples/MarketLicensing/src/com/android/vending/licensing/ILicensingService.aidl
deleted file mode 100755
index 9541a20..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/ILicensingService.aidl
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-import com.android.vending.licensing.ILicenseResultListener;
-
-oneway interface ILicensingService {
- void checkLicense(long nonce, String packageName, in ILicenseResultListener listener);
-}
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/LicenseChecker.java b/samples/MarketLicensing/src/com/android/vending/licensing/LicenseChecker.java
deleted file mode 100755
index 773b8cd..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/LicenseChecker.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-import java.security.SecureRandom;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.util.Log;
-
-import com.android.vending.licensing.LicenseCheckerCallback.ApplicationErrorCode;
-import com.android.vending.licensing.Policy.LicenseResponse;
-
-/**
- * Client library for Android Market license verifications.
- *
- * The LicenseChecker is configured via a {@link Policy} which contains the
- * logic to determine whether a user should have access to the application.
- * For example, the Policy can define a threshold for allowable number of
- * server or client failures before the library reports the user as not having
- * access.
- *
- * This library is not thread-safe. Multiple, concurrent checks will result in
- * an error.
- */
-public class LicenseChecker implements ServiceConnection {
- private static final String TAG = "LicenseChecker";
-
- private static final SecureRandom RANDOM = new SecureRandom();
-
- private ILicensingService mService;
-
- /** Validator for the request in progress. */
- private LicenseValidator mValidator;
-
- private final Context mContext;
- private final Policy mPolicy;
- /** Listener for service (IPC) calls. */
- private final ResultListener mListener;
- private final String mPackageName;
- private final String mVersionCode;
-
- public LicenseChecker(Context context, Policy policy) {
- mContext = context;
- mPolicy = policy;
- mListener = new ResultListener();
- mPackageName = mContext.getPackageName();
- mVersionCode = getVersionCode(context, mPackageName);
- }
-
- private boolean isInProgress() {
- return mValidator != null;
- }
-
- /**
- * Checks if the user should have access to the app.
- *
- * @param callback
- */
- public synchronized void checkAccess(LicenseCheckerCallback callback) {
- if (isInProgress()) {
- callback.applicationError(ApplicationErrorCode.CHECK_IN_PROGRESS);
- }
-
- mValidator = new LicenseValidator(mPolicy, callback, generateNonce(), mPackageName,
- mVersionCode);
-
- Log.i(TAG, "Binding to licensing service.");
- boolean bindResult = mContext.bindService(new Intent(ILicensingService.class.getName()),
- this, // ServiceConnection.
- Context.BIND_AUTO_CREATE);
-
- if (!bindResult) {
- Log.e(TAG, "Could not bind to service.");
- callback.dontAllow();
- // No need to unbind at this point.
- return;
- }
- }
-
- private class ResultListener extends ILicenseResultListener.Stub {
- public void verifyLicense(int responseCode, String signedData, String signature) {
- mValidator.verify(responseCode, signedData, signature);
- cleanup();
- }
- }
-
- public void onServiceConnected(ComponentName name, IBinder service) {
- mService = ILicensingService.Stub.asInterface(service);
-
- try {
- Log.i(TAG, "Calling checkLicense on service for " + mValidator.getPackageName());
- mService.checkLicense(mValidator.getNonce(), mValidator.getPackageName(), mListener);
- } catch (RemoteException e) {
- Log.w(TAG, "RemoteException in checkLicense call.", e);
- handleServiceConnectionError();
- // cleanup unbinds service.
- cleanup();
- }
- }
-
- public void onServiceDisconnected(ComponentName name) {
- // Called when the connection with the service has been
- // unexpectedly disconnected. That is, Market crashed.
- Log.w(TAG, "Service unexpectedly disconnected.");
- handleServiceConnectionError();
- // cleanup unbinds service.
- cleanup();
- }
-
- private void handleServiceConnectionError() {
- if (mPolicy.allowAccess(LicenseResponse.CLIENT_RETRY)) {
- mValidator.getCallback().allow();
- } else {
- mValidator.getCallback().dontAllow();
- }
- }
-
- /** Resets request state. */
- private synchronized void cleanup() {
- mContext.unbindService(this);
- mValidator = null;
- }
-
- /** Generates a nonce (number used once). */
- private int generateNonce() {
- return RANDOM.nextInt();
- }
-
- /**
- * Get version code for the application package name.
- *
- * @param context
- * @param packageName application package name
- * @return the version code or empty string if package not found
- */
- private static String getVersionCode(Context context, String packageName) {
- try {
- return String.valueOf(context.getPackageManager().getPackageInfo(packageName, 0).
- versionCode);
- } catch (NameNotFoundException e) {
- Log.e(TAG, "Package not found. could not get version code.");
- return "";
- }
- }
-}
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/LicenseCheckerCallback.java b/samples/MarketLicensing/src/com/android/vending/licensing/LicenseCheckerCallback.java
deleted file mode 100755
index 1567497..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/LicenseCheckerCallback.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-/**
- * Callback for the license checker library.
- *
- * Upon checking with the Market server and conferring with the policy, the
- * library calls a appropriate callback method to communicate the result.
- */
-public interface LicenseCheckerCallback {
-
- /**
- * Allow use. App should proceed as normal.
- */
- public void allow();
-
- /**
- * Don't allow use. App should inform user and take appropriate action.
- */
- public void dontAllow();
-
- /** Application error codes. */
- public enum ApplicationErrorCode {
- /** Package is not installed. */
- INVALID_PACKAGE_NAME,
- /** Requested for a package that is not the current app. */
- NON_MATCHING_UID,
- /** Market does not know about the package. */
- NOT_MARKET_MANAGED,
- /** A previous check request is already in progress.
- * Only one check is allowed at a time. */
- CHECK_IN_PROGRESS
- }
-
- /**
- * Error in application code. Caller did not call or set up license
- * checker correctly. Should be considered fatal.
- */
- public void applicationError(ApplicationErrorCode errorCode);
-}
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/LicenseValidator.java b/samples/MarketLicensing/src/com/android/vending/licensing/LicenseValidator.java
deleted file mode 100755
index 135d98e..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/LicenseValidator.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-import android.util.Log;
-
-import com.android.vending.licensing.LicenseCheckerCallback.ApplicationErrorCode;
-import com.android.vending.licensing.Policy.LicenseResponse;
-
-/**
- * Contains data related to a licensing request and methods to verify
- * and process the response.
- */
-class LicenseValidator {
- private static final String TAG = "LicenseValidator";
-
- // Server response codes.
- private static final int LICENSED = 0x0;
- private static final int NOT_LICENSED = 0x1;
- private static final int LICENSED_OLD_KEY = 0x2;
- private static final int ERROR_NOT_MARKET_MANAGED = 0x3;
- private static final int ERROR_INVALID_KEYS = 0x4;
- private static final int ERROR_OVER_QUOTA = 0x5;
-
- private static final int ERROR_CONTACTING_SERVER = 0x101;
- private static final int ERROR_INVALID_PACKAGE_NAME = 0x102;
- private static final int ERROR_NON_MATCHING_UID = 0x103;
-
- private final Policy mPolicy;
- private final LicenseCheckerCallback mCallback;
- private final int mNonce;
- private final String mPackageName;
- private final String mVersionCode;
-
- LicenseValidator(Policy policy, LicenseCheckerCallback callback, int nonce, String packageName,
- String versionCode) {
- mPolicy = policy;
- mCallback = callback;
- mNonce = nonce;
- mPackageName = packageName;
- mVersionCode = versionCode;
- }
-
- public LicenseCheckerCallback getCallback() {
- return mCallback;
- }
-
- public int getNonce() {
- return mNonce;
- }
-
- public String getPackageName() {
- return mPackageName;
- }
-
- /**
- * Verifies the response from server and calls appropriate callback method.
- *
- * @param responseCode server response code
- * @param signedData signed data from server
- * @param signature server signature
- */
- public void verify(int responseCode, String signedData, String signature) {
- // Parse and validate response.
- // TODO(jyum): decode data with signature.
- // TODO(jyum): verify timestamp is within reason. However, relying
- // on device clock may lead to problems?
- ResponseData data;
- try {
- data = ResponseData.parse(signedData);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Could not parse response.");
- handleInvalidResponse();
- return;
- }
-
- if (data.responseCode != responseCode) {
- Log.e(TAG, "Response codes don't match.");
- handleInvalidResponse();
- return;
- }
-
- if (data.nonce != mNonce) {
- Log.e(TAG, "Nonce doesn't match.");
- handleInvalidResponse();
- return;
- }
-
- if (!data.packageName.equals(mPackageName)) {
- Log.e(TAG, "Package name doesn't match.");
- handleInvalidResponse();
- return;
- }
-
- if (!data.versionCode.equals(mVersionCode)) {
- Log.e(TAG, "Version codes don't match.");
- handleInvalidResponse();
- return;
- }
-
- switch (responseCode) {
- case LICENSED:
- case LICENSED_OLD_KEY:
- handleResponse(LicenseResponse.LICENSED);
- break;
- case NOT_LICENSED:
- handleResponse(LicenseResponse.NOT_LICENSED);
- break;
- case ERROR_CONTACTING_SERVER:
- handleResponse(LicenseResponse.CLIENT_RETRY);
- break;
- case ERROR_INVALID_KEYS:
- case ERROR_OVER_QUOTA:
- handleResponse(LicenseResponse.SERVER_RETRY);
- break;
- case ERROR_INVALID_PACKAGE_NAME:
- handleApplicationError(ApplicationErrorCode.INVALID_PACKAGE_NAME);
- break;
- case ERROR_NON_MATCHING_UID:
- handleApplicationError(ApplicationErrorCode.NON_MATCHING_UID);
- break;
- case ERROR_NOT_MARKET_MANAGED:
- handleApplicationError(ApplicationErrorCode.NOT_MARKET_MANAGED);
- break;
- default:
- Log.e(TAG, "Unknown response code for license check.");
- handleInvalidResponse();
- }
- }
-
- /**
- * Confers with policy and calls appropriate callback method.
- *
- * @param response
- */
- private void handleResponse(LicenseResponse response) {
- if (mPolicy.allowAccess(response)) {
- mCallback.allow();
- } else {
- mCallback.dontAllow();
- }
- }
-
- private void handleApplicationError(ApplicationErrorCode code) {
- mCallback.applicationError(code);
- }
-
- private void handleInvalidResponse() {
- mCallback.dontAllow();
- }
-}
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/Policy.java b/samples/MarketLicensing/src/com/android/vending/licensing/Policy.java
deleted file mode 100755
index 461c08e..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/Policy.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-/**
- * Policy used by {@link LicenseChecker} to determine whether a user should
- * have access to the application.
- */
-public interface Policy {
-
- /**
- * Result of a license check.
- */
- public enum LicenseResponse {
- /**
- * User is licensed to use the app.
- */
- LICENSED,
- /**
- * User is not licensed to use the app.
- */
- NOT_LICENSED,
- /**
- * Retryable error on the client side e.g. no network.
- */
- CLIENT_RETRY,
- /**
- * Retryable error on the server side e.g. application is over request
- * quota.
- */
- SERVER_RETRY,
- }
-
- /**
- * Determines whether the user should be allowed access.
- *
- * @param response result of the license check request
- * @return true iff access should be allowed
- */
- boolean allowAccess(LicenseResponse response);
-}
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/ResponseData.java b/samples/MarketLicensing/src/com/android/vending/licensing/ResponseData.java
deleted file mode 100755
index 3882d56..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/ResponseData.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-import java.util.Iterator;
-import java.util.regex.Pattern;
-
-import android.text.TextUtils;
-
-/**
- * ResponseData from licensing server.
- */
-class ResponseData {
-
- public int responseCode;
- public int nonce;
- public String packageName;
- public String versionCode;
- public String userId;
- public long timestamp;
- /** Response-specific data. */
- public String extra;
-
- /**
- * Parses response string into ResponseData.
- *
- * @param responseData response data string
- * @throws IllegalArgumentException upon parsing error
- * @return ResponseData object
- */
- public static ResponseData parse(String responseData) {
- // Must parse out main response data and response-specific data.
- TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(':');
- splitter.setString(responseData);
- Iterator<String> it = splitter.iterator();
- if (!it.hasNext()) {
- throw new IllegalArgumentException("Blank response.");
- }
- final String mainData = it.next();
-
- // Response-specific (extra) data is optional.
- String extraData = "";
- if (it.hasNext()) {
- extraData = it.next();
- }
-
- String [] fields = TextUtils.split(mainData, Pattern.quote("|"));
- if (fields.length < 5) {
- throw new IllegalArgumentException("Wrong number of fields.");
- }
-
- ResponseData data = new ResponseData();
- data.extra = extraData;
- data.responseCode = Integer.parseInt(fields[0]);
- data.nonce = Integer.parseInt(fields[1]);
- data.packageName = fields[2];
- data.versionCode = fields[3];
- // TODO(jyum): userId is not there yet.
- // data.userId = fields[4];
- data.timestamp = Long.parseLong(fields[4]);
-
- return data;
- }
-
- @Override
- public String toString() {
- return TextUtils.join("|", new Object [] { responseCode, nonce, packageName, versionCode,
- userId, timestamp });
- }
-}
diff --git a/samples/MarketLicensing/src/com/android/vending/licensing/StrictPolicy.java b/samples/MarketLicensing/src/com/android/vending/licensing/StrictPolicy.java
deleted file mode 100755
index ddff8e9..0000000
--- a/samples/MarketLicensing/src/com/android/vending/licensing/StrictPolicy.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.vending.licensing;
-
-/**
- * Strict policy.
- *
- * Should never be used in a real application as it strictly disallows access
- * upon retryable errors such as no connection present.
- */
-public class StrictPolicy implements Policy {
-
- public boolean allowAccess(LicenseResponse response) {
- return LicenseResponse.LICENSED == response;
- }
-}