blob: 4cb7716ee5e9b55847068b76d11d4586f5d7088b [file] [log] [blame]
/*
* Copyright (C) 2015 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.benchmark.registry;
import android.content.ComponentName;
import android.content.Intent;
import android.view.View;
import android.widget.CheckBox;
/**
* Logical grouping of benchmarks
*/
public class BenchmarkGroup {
public static final String BENCHMARK_EXTRA_ENABLED_TESTS =
"com.android.benchmark.EXTRA_ENABLED_BENCHMARK_IDS";
public static final String BENCHMARK_EXTRA_RUN_COUNT =
"com.android.benchmark.EXTRA_RUN_COUNT";
public static final String BENCHMARK_EXTRA_FINISH = "com.android.benchmark.FINISH_WHEN_DONE";
public static class Benchmark implements CheckBox.OnClickListener {
/** The name of this individual benchmark test */
private final String mName;
/** The category of this individual benchmark test */
private final @BenchmarkCategory int mCategory;
/** Human-readable description of the benchmark */
private final String mDescription;
private final int mId;
private boolean mEnabled;
Benchmark(int id, String name, @BenchmarkCategory int category, String description) {
mId = id;
mName = name;
mCategory = category;
mDescription = description;
mEnabled = true;
}
public boolean isEnabled() { return mEnabled; }
public void setEnabled(boolean enabled) { mEnabled = enabled; }
public int getId() { return mId; }
public String getDescription() { return mDescription; }
public @BenchmarkCategory int getCategory() { return mCategory; }
public String getName() { return mName; }
@Override
public void onClick(View view) {
setEnabled(((CheckBox)view).isChecked());
}
}
/**
* Component for this benchmark group.
*/
private final ComponentName mComponentName;
/**
* Benchmark title, showed in the {@link android.widget.ListView}
*/
private final String mTitle;
/**
* List of all benchmarks exported by this group
*/
private final Benchmark[] mBenchmarks;
/**
* The intent to launch the benchmark
*/
private final Intent mIntent;
/** Human-readable description of the benchmark group */
private final String mDescription;
BenchmarkGroup(ComponentName componentName, String title,
String description, Benchmark[] benchmarks, Intent intent) {
mComponentName = componentName;
mTitle = title;
mBenchmarks = benchmarks;
mDescription = description;
mIntent = intent;
}
public Intent getIntent() {
int[] enabledBenchmarksIds = getEnabledBenchmarksIds();
if (enabledBenchmarksIds.length != 0) {
mIntent.putExtra(BENCHMARK_EXTRA_ENABLED_TESTS, enabledBenchmarksIds);
return mIntent;
}
return null;
}
public ComponentName getComponentName() {
return mComponentName;
}
public String getTitle() {
return mTitle;
}
public Benchmark[] getBenchmarks() {
return mBenchmarks;
}
public String getDescription() {
return mDescription;
}
private int[] getEnabledBenchmarksIds() {
int enabledBenchmarkCount = 0;
for (int i = 0; i < mBenchmarks.length; i++) {
if (mBenchmarks[i].isEnabled()) {
enabledBenchmarkCount++;
}
}
int writeIndex = 0;
int[] enabledBenchmarks = new int[enabledBenchmarkCount];
for (int i = 0; i < mBenchmarks.length; i++) {
if (mBenchmarks[i].isEnabled()) {
enabledBenchmarks[writeIndex++] = mBenchmarks[i].getId();
}
}
return enabledBenchmarks;
}
}