mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 08:16:49 +00:00
Adding some tests for request pin shortcut/widget flow
Bug: 33584624 Change-Id: I49df36f60d2ae071b9d2c77c9c3300e010cd3bb9
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* 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.launcher3.testcomponent;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.LinearLayout.LayoutParams;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
/**
|
||||
* Base activity with utility methods to help automate testing.
|
||||
*/
|
||||
public class BaseTestingActivity extends Activity implements View.OnClickListener {
|
||||
|
||||
public static final String SUFFIX_COMMAND = "-command";
|
||||
public static final String EXTRA_METHOD = "method";
|
||||
public static final String EXTRA_PARAM = "param_";
|
||||
|
||||
private static final int MARGIN_DP = 20;
|
||||
|
||||
private final String mAction = this.getClass().getName();
|
||||
|
||||
private LinearLayout mView;
|
||||
private int mMargin;
|
||||
|
||||
private final BroadcastReceiver mCommandReceiver = new BroadcastReceiver() {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
handleCommand(intent);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mMargin = Math.round(TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP, MARGIN_DP, getResources().getDisplayMetrics()));
|
||||
mView = new LinearLayout(this);
|
||||
mView.setPadding(mMargin, mMargin, mMargin, mMargin);
|
||||
mView.setOrientation(LinearLayout.VERTICAL);
|
||||
setContentView(mView);
|
||||
|
||||
registerReceiver(mCommandReceiver, new IntentFilter(mAction + SUFFIX_COMMAND));
|
||||
}
|
||||
|
||||
protected void addButton(String title, String method) {
|
||||
Button button = new Button(this);
|
||||
button.setText(title);
|
||||
button.setTag(method);
|
||||
button.setOnClickListener(this);
|
||||
|
||||
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
|
||||
lp.bottomMargin = mMargin;
|
||||
mView.addView(button, lp);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
sendBroadcast(new Intent(mAction).putExtra(Intent.EXTRA_INTENT, getIntent()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
unregisterReceiver(mCommandReceiver);
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
handleCommand(new Intent().putExtra(EXTRA_METHOD, (String) view.getTag()));
|
||||
}
|
||||
|
||||
private void handleCommand(Intent cmd) {
|
||||
String methodName = cmd.getStringExtra(EXTRA_METHOD);
|
||||
try {
|
||||
Method method = null;
|
||||
for (Method m : this.getClass().getDeclaredMethods()) {
|
||||
if (methodName.equals(m.getName()) &&
|
||||
!Modifier.isStatic(m.getModifiers()) &&
|
||||
Modifier.isPublic(m.getModifiers())) {
|
||||
method = m;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Object[] args = new Object[method.getParameterTypes().length];
|
||||
Bundle extras = cmd.getExtras();
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
args[i] = extras.get(EXTRA_PARAM + i);
|
||||
}
|
||||
method.invoke(this, args);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static Intent getCommandIntent(Class<?> clazz, String method) {
|
||||
return new Intent(clazz.getName() + SUFFIX_COMMAND)
|
||||
.putExtra(EXTRA_METHOD, method);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user