/*
* 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.quicksearchbox.tests.naughty;
import android.app.SearchManager;
import android.content.Intent;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.net.Uri;
import android.util.Log;
import java.util.List;
public class CrashingSuggestionProvider extends NaughtySuggestionProvider {
private static final String TAG = CrashingSuggestionProvider.class.getSimpleName();
private static final String[] COLUMNS = {
"_id",
SearchManager.SUGGEST_COLUMN_TEXT_1,
SearchManager.SUGGEST_COLUMN_ICON_1,
SearchManager.SUGGEST_COLUMN_TEXT_2,
SearchManager.SUGGEST_COLUMN_ICON_2,
SearchManager.SUGGEST_COLUMN_INTENT_ACTION,
SearchManager.SUGGEST_COLUMN_INTENT_DATA,
};
@Override
public boolean onCreate() {
return true;
}
@Override
public Cursor query(Uri uri, String[] projectionIn, String selection,
String[] selectionArgs, String sortOrder) {
Log.d(TAG, "query(" + uri + ")");
List<String> path = uri.getPathSegments();
String query = null;
if (path.size() > 0) {
query = path.get(path.size()-1);
}
if ("crash".equals(query)) {
beNaughty();
return null;
} else if ("exit".equals(query)) {
System.exit(0);
return null;
} else {
MatrixCursor cursor = new MatrixCursor(COLUMNS);
if ("icon".equals(query)) {
for (int i = 0; i < 100; i++) {
cursor.addRow(new Object[]{
i,
"Naughty suggestion " + i,
"content://com.android.quicksearchbox.tests.naughty.crashing/icon/" + i,
"Crashing icon 1",
null,
Intent.ACTION_VIEW,
"content://com.android.quicksearchbox.naughty.crashing/" + i
});
}
} else if ("icon2".equals(query)) {
for (int i = 0; i < 100; i++) {
cursor.addRow(new Object[]{
i,
"Naughty suggestion " + i,
R.drawable.crash,
"Crashing icon 2",
"content://com.android.quicksearchbox.tests.naughty.crashing/icon2/" + i,
Intent.ACTION_VIEW,
"content://com.android.quicksearchbox.naughty.crashing/" + i
});
}
} else {
cursor.addRow(new Object[]{
0,
"Enter 'crash', 'exit', 'icon' or 'icon2'",
R.drawable.crash,
"To make me crash",
null,
Intent.ACTION_VIEW,
"content://com.android.quicksearchbox.naughty.crashing/0"
});
}
return cursor;
}
}
@Override
protected void beNaughty() {
throw new NaughtyException();
}
private static class NaughtyException extends RuntimeException {
}
}