diff options
author | Girish Moturu <gmoturu@google.com> | 2017-05-11 10:02:04 +0530 |
---|---|---|
committer | Girish Moturu <gmoturu@google.com> | 2017-08-10 11:12:32 -0700 |
commit | 672af0ddeb6cee46740d131f60473c0733754b81 (patch) | |
tree | 2bdd9f9c82dfebef65a31b3fd1d7a138620950d7 | |
parent | afd0ad43555fda4808de6e9dc35717a0fe11fcba (diff) | |
download | connectivity-672af0ddeb6cee46740d131f60473c0733754b81.tar.gz |
Code for starting UID app
CHERRY PICKED CHANGES FROM AOSP
UID de-race automation requires an app to be launched, verify the
internet connectivity after launching. The following code needs to be
compiled to generate an APK which acts as an app
Bug: 38189852
Test: Reproduced and verified the bug fix in MR1 and OC
Change-Id: I6ed247cc6335d3b6be56ece97789076e9c4b4765
-rw-r--r-- | UID/Android.mk | 30 | ||||
-rw-r--r-- | UID/AndroidManifest.xml | 41 | ||||
-rw-r--r-- | UID/res/values/strings.xml | 22 | ||||
-rw-r--r-- | UID/res/values/styles.xml | 33 | ||||
-rw-r--r-- | UID/src/com/android/tests/connectivity/uid/ConnectivityTestActivity.java | 81 |
5 files changed, 207 insertions, 0 deletions
diff --git a/UID/Android.mk b/UID/Android.mk new file mode 100644 index 0000000..19851f6 --- /dev/null +++ b/UID/Android.mk @@ -0,0 +1,30 @@ +# +## Copyright (C) 2017 Google, Inc. +# +## 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. +# + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_PACKAGE_NAME := ConnectivityUIDTest +LOCAL_CERTIFICATE := platform +LOCAL_DEX_PREOPT := false + +LOCAL_SRC_FILES := $(call all-java-files-under, src) +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PRIVILEGED_MODULE := true +LOCAL_PROGUARD_ENABLED := disabled + +include $(BUILD_PACKAGE) diff --git a/UID/AndroidManifest.xml b/UID/AndroidManifest.xml new file mode 100644 index 0000000..0baa509 --- /dev/null +++ b/UID/AndroidManifest.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright 2017 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. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.tests.connectivity.uid" + android:versionCode="3" + android:versionName="3.0" > + + <uses-sdk + android:minSdkVersion="19" + android:targetSdkVersion="26" /> + + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + + <application + android:allowBackup="true" + android:label="@string/app_name" + android:theme="@style/AppTheme" > + <!-- Dummy activity --> + <activity + android:name="com.android.tests.connectivity.uid.ConnectivityTestActivity" + android:configChanges="keyboardHidden|orientation|screenSize" + android:label="@string/app_name" > + </activity> + </application> + +</manifest> diff --git a/UID/res/values/strings.xml b/UID/res/values/strings.xml new file mode 100644 index 0000000..9f0cf32 --- /dev/null +++ b/UID/res/values/strings.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright 2017 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. +--> +<resources> + + <string name="app_name">ConnectivityUIDTest</string> + <string name="settings">Settings</string> + +</resources> diff --git a/UID/res/values/styles.xml b/UID/res/values/styles.xml new file mode 100644 index 0000000..2847191 --- /dev/null +++ b/UID/res/values/styles.xml @@ -0,0 +1,33 @@ +<!-- + Copyright 2017 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. +--> +<resources> + + <!-- + Base application theme for API 14+. This theme completely replaces + AppBaseTheme from BOTH res/values/styles.xml and + res/values-v11/styles.xml on API 14+ devices. + --> + <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar"> + <!-- API 14 theme customizations can go here. --> + </style> + + <!-- Application theme. --> + <style name="AppTheme" parent="AppBaseTheme"> + <!-- All customizations that are NOT specific to a particular API-level can go here. --> + </style> + + +</resources> diff --git a/UID/src/com/android/tests/connectivity/uid/ConnectivityTestActivity.java b/UID/src/com/android/tests/connectivity/uid/ConnectivityTestActivity.java new file mode 100644 index 0000000..49c6c14 --- /dev/null +++ b/UID/src/com/android/tests/connectivity/uid/ConnectivityTestActivity.java @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2017 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.tests.connectivity.uid; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.Bundle; +import android.os.StrictMode; +import android.util.Log; +import java.io.*; +import java.lang.Thread; +import java.net.HttpURLConnection; +import java.net.URL; + +public class ConnectivityTestActivity extends Activity { + + ConnectivityManager connectivityManager; + NetworkInfo netInfo; + public static final String TAG = "ConnectivityUIDTest"; + private static final String RESULT = "result"; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + StrictMode.ThreadPolicy policy = + new StrictMode.ThreadPolicy.Builder().permitAll().build(); + StrictMode.setThreadPolicy(policy); + } + + public void onResume() { + super.onResume(); + boolean conn = checkNow(this.getApplicationContext()); + Intent returnIntent = new Intent(); + returnIntent.putExtra(RESULT, conn); + setResult(RESULT_OK, returnIntent); + finish(); + } + + public boolean checkNow(Context con) { + try{ + connectivityManager = (ConnectivityManager) + con.getSystemService(Context.CONNECTIVITY_SERVICE); + netInfo = connectivityManager.getActiveNetworkInfo(); + return netInfo.isConnected() && httpRequest(); + } catch(Exception e) { + Log.e(TAG, "CheckConnectivity exception: ", e); + } + + return false; + } + + private boolean httpRequest() throws IOException { + URL targetURL = new URL("http://www.google.com/generate_204"); + HttpURLConnection urlConnection = null; + try { + urlConnection = (HttpURLConnection) targetURL.openConnection(); + urlConnection.connect(); + int respCode = urlConnection.getResponseCode(); + return (respCode == 204); + } catch (IOException e) { + Log.e(TAG, "Checkconnectivity exception: ", e); + } + return false; + } +} |