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