19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
171d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenpackage android.view;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
191d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenimport com.android.frameworks.coretests.R;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.ListActivity;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ContextMenu;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.Menu;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MenuItem;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.SubMenu;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewGroup;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.LayoutInflater;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ContextMenu.ContextMenuInfo;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.AdapterView;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.BaseAdapter;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.TextView;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Exercises context menus in lists
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ListContextMenu extends ListActivity implements View.OnCreateContextMenuListener
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String TAG = "ListContextMenu";
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ThrashListAdapter mAdapter;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private class ThrashListAdapter extends BaseAdapter {
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        private LayoutInflater mInflater;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        private String[] mTitles = new String[100];
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public ThrashListAdapter(Context context) {
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mTitles = new String[100];
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int i;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            for (i=0; i<100; i++) {
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                mTitles[i] = "[" + i + "]";
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public int getCount() {
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mTitles.length;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public Object getItem(int position) {
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return position;
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public long getItemId(int position) {
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return position;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public View getView(int position, View convertView, ViewGroup parent) {
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            TextView view;
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (convertView == null) {
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                view = (TextView) mInflater.inflate(android.R.layout.simple_list_item_1, null);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else {
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                view = (TextView) convertView;
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            view.setText("List item " + mTitles[position]);
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return view;
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void onCreate(Bundle icicle)
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    {
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.onCreate(icicle);
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mAdapter = new ThrashListAdapter(this);
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        getListView().setOnCreateContextMenuListener(this);
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setListAdapter(mAdapter);
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onCreateOptionsMenu(Menu menu) {
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MenuItem item = menu.add(0, 0, 0, "Really long menu item name");
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        item.setTitleCondensed("Long name");
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        item.setIcon(R.drawable.black_square);
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SubMenu sm = menu.addSubMenu(0, 0, 0, "The 2nd item, a sub menu").setIcon(R.drawable.black_square_stretchable);
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        item = sm.getItem();
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        item.setTitleCondensed("Sub menu");
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(1, 0, 0, "Subitem 1");
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(1, 0, 0, "Subitem 2");
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(1, 0, 0, "Subitem 3");
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.setGroupCheckable(1, true, true);
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Item 3");
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Item 4");
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Item 5");
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Item 6");
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Item 7");
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Item 8");
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Item 9");
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm = menu.addSubMenu(0, 0, 0, "Item 10 SM");
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 1");
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 2");
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 3");
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 4");
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 5");
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 6");
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 7");
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "Subitem 8");
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return true;
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String text = ((TextView) info.targetView).getText().toString();
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (text.contains("[0]")) {
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            menu.setHeaderTitle("This is a test of the title and the icon").setHeaderIcon(
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    android.R.drawable.sym_def_app_icon);
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else if (text.contains("[1]")) {
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            menu.setHeaderTitle("This is a test of just the title");
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            TextView textView = new TextView(this);
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            textView.setText("This is a test of a custom View");
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            menu.setHeaderView(textView);
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 1");
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        SubMenu sm = menu.addSubMenu(0, 0, 0, "Test 1.5 SM");
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "CM Subitem 1");
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "CM Subitem 2");
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sm.add(0, 0, 0, "CM Subitem 3");
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 2");
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 3");
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 4");
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 5");
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 6");
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 7");
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 8");
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 9");
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 10");
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 11");
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 12");
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 13");
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 14");
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 15");
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 16");
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 17");
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 18");
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 19");
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 20");
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 21");
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 22");
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 23");
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        menu.add(0, 0, 0, "Test 24");
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onOptionsItemSelected(MenuItem item) {
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Log.i(TAG, "Options item " + item.toString() + " selected.");
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return super.onOptionsItemSelected(item);
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void onOptionsMenuClosed(Menu menu) {
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Log.i(TAG, "Options menu closed");
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onContextItemSelected(MenuItem item) {
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Log.i(TAG, "Context item " + item.toString() + " selected.");
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return super.onContextItemSelected(item);
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void onContextMenuClosed(Menu menu) {
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Log.i(TAG, "Context menu closed");
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
202