blob: 9b310e2f0bb18ec4632eeba0aff259a979ca5b5b [file] [log] [blame]
The Android Open Source Project0c908882009-03-03 19:32:16 -08001/*
2 * Copyright (C) 2006 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Bijan Amirzada41242f22014-03-21 12:12:18 -070017package com.android.browser;
The Android Open Source Project0c908882009-03-03 19:32:16 -080018
Tarun Nainani87a86682015-02-05 11:47:35 -080019import android.app.ActionBar;
The Android Open Source Project0c908882009-03-03 19:32:16 -080020import android.app.Activity;
John Reck7878f222012-04-18 16:23:14 -070021import android.app.KeyguardManager;
John Reck9d27ff52011-02-11 17:47:54 -080022import android.content.Context;
The Android Open Source Project0c908882009-03-03 19:32:16 -080023import android.content.Intent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080024import android.content.res.Configuration;
The Android Open Source Project0c908882009-03-03 19:32:16 -080025import android.os.Bundle;
qqzhou8c5b0a32013-07-22 15:31:03 +080026import android.os.Handler;
John Reck7878f222012-04-18 16:23:14 -070027import android.os.PowerManager;
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070028import android.os.Process;
The Android Open Source Project0c908882009-03-03 19:32:16 -080029import android.util.Log;
Leon Scroggins III8e4fbf12010-08-17 16:58:15 -040030import android.view.ActionMode;
The Android Open Source Project0c908882009-03-03 19:32:16 -080031import android.view.ContextMenu;
Michael Kolba2b2ba82010-08-04 17:54:03 -070032import android.view.ContextMenu.ContextMenuInfo;
The Android Open Source Project0c908882009-03-03 19:32:16 -080033import android.view.KeyEvent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080034import android.view.Menu;
The Android Open Source Project0c908882009-03-03 19:32:16 -080035import android.view.MenuItem;
Michael Kolbc3af0672011-08-09 10:24:41 -070036import android.view.MotionEvent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080037import android.view.View;
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070038import android.view.ViewGroup;
39import android.view.ViewTreeObserver;
The Android Open Source Project0c908882009-03-03 19:32:16 -080040import android.view.Window;
The Android Open Source Project0c908882009-03-03 19:32:16 -080041
Vivek Sekhared791da2015-02-22 12:39:05 -080042import org.chromium.base.VisibleForTesting;
Bijan Amirzada41242f22014-03-21 12:12:18 -070043import com.android.browser.R;
Bijan Amirzada41242f22014-03-21 12:12:18 -070044import com.android.browser.search.DefaultSearchEngine;
45import com.android.browser.search.SearchEngine;
46import com.android.browser.stub.NullController;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080047
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070048import java.util.Locale;
49
Dany Rybnikovc912c552015-01-19 15:40:13 +020050import org.codeaurora.swe.CookieManager;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080051import org.codeaurora.swe.WebView;
John Reckd3e4d5b2011-07-13 15:48:43 -070052
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070053public class BrowserActivity extends Activity implements ViewTreeObserver.OnPreDrawListener {
The Android Open Source Project0c908882009-03-03 19:32:16 -080054
John Reck439c9a52010-12-14 10:04:39 -080055 public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks";
56 public static final String ACTION_SHOW_BROWSER = "show_browser";
John Reck63bb6872010-12-01 19:29:32 -080057 public static final String ACTION_RESTART = "--restart--";
58 private static final String EXTRA_STATE = "state";
John Reck38b39652012-06-05 09:22:59 -070059 public static final String EXTRA_DISABLE_URL_OVERRIDE = "disable_url_override";
John Reck63bb6872010-12-01 19:29:32 -080060
Michael Kolb8233fac2010-10-26 16:08:53 -070061 private final static String LOGTAG = "browser";
The Android Open Source Project0c908882009-03-03 19:32:16 -080062
John Reck6c2e2f32011-08-22 13:41:23 -070063 private final static boolean LOGV_ENABLED = Browser.LOGV_ENABLED;
Dave Bort31a6d1c2009-04-13 15:56:49 -070064
John Reck9c35b9c2012-05-30 10:08:50 -070065 private ActivityController mController = NullController.INSTANCE;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080066
qqzhou8c5b0a32013-07-22 15:31:03 +080067 private Handler mHandler = new Handler();
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070068 private final Locale mCurrentLocale = Locale.getDefault();
Axesh R. Ajmera32558762015-04-23 13:21:56 -070069 public static boolean killOnExitDialog = false;
70
Jeff Davidson43610292010-07-16 16:03:58 -070071
kaiyizbb2db872013-08-01 22:24:07 -040072 private UiController mUiController;
73 private Handler mHandlerEx = new Handler();
74 private Runnable runnable = new Runnable() {
75 @Override
76 public void run() {
77 if (mUiController != null) {
78 WebView current = mUiController.getCurrentWebView();
79 if (current != null) {
80 current.postInvalidate();
81 }
82 }
83 }
84 };
85
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070086 private Bundle mSavedInstanceState;
87 private EngineInitializer mEngineInitializer;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080088
Grace Kloba22ac16e2009-10-07 18:00:23 -070089 @Override
90 public void onCreate(Bundle icicle) {
Dave Bort31a6d1c2009-04-13 15:56:49 -070091 if (LOGV_ENABLED) {
John Reck6c2e2f32011-08-22 13:41:23 -070092 Log.v(LOGTAG, this + " onStart, has state: "
93 + (icicle == null ? "false" : "true"));
The Android Open Source Project0c908882009-03-03 19:32:16 -080094 }
95 super.onCreate(icicle);
Derek Sollenbergerffa561e2010-11-16 14:19:01 -050096
John Reck7878f222012-04-18 16:23:14 -070097 if (shouldIgnoreIntents()) {
98 finish();
99 return;
100 }
101
Tarun Nainani87a86682015-02-05 11:47:35 -0800102 if (!isTablet(this)) {
103 final ActionBar bar = getActionBar();
104 bar.hide();
105 }
106
John Reckf57c0292011-07-21 18:15:39 -0700107 // If this was a web search request, pass it on to the default web
108 // search provider and finish this activity.
Bijan Amirzada41242f22014-03-21 12:12:18 -0700109 /*
kaiyiza2368f12013-09-02 10:43:31 +0800110 SearchEngine searchEngine = BrowserSettings.getInstance().getSearchEngine();
111 boolean result = IntentHandler.handleWebSearchIntent(this, null, getIntent());
112 if (result && (searchEngine instanceof DefaultSearchEngine)) {
John Reckf57c0292011-07-21 18:15:39 -0700113 finish();
114 return;
115 }
Bijan Amirzada41242f22014-03-21 12:12:18 -0700116 */
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700117
118 mEngineInitializer = EngineInitializer.getInstance();
119 mEngineInitializer.onActivityCreate(BrowserActivity.this);
120
121 Thread.setDefaultUncaughtExceptionHandler(new CrashLogExceptionHandler(this));
122
123 mSavedInstanceState = icicle;
124 // Create the initial UI views
John Reck9c35b9c2012-05-30 10:08:50 -0700125 mController = createController();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800126
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700127 // Workaround for the black screen flicker on SurfaceView creation
128 ViewGroup topLayout = (ViewGroup) findViewById(R.id.main_content);
129 topLayout.requestTransparentRegion(topLayout);
130
131 // Add pre-draw listener to start the controller after engine initialization.
132 final ViewTreeObserver observer = getWindow().getDecorView().getViewTreeObserver();
133 observer.addOnPreDrawListener(this);
134
135 mEngineInitializer.initializeResourceExtractor(this);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800136 }
137
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700138 @Override
139 public boolean onPreDraw()
140 {
141 final ViewTreeObserver observer = getWindow().getDecorView().getViewTreeObserver();
142 observer.removeOnPreDrawListener(this);
143 mEngineInitializer.onPreDraw();
144 return true;
145 }
146
147
John Recka5176f32011-05-17 12:35:37 -0700148 public static boolean isTablet(Context context) {
149 return context.getResources().getBoolean(R.bool.isTablet);
John Reck9d27ff52011-02-11 17:47:54 -0800150 }
151
John Reck9c35b9c2012-05-30 10:08:50 -0700152 private Controller createController() {
153 Controller controller = new Controller(this);
154 boolean xlarge = isTablet(this);
155 UI ui = null;
156 if (xlarge) {
kaiyizbb2db872013-08-01 22:24:07 -0400157 XLargeUi tablet = new XLargeUi(this, controller);
158 ui = tablet;
159 mUiController = tablet.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700160 } else {
kaiyizbb2db872013-08-01 22:24:07 -0400161 PhoneUi phone = new PhoneUi(this, controller);
162 ui = phone;
163 mUiController = phone.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700164 }
165 controller.setUi(ui);
166 return controller;
167 }
168
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700169 public void onEngineInitializationComplete() {
170 Intent intent = (mSavedInstanceState == null) ? getIntent() : null;
171 mController.start(intent);
172 }
173
John Reck41554852010-12-01 12:53:37 -0800174 @VisibleForTesting
Tarun Nainani436b8732014-06-10 13:58:41 -0700175 //public to facilitate testing
176 public Controller getController() {
John Reck9c35b9c2012-05-30 10:08:50 -0700177 return (Controller) mController;
Michael Kolba2b2ba82010-08-04 17:54:03 -0700178 }
179
The Android Open Source Project0c908882009-03-03 19:32:16 -0800180 @Override
181 protected void onNewIntent(Intent intent) {
John Reck7878f222012-04-18 16:23:14 -0700182 if (shouldIgnoreIntents()) return;
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700183 mEngineInitializer.onNewIntent(intent);
184 // Note: Do not add any more application logic in this method.
185 // Move any additional app logic into handleOnNewIntent().
186 }
187
188 protected void handleOnNewIntent(Intent intent) {
John Reck63bb6872010-12-01 19:29:32 -0800189 if (ACTION_RESTART.equals(intent.getAction())) {
190 Bundle outState = new Bundle();
John Reck1cf4b792011-07-26 10:22:22 -0700191 mController.onSaveInstanceState(outState);
John Reck63bb6872010-12-01 19:29:32 -0800192 finish();
193 getApplicationContext().startActivity(
194 new Intent(getApplicationContext(), BrowserActivity.class)
195 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
196 .putExtra(EXTRA_STATE, outState));
197 return;
198 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700199 mController.handleNewIntent(intent);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800200 }
201
John Reck7878f222012-04-18 16:23:14 -0700202 private KeyguardManager mKeyguardManager;
203 private PowerManager mPowerManager;
204 private boolean shouldIgnoreIntents() {
205 // Only process intents if the screen is on and the device is unlocked
206 // aka, if we will be user-visible
207 if (mKeyguardManager == null) {
208 mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
209 }
210 if (mPowerManager == null) {
211 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
212 }
213 boolean ignore = !mPowerManager.isScreenOn();
214 ignore |= mKeyguardManager.inKeyguardRestrictedInputMode();
215 if (LOGV_ENABLED) {
216 Log.v(LOGTAG, "ignore intents: " + ignore);
217 }
218 return ignore;
219 }
220
Grace Kloba22ac16e2009-10-07 18:00:23 -0700221 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700222 protected void onStart() {
223 super.onStart();
224 mEngineInitializer.onActivityStart();
225 }
226
227 @Override
Grace Kloba22ac16e2009-10-07 18:00:23 -0700228 protected void onResume() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800229 super.onResume();
Dave Bort31a6d1c2009-04-13 15:56:49 -0700230 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800231 Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
232 }
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700233 mEngineInitializer.onActivityResume();
234 // Note: Do not add any more application logic in this method.
235 // Move any additional app logic into handleOnResume().
236 }
Tarun Nainanief749cb2014-05-19 18:16:53 -0700237
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700238 protected void handleOnResume() {
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800239 // Note: Intentionally left blank.
240 }
241
242 protected void handleOnStart() {
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700243 mController.onResume();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800244 }
245
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400246 @Override
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800247 protected void onStop() {
248 mEngineInitializer.onActivityStop();
249 super.onStop();
250 // Note: Do not add any more application logic in this method.
251 // Move any additional app logic into handleOnStop().
252 }
253
254 @Override
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400255 public boolean onMenuOpened(int featureId, Menu menu) {
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400256 if (Window.FEATURE_OPTIONS_PANEL == featureId) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700257 mController.onMenuOpened(featureId, menu);
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400258 }
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400259 return true;
260 }
261
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400262 @Override
263 public void onOptionsMenuClosed(Menu menu) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700264 mController.onOptionsMenuClosed(menu);
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400265 }
266
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400267 @Override
268 public void onContextMenuClosed(Menu menu) {
269 super.onContextMenuClosed(menu);
Michael Kolb8233fac2010-10-26 16:08:53 -0700270 mController.onContextMenuClosed(menu);
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400271 }
272
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400273 /**
The Android Open Source Project0c908882009-03-03 19:32:16 -0800274 * onSaveInstanceState(Bundle map)
275 * onSaveInstanceState is called right before onStop(). The map contains
276 * the saved state.
277 */
Grace Kloba22ac16e2009-10-07 18:00:23 -0700278 @Override
279 protected void onSaveInstanceState(Bundle outState) {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700280 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800281 Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
282 }
John Reck9c35b9c2012-05-30 10:08:50 -0700283 mController.onSaveInstanceState(outState);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800284 }
285
Grace Kloba22ac16e2009-10-07 18:00:23 -0700286 @Override
287 protected void onPause() {
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700288 mEngineInitializer.onActivityPause();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800289 super.onPause();
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700290 // Note: Do not add any more application logic in this method.
291 // Move any additional app logic into handleOnPause().
292 }
293
294 protected void handleOnPause() {
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800295 // Note: Intentionally left blank
296 }
297
298 protected void handleOnStop() {
Dany Rybnikovc912c552015-01-19 15:40:13 +0200299 CookieManager.getInstance().flushCookieStore();
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700300 mController.onPause();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800301 }
302
Grace Kloba22ac16e2009-10-07 18:00:23 -0700303 @Override
304 protected void onDestroy() {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700305 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800306 Log.v(LOGTAG, "BrowserActivity.onDestroy: this=" + this);
307 }
308 super.onDestroy();
Enrico Rosd6efa972014-12-02 19:49:59 -0800309 // mEngineInitializer can be null if onCreate is not called before onDestroy
310 // it happens when starting the activity with an intent while the screen is locked.
311 if (mEngineInitializer != null)
312 mEngineInitializer.onActivityDestroy();
John Reck9c35b9c2012-05-30 10:08:50 -0700313 mController.onDestroy();
314 mController = NullController.INSTANCE;
Axesh R. Ajmera32558762015-04-23 13:21:56 -0700315 if (!Locale.getDefault().equals(mCurrentLocale) || killOnExitDialog) {
316 Log.i(LOGTAG,"Force Killing Browser");
Axesh R. Ajmeracc280282015-03-25 16:31:03 -0700317 Process.killProcess(Process.myPid());
318 }
319
The Android Open Source Project0c908882009-03-03 19:32:16 -0800320 }
321
322 @Override
323 public void onConfigurationChanged(Configuration newConfig) {
324 super.onConfigurationChanged(newConfig);
John Reck9c35b9c2012-05-30 10:08:50 -0700325 mController.onConfgurationChanged(newConfig);
kaiyizbb2db872013-08-01 22:24:07 -0400326
327 //For avoiding bug CR520353 temporarily, delay 300ms to refresh WebView.
328 mHandlerEx.postDelayed(runnable, 300);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800329 }
330
Grace Kloba22ac16e2009-10-07 18:00:23 -0700331 @Override
332 public void onLowMemory() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800333 super.onLowMemory();
Michael Kolb8233fac2010-10-26 16:08:53 -0700334 mController.onLowMemory();
Grace Kloba22ac16e2009-10-07 18:00:23 -0700335 }
336
The Android Open Source Project0c908882009-03-03 19:32:16 -0800337 @Override
Pankaj Garg49b79252014-11-07 17:33:41 -0800338 public void invalidateOptionsMenu() {
339 super.invalidateOptionsMenu();
340 mController.invalidateOptionsMenu();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800341 }
342
343 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700344 public boolean onPrepareOptionsMenu(Menu menu) {
345 super.onPrepareOptionsMenu(menu);
Enrico Ros1f5a0952014-11-18 20:15:48 -0800346 return false;
Cary Clark01cfcdd2010-06-04 16:36:45 -0400347 }
348
The Android Open Source Project0c908882009-03-03 19:32:16 -0800349 @Override
350 public boolean onOptionsItemSelected(MenuItem item) {
Tarun Nainani87a86682015-02-05 11:47:35 -0800351 if (item.getItemId() == android.R.id.home) {
352 mUiController.getUi().hideComboView();
353 return true;
354 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700355 if (!mController.onOptionsItemSelected(item)) {
356 return super.onOptionsItemSelected(item);
Michael Kolb370a4f32010-10-06 10:45:32 -0700357 }
The Android Open Source Project0c908882009-03-03 19:32:16 -0800358 return true;
359 }
360
361 @Override
362 public void onCreateContextMenu(ContextMenu menu, View v,
363 ContextMenuInfo menuInfo) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700364 mController.onCreateContextMenu(menu, v, menuInfo);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800365 }
366
Michael Kolb8233fac2010-10-26 16:08:53 -0700367 @Override
368 public boolean onContextItemSelected(MenuItem item) {
369 return mController.onContextItemSelected(item);
Grace Kloba22ac16e2009-10-07 18:00:23 -0700370 }
371
Grace Kloba5942df02009-09-18 11:48:29 -0700372 @Override
373 public boolean onKeyDown(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700374 return mController.onKeyDown(keyCode, event) ||
375 super.onKeyDown(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800376 }
377
Grace Kloba5942df02009-09-18 11:48:29 -0700378 @Override
John Recke6bf4ab2011-02-24 15:48:05 -0800379 public boolean onKeyLongPress(int keyCode, KeyEvent event) {
380 return mController.onKeyLongPress(keyCode, event) ||
381 super.onKeyLongPress(keyCode, event);
382 }
383
384 @Override
Grace Kloba5942df02009-09-18 11:48:29 -0700385 public boolean onKeyUp(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700386 return mController.onKeyUp(keyCode, event) ||
387 super.onKeyUp(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800388 }
389
Michael Kolbe421c242010-10-04 19:29:01 -0700390 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700391 public void onActionModeStarted(ActionMode mode) {
392 super.onActionModeStarted(mode);
393 mController.onActionModeStarted(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700394 }
395
Michael Kolbe421c242010-10-04 19:29:01 -0700396 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700397 public void onActionModeFinished(ActionMode mode) {
398 super.onActionModeFinished(mode);
399 mController.onActionModeFinished(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700400 }
401
The Android Open Source Project0c908882009-03-03 19:32:16 -0800402 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700403 protected void onActivityResult (int requestCode, int resultCode,
404 Intent intent) {
405 mEngineInitializer.onActivityResult(requestCode, resultCode, intent);
406 }
407
408 protected void handleOnActivityResult (int requestCode, int resultCode, Intent intent) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700409 mController.onActivityResult(requestCode, resultCode, intent);
Andrei Popescu163ab742009-10-20 17:58:23 +0100410 }
411
Michael Kolbfbc579a2011-07-07 15:59:33 -0700412 @Override
413 public boolean onSearchRequested() {
414 return mController.onSearchRequested();
415 }
416
Michael Kolbc3af0672011-08-09 10:24:41 -0700417 @Override
418 public boolean dispatchKeyEvent(KeyEvent event) {
419 return mController.dispatchKeyEvent(event)
420 || super.dispatchKeyEvent(event);
421 }
422
423 @Override
424 public boolean dispatchKeyShortcutEvent(KeyEvent event) {
425 return mController.dispatchKeyShortcutEvent(event)
426 || super.dispatchKeyShortcutEvent(event);
427 }
428
429 @Override
430 public boolean dispatchTouchEvent(MotionEvent ev) {
431 return mController.dispatchTouchEvent(ev)
432 || super.dispatchTouchEvent(ev);
433 }
434
435 @Override
436 public boolean dispatchTrackballEvent(MotionEvent ev) {
437 return mController.dispatchTrackballEvent(ev)
438 || super.dispatchTrackballEvent(ev);
439 }
440
441 @Override
442 public boolean dispatchGenericMotionEvent(MotionEvent ev) {
443 return mController.dispatchGenericMotionEvent(ev) ||
444 super.dispatchGenericMotionEvent(ev);
445 }
446
The Android Open Source Project0c908882009-03-03 19:32:16 -0800447}