10c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project/*
20c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
30c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
40c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
50c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * you may not use this file except in compliance with the License.
60c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * You may obtain a copy of the License at
70c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
80c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
90c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project *
100c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
110c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
120c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * See the License for the specific language governing permissions and
140c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project * limitations under the License.
150c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project */
160c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
170c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectpackage com.android.browser;
180c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
190c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.app.Activity;
207878f22795aae08f49c489156846ef748b064e79John Reckimport android.app.KeyguardManager;
219d27ff5437db16b7ca16ec8cea464aaefdacc17eJohn Reckimport android.content.Context;
220c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.content.Intent;
230c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.content.res.Configuration;
240c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.os.Bundle;
257878f22795aae08f49c489156846ef748b064e79John Reckimport android.os.PowerManager;
260c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.util.Log;
278e4fbf1b26c2cc05a56ba2d4e7d1eda7d1574e91Leon Scroggins IIIimport android.view.ActionMode;
280c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.view.ContextMenu;
29a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolbimport android.view.ContextMenu.ContextMenuInfo;
300c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.view.KeyEvent;
310c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.view.Menu;
320c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.view.MenuItem;
33c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolbimport android.view.MotionEvent;
340c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.view.View;
350c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Projectimport android.view.Window;
360c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
379c35b9c41d756d59f5356edd2e08432e01f351f6John Reckimport com.android.browser.stub.NullController;
38d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reckimport com.google.common.annotations.VisibleForTesting;
39d3e4d5b4ffdf374b836ec9d4d3e315040c8c3779John Reck
408233facddcc51865d612a919d450db6954aa48e3Michael Kolbpublic class BrowserActivity extends Activity {
4181db366d79bb317de62fed05eb58906abd88a75eLeon Scroggins
42439c9a58765aa6aab95d55422ee61ea8360e912dJohn Reck    public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks";
43439c9a58765aa6aab95d55422ee61ea8360e912dJohn Reck    public static final String ACTION_SHOW_BROWSER = "show_browser";
4463bb687da46c285f6a71ff47c9f00e46111ffec2John Reck    public static final String ACTION_RESTART = "--restart--";
4563bb687da46c285f6a71ff47c9f00e46111ffec2John Reck    private static final String EXTRA_STATE = "state";
4638b3965028e4ac433de9d43c02d3167ff0ef208cJohn Reck    public static final String EXTRA_DISABLE_URL_OVERRIDE = "disable_url_override";
4763bb687da46c285f6a71ff47c9f00e46111ffec2John Reck
488233facddcc51865d612a919d450db6954aa48e3Michael Kolb    private final static String LOGTAG = "browser";
49e421c2472744ca7d35906f86204790ee97b91ca2Michael Kolb
506c2e2f34718043f36488b4a94879dc2605aaac49John Reck    private final static boolean LOGV_ENABLED = Browser.LOGV_ENABLED;
51d746a94137a87ffcc1fcefdac9a3764c3bc3f5cdLeon Scroggins
529c35b9c41d756d59f5356edd2e08432e01f351f6John Reck    private ActivityController mController = NullController.INSTANCE;
5343610292590fe3e2f8d0ddba1adf9e5557c0f401Jeff Davidson
5422ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    @Override
5522ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    public void onCreate(Bundle icicle) {
5631a6d1cb63a513712bad717a6239919fd5428fd1Dave Bort        if (LOGV_ENABLED) {
576c2e2f34718043f36488b4a94879dc2605aaac49John Reck            Log.v(LOGTAG, this + " onStart, has state: "
586c2e2f34718043f36488b4a94879dc2605aaac49John Reck                    + (icicle == null ? "false" : "true"));
590c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        }
600c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super.onCreate(icicle);
61ffa561e00d3934de9451bf599a2d4f355a33041bDerek Sollenberger
627878f22795aae08f49c489156846ef748b064e79John Reck        if (shouldIgnoreIntents()) {
637878f22795aae08f49c489156846ef748b064e79John Reck            finish();
647878f22795aae08f49c489156846ef748b064e79John Reck            return;
657878f22795aae08f49c489156846ef748b064e79John Reck        }
667878f22795aae08f49c489156846ef748b064e79John Reck
67f57c029329e874399199259b5e69f4d0b8a12a38John Reck        // If this was a web search request, pass it on to the default web
68f57c029329e874399199259b5e69f4d0b8a12a38John Reck        // search provider and finish this activity.
69f57c029329e874399199259b5e69f4d0b8a12a38John Reck        if (IntentHandler.handleWebSearchIntent(this, null, getIntent())) {
70f57c029329e874399199259b5e69f4d0b8a12a38John Reck            finish();
71f57c029329e874399199259b5e69f4d0b8a12a38John Reck            return;
72f57c029329e874399199259b5e69f4d0b8a12a38John Reck        }
739c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        mController = createController();
74a7611811e0d744a7220b7bf80c8f795af5ea53edBjorn Bringert
753636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount        Intent intent = (icicle == null) ? getIntent() : null;
763636d0a6d90fd8de55a4894210b2dbe23f32aac9George Mount        mController.start(intent);
770c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
780c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
79a5176f3e20d7bc0f07b1434f35c9458f40477644John Reck    public static boolean isTablet(Context context) {
80a5176f3e20d7bc0f07b1434f35c9458f40477644John Reck        return context.getResources().getBoolean(R.bool.isTablet);
819d27ff5437db16b7ca16ec8cea464aaefdacc17eJohn Reck    }
829d27ff5437db16b7ca16ec8cea464aaefdacc17eJohn Reck
839c35b9c41d756d59f5356edd2e08432e01f351f6John Reck    private Controller createController() {
849c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        Controller controller = new Controller(this);
859c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        boolean xlarge = isTablet(this);
869c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        UI ui = null;
879c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        if (xlarge) {
889c35b9c41d756d59f5356edd2e08432e01f351f6John Reck            ui = new XLargeUi(this, controller);
899c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        } else {
909c35b9c41d756d59f5356edd2e08432e01f351f6John Reck            ui = new PhoneUi(this, controller);
919c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        }
929c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        controller.setUi(ui);
939c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        return controller;
949c35b9c41d756d59f5356edd2e08432e01f351f6John Reck    }
959c35b9c41d756d59f5356edd2e08432e01f351f6John Reck
964155485914f9e47b8ab22000fe6ef8ddad1f70f4John Reck    @VisibleForTesting
978233facddcc51865d612a919d450db6954aa48e3Michael Kolb    Controller getController() {
989c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        return (Controller) mController;
99a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb    }
100a2b2ba8da913f26c820e49d3e43158e2fe6ebebaMichael Kolb
1010c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
1020c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    protected void onNewIntent(Intent intent) {
1037878f22795aae08f49c489156846ef748b064e79John Reck        if (shouldIgnoreIntents()) return;
10463bb687da46c285f6a71ff47c9f00e46111ffec2John Reck        if (ACTION_RESTART.equals(intent.getAction())) {
10563bb687da46c285f6a71ff47c9f00e46111ffec2John Reck            Bundle outState = new Bundle();
1061cf4b79a0020bc18c83ca8bde0e318ecd5252bc2John Reck            mController.onSaveInstanceState(outState);
10763bb687da46c285f6a71ff47c9f00e46111ffec2John Reck            finish();
10863bb687da46c285f6a71ff47c9f00e46111ffec2John Reck            getApplicationContext().startActivity(
10963bb687da46c285f6a71ff47c9f00e46111ffec2John Reck                    new Intent(getApplicationContext(), BrowserActivity.class)
11063bb687da46c285f6a71ff47c9f00e46111ffec2John Reck                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
11163bb687da46c285f6a71ff47c9f00e46111ffec2John Reck                    .putExtra(EXTRA_STATE, outState));
11263bb687da46c285f6a71ff47c9f00e46111ffec2John Reck            return;
11363bb687da46c285f6a71ff47c9f00e46111ffec2John Reck        }
1148233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.handleNewIntent(intent);
1150c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
1160c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
1177878f22795aae08f49c489156846ef748b064e79John Reck    private KeyguardManager mKeyguardManager;
1187878f22795aae08f49c489156846ef748b064e79John Reck    private PowerManager mPowerManager;
1197878f22795aae08f49c489156846ef748b064e79John Reck    private boolean shouldIgnoreIntents() {
1207878f22795aae08f49c489156846ef748b064e79John Reck        // Only process intents if the screen is on and the device is unlocked
1217878f22795aae08f49c489156846ef748b064e79John Reck        // aka, if we will be user-visible
1227878f22795aae08f49c489156846ef748b064e79John Reck        if (mKeyguardManager == null) {
1237878f22795aae08f49c489156846ef748b064e79John Reck            mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
1247878f22795aae08f49c489156846ef748b064e79John Reck        }
1257878f22795aae08f49c489156846ef748b064e79John Reck        if (mPowerManager == null) {
1267878f22795aae08f49c489156846ef748b064e79John Reck            mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
1277878f22795aae08f49c489156846ef748b064e79John Reck        }
1287878f22795aae08f49c489156846ef748b064e79John Reck        boolean ignore = !mPowerManager.isScreenOn();
1297878f22795aae08f49c489156846ef748b064e79John Reck        ignore |= mKeyguardManager.inKeyguardRestrictedInputMode();
1307878f22795aae08f49c489156846ef748b064e79John Reck        if (LOGV_ENABLED) {
1317878f22795aae08f49c489156846ef748b064e79John Reck            Log.v(LOGTAG, "ignore intents: " + ignore);
1327878f22795aae08f49c489156846ef748b064e79John Reck        }
1337878f22795aae08f49c489156846ef748b064e79John Reck        return ignore;
1347878f22795aae08f49c489156846ef748b064e79John Reck    }
1357878f22795aae08f49c489156846ef748b064e79John Reck
13622ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    @Override
13722ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    protected void onResume() {
1380c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super.onResume();
13931a6d1cb63a513712bad717a6239919fd5428fd1Dave Bort        if (LOGV_ENABLED) {
1400c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project            Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
1410c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        }
1429c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        mController.onResume();
1430c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
1440c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
145a81a764063d2f849fba0cbc3039f86e67c2960ddLeon Scroggins    @Override
146a81a764063d2f849fba0cbc3039f86e67c2960ddLeon Scroggins    public boolean onMenuOpened(int featureId, Menu menu) {
1473bbb6caa3ceaec1106fe1de76066f5e1a186795eLeon Scroggins        if (Window.FEATURE_OPTIONS_PANEL == featureId) {
1488233facddcc51865d612a919d450db6954aa48e3Michael Kolb            mController.onMenuOpened(featureId, menu);
1493bbb6caa3ceaec1106fe1de76066f5e1a186795eLeon Scroggins        }
150a81a764063d2f849fba0cbc3039f86e67c2960ddLeon Scroggins        return true;
151a81a764063d2f849fba0cbc3039f86e67c2960ddLeon Scroggins    }
152a81a764063d2f849fba0cbc3039f86e67c2960ddLeon Scroggins
1533bbb6caa3ceaec1106fe1de76066f5e1a186795eLeon Scroggins    @Override
1543bbb6caa3ceaec1106fe1de76066f5e1a186795eLeon Scroggins    public void onOptionsMenuClosed(Menu menu) {
1558233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.onOptionsMenuClosed(menu);
156c6fa1104e549b8f5b89195d22c41059e77672dfaLeon Scroggins    }
157c6fa1104e549b8f5b89195d22c41059e77672dfaLeon Scroggins
158b2b19f501ee05448ca81bddaaca70e9b2f51cb54Leon Scroggins    @Override
159b2b19f501ee05448ca81bddaaca70e9b2f51cb54Leon Scroggins    public void onContextMenuClosed(Menu menu) {
160b2b19f501ee05448ca81bddaaca70e9b2f51cb54Leon Scroggins        super.onContextMenuClosed(menu);
1618233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.onContextMenuClosed(menu);
162b2b19f501ee05448ca81bddaaca70e9b2f51cb54Leon Scroggins    }
163b2b19f501ee05448ca81bddaaca70e9b2f51cb54Leon Scroggins
164c6fa1104e549b8f5b89195d22c41059e77672dfaLeon Scroggins    /**
1650c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     *  onSaveInstanceState(Bundle map)
1660c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     *  onSaveInstanceState is called right before onStop(). The map contains
1670c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     *  the saved state.
1680c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project     */
16922ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    @Override
17022ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    protected void onSaveInstanceState(Bundle outState) {
17131a6d1cb63a513712bad717a6239919fd5428fd1Dave Bort        if (LOGV_ENABLED) {
1720c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project            Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
1730c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        }
1749c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        mController.onSaveInstanceState(outState);
1750c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
1760c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
17722ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    @Override
17822ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    protected void onPause() {
1799c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        mController.onPause();
1800c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super.onPause();
1810c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
1820c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
18322ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    @Override
18422ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    protected void onDestroy() {
18531a6d1cb63a513712bad717a6239919fd5428fd1Dave Bort        if (LOGV_ENABLED) {
1860c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project            Log.v(LOGTAG, "BrowserActivity.onDestroy: this=" + this);
1870c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        }
1880c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super.onDestroy();
1899c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        mController.onDestroy();
1909c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        mController = NullController.INSTANCE;
1910c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
1920c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
1930c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
1940c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    public void onConfigurationChanged(Configuration newConfig) {
1950c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super.onConfigurationChanged(newConfig);
1969c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        mController.onConfgurationChanged(newConfig);
1970c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
1980c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
19922ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    @Override
20022ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    public void onLowMemory() {
2010c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super.onLowMemory();
2028233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.onLowMemory();
20322ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba    }
20422ac16eab0b62d24a99fc360f2ccea14837f4127Grace Kloba
2050c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
2060c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    public boolean onCreateOptionsMenu(Menu menu) {
2070c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project        super.onCreateOptionsMenu(menu);
2089c35b9c41d756d59f5356edd2e08432e01f351f6John Reck        return mController.onCreateOptionsMenu(menu);
2090c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
2100c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
2110c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
2128233facddcc51865d612a919d450db6954aa48e3Michael Kolb    public boolean onPrepareOptionsMenu(Menu menu) {
2138233facddcc51865d612a919d450db6954aa48e3Michael Kolb        super.onPrepareOptionsMenu(menu);
214b3417f0a68a1efc64604ea354ae7f856ce79cb16John Reck        return mController.onPrepareOptionsMenu(menu);
2150c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
2160c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
2170c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
2188233facddcc51865d612a919d450db6954aa48e3Michael Kolb    public boolean onOptionsItemSelected(MenuItem item) {
2198233facddcc51865d612a919d450db6954aa48e3Michael Kolb        if (!mController.onOptionsItemSelected(item)) {
2208233facddcc51865d612a919d450db6954aa48e3Michael Kolb            return super.onOptionsItemSelected(item);
2211f005d370557b6e69d2de6537e5ea21f73a7ec3fLeon Scroggins        }
222160a7e7d27755b7a3715ad87735b8070ab64d58aLeon Scroggins        return true;
2231f005d370557b6e69d2de6537e5ea21f73a7ec3fLeon Scroggins    }
2241f005d370557b6e69d2de6537e5ea21f73a7ec3fLeon Scroggins
2258233facddcc51865d612a919d450db6954aa48e3Michael Kolb    @Override
2268233facddcc51865d612a919d450db6954aa48e3Michael Kolb    public void onCreateContextMenu(ContextMenu menu, View v,
2278233facddcc51865d612a919d450db6954aa48e3Michael Kolb            ContextMenuInfo menuInfo) {
2288233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.onCreateContextMenu(menu, v, menuInfo);
2290a64ba581c9e476ef10f36a62825df933771427dLeon Scroggins    }
2300a64ba581c9e476ef10f36a62825df933771427dLeon Scroggins
2318233facddcc51865d612a919d450db6954aa48e3Michael Kolb    @Override
2328233facddcc51865d612a919d450db6954aa48e3Michael Kolb    public boolean onContextItemSelected(MenuItem item) {
2338233facddcc51865d612a919d450db6954aa48e3Michael Kolb        return mController.onContextItemSelected(item);
2341f005d370557b6e69d2de6537e5ea21f73a7ec3fLeon Scroggins    }
2351f005d370557b6e69d2de6537e5ea21f73a7ec3fLeon Scroggins
2368233facddcc51865d612a919d450db6954aa48e3Michael Kolb    @Override
2378233facddcc51865d612a919d450db6954aa48e3Michael Kolb    public boolean onKeyDown(int keyCode, KeyEvent event) {
2388233facddcc51865d612a919d450db6954aa48e3Michael Kolb        return mController.onKeyDown(keyCode, event) ||
2398233facddcc51865d612a919d450db6954aa48e3Michael Kolb            super.onKeyDown(keyCode, event);
2408233facddcc51865d612a919d450db6954aa48e3Michael Kolb    }
2410a64ba581c9e476ef10f36a62825df933771427dLeon Scroggins
2428233facddcc51865d612a919d450db6954aa48e3Michael Kolb    @Override
243e6bf4abbb12a83fc0256d98d9d5cb36ee326f1ceJohn Reck    public boolean onKeyLongPress(int keyCode, KeyEvent event) {
244e6bf4abbb12a83fc0256d98d9d5cb36ee326f1ceJohn Reck        return mController.onKeyLongPress(keyCode, event) ||
245e6bf4abbb12a83fc0256d98d9d5cb36ee326f1ceJohn Reck            super.onKeyLongPress(keyCode, event);
246e6bf4abbb12a83fc0256d98d9d5cb36ee326f1ceJohn Reck    }
247e6bf4abbb12a83fc0256d98d9d5cb36ee326f1ceJohn Reck
248e6bf4abbb12a83fc0256d98d9d5cb36ee326f1ceJohn Reck    @Override
2498233facddcc51865d612a919d450db6954aa48e3Michael Kolb    public boolean onKeyUp(int keyCode, KeyEvent event) {
2508233facddcc51865d612a919d450db6954aa48e3Michael Kolb        return mController.onKeyUp(keyCode, event) ||
2518233facddcc51865d612a919d450db6954aa48e3Michael Kolb            super.onKeyUp(keyCode, event);
2520a64ba581c9e476ef10f36a62825df933771427dLeon Scroggins    }
2530a64ba581c9e476ef10f36a62825df933771427dLeon Scroggins
2548e4fbf1b26c2cc05a56ba2d4e7d1eda7d1574e91Leon Scroggins III    @Override
255d7973056703d47fe37b0ee57c36350834aeda827Adam Powell    public void onActionModeStarted(ActionMode mode) {
256d7973056703d47fe37b0ee57c36350834aeda827Adam Powell        super.onActionModeStarted(mode);
2578233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.onActionModeStarted(mode);
25801cfcdd0b77d672f5c09d98af683c6732c8250d8Cary Clark    }
25901cfcdd0b77d672f5c09d98af683c6732c8250d8Cary Clark
2600c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    @Override
2618233facddcc51865d612a919d450db6954aa48e3Michael Kolb    public void onActionModeFinished(ActionMode mode) {
2628233facddcc51865d612a919d450db6954aa48e3Michael Kolb        super.onActionModeFinished(mode);
2638233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.onActionModeFinished(mode);
26401cfcdd0b77d672f5c09d98af683c6732c8250d8Cary Clark    }
26501cfcdd0b77d672f5c09d98af683c6732c8250d8Cary Clark
2668233facddcc51865d612a919d450db6954aa48e3Michael Kolb    @Override
2678233facddcc51865d612a919d450db6954aa48e3Michael Kolb    protected void onActivityResult(int requestCode, int resultCode,
2688233facddcc51865d612a919d450db6954aa48e3Michael Kolb            Intent intent) {
2698233facddcc51865d612a919d450db6954aa48e3Michael Kolb        mController.onActivityResult(requestCode, resultCode, intent);
2700c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project    }
2710c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project
272fbc579af4749526882c764cd176a167205306fe9Michael Kolb    @Override
273fbc579af4749526882c764cd176a167205306fe9Michael Kolb    public boolean onSearchRequested() {
274fbc579af4749526882c764cd176a167205306fe9Michael Kolb        return mController.onSearchRequested();
275fbc579af4749526882c764cd176a167205306fe9Michael Kolb    }
276fbc579af4749526882c764cd176a167205306fe9Michael Kolb
277c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    @Override
278c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    public boolean dispatchKeyEvent(KeyEvent event) {
279c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb        return mController.dispatchKeyEvent(event)
280c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb                || super.dispatchKeyEvent(event);
281c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    }
282c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb
283c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    @Override
284c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    public boolean dispatchKeyShortcutEvent(KeyEvent event) {
285c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb        return mController.dispatchKeyShortcutEvent(event)
286c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb                || super.dispatchKeyShortcutEvent(event);
287c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    }
288c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb
289c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    @Override
290c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    public boolean dispatchTouchEvent(MotionEvent ev) {
291c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb        return mController.dispatchTouchEvent(ev)
292c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb                || super.dispatchTouchEvent(ev);
293c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    }
294c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb
295c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    @Override
296c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    public boolean dispatchTrackballEvent(MotionEvent ev) {
297c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb        return mController.dispatchTrackballEvent(ev)
298c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb                || super.dispatchTrackballEvent(ev);
299c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    }
300c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb
301c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    @Override
302c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    public boolean dispatchGenericMotionEvent(MotionEvent ev) {
303c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb        return mController.dispatchGenericMotionEvent(ev) ||
304c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb                super.dispatchGenericMotionEvent(ev);
305c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb    }
306c3af06776be83ba64a0d3549cb72ca6e5e7f03cdMichael Kolb
3070c90888c75eed12f6e2e14a9044faf50bd4af8edThe Android Open Source Project}
308