blob: f6b25f559cf519005209db033b14acf19fdc1e63 [file] [log] [blame]
The Android Open Source Project0c908882009-03-03 19:32:16 -08001/*
2 * Copyright (C) 2006 The Android Open Source Project
Dave Tharp880f6432015-05-28 12:38:15 -07003 * Copyright (c) 2015, The Linux Foundation. All rights reserved.
The Android Open Source Project0c908882009-03-03 19:32:16 -08004 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
Bijan Amirzada41242f22014-03-21 12:12:18 -070018package com.android.browser;
The Android Open Source Project0c908882009-03-03 19:32:16 -080019
Tarun Nainani87a86682015-02-05 11:47:35 -080020import android.app.ActionBar;
The Android Open Source Project0c908882009-03-03 19:32:16 -080021import android.app.Activity;
John Reck7878f222012-04-18 16:23:14 -070022import android.app.KeyguardManager;
John Reck9d27ff52011-02-11 17:47:54 -080023import android.content.Context;
The Android Open Source Project0c908882009-03-03 19:32:16 -080024import android.content.Intent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080025import android.content.res.Configuration;
Sagar Dhawaneecefa32015-09-25 12:02:34 -070026import android.os.Build;
The Android Open Source Project0c908882009-03-03 19:32:16 -080027import android.os.Bundle;
qqzhou8c5b0a32013-07-22 15:31:03 +080028import android.os.Handler;
John Reck7878f222012-04-18 16:23:14 -070029import android.os.PowerManager;
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070030import android.os.Process;
The Android Open Source Project0c908882009-03-03 19:32:16 -080031import android.util.Log;
Leon Scroggins III8e4fbf12010-08-17 16:58:15 -040032import android.view.ActionMode;
The Android Open Source Project0c908882009-03-03 19:32:16 -080033import android.view.ContextMenu;
Michael Kolba2b2ba82010-08-04 17:54:03 -070034import android.view.ContextMenu.ContextMenuInfo;
The Android Open Source Project0c908882009-03-03 19:32:16 -080035import android.view.KeyEvent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080036import android.view.Menu;
The Android Open Source Project0c908882009-03-03 19:32:16 -080037import android.view.MenuItem;
Michael Kolbc3af0672011-08-09 10:24:41 -070038import android.view.MotionEvent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080039import android.view.View;
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070040import android.view.ViewGroup;
The Android Open Source Project0c908882009-03-03 19:32:16 -080041import android.view.Window;
Sagar Dhawaneecefa32015-09-25 12:02:34 -070042import android.view.WindowManager;
The Android Open Source Project0c908882009-03-03 19:32:16 -080043
Vivek Sekhared791da2015-02-22 12:39:05 -080044import org.chromium.base.VisibleForTesting;
Sagar Dhawandfe37a42015-08-14 12:22:11 -070045import com.android.browser.R;
46import com.android.browser.search.DefaultSearchEngine;
47import com.android.browser.search.SearchEngine;
Bijan Amirzada41242f22014-03-21 12:12:18 -070048import com.android.browser.stub.NullController;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080049
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070050import java.util.Locale;
51
Dany Rybnikovbcd37da2015-04-20 11:43:15 +030052import org.codeaurora.net.NetworkServices;
Dany Rybnikovc912c552015-01-19 15:40:13 +020053import org.codeaurora.swe.CookieManager;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080054import org.codeaurora.swe.WebView;
John Reckd3e4d5b2011-07-13 15:48:43 -070055
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -070056public class BrowserActivity extends Activity {
The Android Open Source Project0c908882009-03-03 19:32:16 -080057
John Reck439c9a52010-12-14 10:04:39 -080058 public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks";
59 public static final String ACTION_SHOW_BROWSER = "show_browser";
John Reck63bb6872010-12-01 19:29:32 -080060 public static final String ACTION_RESTART = "--restart--";
61 private static final String EXTRA_STATE = "state";
John Reck38b39652012-06-05 09:22:59 -070062 public static final String EXTRA_DISABLE_URL_OVERRIDE = "disable_url_override";
John Reck63bb6872010-12-01 19:29:32 -080063
Michael Kolb8233fac2010-10-26 16:08:53 -070064 private final static String LOGTAG = "browser";
The Android Open Source Project0c908882009-03-03 19:32:16 -080065
John Reck6c2e2f32011-08-22 13:41:23 -070066 private final static boolean LOGV_ENABLED = Browser.LOGV_ENABLED;
Dave Bort31a6d1c2009-04-13 15:56:49 -070067
John Reck9c35b9c2012-05-30 10:08:50 -070068 private ActivityController mController = NullController.INSTANCE;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080069
qqzhou8c5b0a32013-07-22 15:31:03 +080070 private Handler mHandler = new Handler();
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070071 private final Locale mCurrentLocale = Locale.getDefault();
Axesh R. Ajmera32558762015-04-23 13:21:56 -070072 public static boolean killOnExitDialog = false;
73
Jeff Davidson43610292010-07-16 16:03:58 -070074
kaiyizbb2db872013-08-01 22:24:07 -040075 private UiController mUiController;
76 private Handler mHandlerEx = new Handler();
77 private Runnable runnable = new Runnable() {
78 @Override
79 public void run() {
80 if (mUiController != null) {
81 WebView current = mUiController.getCurrentWebView();
82 if (current != null) {
83 current.postInvalidate();
84 }
85 }
86 }
87 };
88
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070089 private Bundle mSavedInstanceState;
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -070090 private EngineInitializer.ActivityScheduler mActivityScheduler;
91 public EngineInitializer.ActivityScheduler getScheduler() {
92 return mActivityScheduler;
93 }
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080094
Grace Kloba22ac16e2009-10-07 18:00:23 -070095 @Override
96 public void onCreate(Bundle icicle) {
Dave Bort31a6d1c2009-04-13 15:56:49 -070097 if (LOGV_ENABLED) {
John Reck6c2e2f32011-08-22 13:41:23 -070098 Log.v(LOGTAG, this + " onStart, has state: "
99 + (icicle == null ? "false" : "true"));
The Android Open Source Project0c908882009-03-03 19:32:16 -0800100 }
101 super.onCreate(icicle);
Derek Sollenbergerffa561e2010-11-16 14:19:01 -0500102
John Reck7878f222012-04-18 16:23:14 -0700103 if (shouldIgnoreIntents()) {
104 finish();
105 return;
106 }
107
Tarun Nainani87a86682015-02-05 11:47:35 -0800108 if (!isTablet(this)) {
109 final ActionBar bar = getActionBar();
110 bar.hide();
111 }
112
Sagar Dhawandfe37a42015-08-14 12:22:11 -0700113 // If this was a web search request, pass it on to the default web
114 // search provider and finish this activity.
115 /*
116 SearchEngine searchEngine = BrowserSettings.getInstance().getSearchEngine();
117 boolean result = IntentHandler.handleWebSearchIntent(this, null, getIntent());
118 if (result && (searchEngine instanceof DefaultSearchEngine)) {
119 finish();
120 return;
121 }
122 */
123
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700124 mActivityScheduler = EngineInitializer.onActivityCreate(BrowserActivity.this);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700125
126 Thread.setDefaultUncaughtExceptionHandler(new CrashLogExceptionHandler(this));
127
128 mSavedInstanceState = icicle;
129 // Create the initial UI views
John Reck9c35b9c2012-05-30 10:08:50 -0700130 mController = createController();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800131
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700132 // Workaround for the black screen flicker on SurfaceView creation
133 ViewGroup topLayout = (ViewGroup) findViewById(R.id.main_content);
134 topLayout.requestTransparentRegion(topLayout);
135
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700136 EngineInitializer.onPostActivityCreate(BrowserActivity.this);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800137 }
138
John Recka5176f32011-05-17 12:35:37 -0700139 public static boolean isTablet(Context context) {
140 return context.getResources().getBoolean(R.bool.isTablet);
John Reck9d27ff52011-02-11 17:47:54 -0800141 }
142
John Reck9c35b9c2012-05-30 10:08:50 -0700143 private Controller createController() {
144 Controller controller = new Controller(this);
145 boolean xlarge = isTablet(this);
146 UI ui = null;
147 if (xlarge) {
kaiyizbb2db872013-08-01 22:24:07 -0400148 XLargeUi tablet = new XLargeUi(this, controller);
149 ui = tablet;
150 mUiController = tablet.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700151 } else {
kaiyizbb2db872013-08-01 22:24:07 -0400152 PhoneUi phone = new PhoneUi(this, controller);
153 ui = phone;
154 mUiController = phone.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700155 }
156 controller.setUi(ui);
157 return controller;
158 }
159
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700160 public void startController() {
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700161 Intent intent = (mSavedInstanceState == null) ? getIntent() : null;
162 mController.start(intent);
163 }
164
John Reck41554852010-12-01 12:53:37 -0800165 @VisibleForTesting
Tarun Nainani436b8732014-06-10 13:58:41 -0700166 //public to facilitate testing
167 public Controller getController() {
John Reck9c35b9c2012-05-30 10:08:50 -0700168 return (Controller) mController;
Michael Kolba2b2ba82010-08-04 17:54:03 -0700169 }
170
The Android Open Source Project0c908882009-03-03 19:32:16 -0800171 @Override
Vivek Sekhara3d93b12015-11-21 21:26:33 -0800172 public void onRequestPermissionsResult(int requestCode, String[] permissions,
173 int[] grantResults) {
174 if (getController().getCurrentWebView() != null) {
175 if (getController().getCurrentWebView().onRequestPermissionsResult(
176 requestCode, permissions, grantResults)) {
177 return;
178 }
179 }
180 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
181 }
182
183 @Override
The Android Open Source Project0c908882009-03-03 19:32:16 -0800184 protected void onNewIntent(Intent intent) {
John Reck7878f222012-04-18 16:23:14 -0700185 if (shouldIgnoreIntents()) return;
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700186 EngineInitializer.onNewIntent(BrowserActivity.this, intent);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700187 // Note: Do not add any more application logic in this method.
188 // Move any additional app logic into handleOnNewIntent().
189 }
190
191 protected void handleOnNewIntent(Intent intent) {
John Reck63bb6872010-12-01 19:29:32 -0800192 if (ACTION_RESTART.equals(intent.getAction())) {
193 Bundle outState = new Bundle();
John Reck1cf4b792011-07-26 10:22:22 -0700194 mController.onSaveInstanceState(outState);
John Reck63bb6872010-12-01 19:29:32 -0800195 finish();
196 getApplicationContext().startActivity(
197 new Intent(getApplicationContext(), BrowserActivity.class)
198 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
199 .putExtra(EXTRA_STATE, outState));
200 return;
201 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700202 mController.handleNewIntent(intent);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800203 }
204
John Reck7878f222012-04-18 16:23:14 -0700205 private KeyguardManager mKeyguardManager;
206 private PowerManager mPowerManager;
207 private boolean shouldIgnoreIntents() {
208 // Only process intents if the screen is on and the device is unlocked
209 // aka, if we will be user-visible
210 if (mKeyguardManager == null) {
211 mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
212 }
213 if (mPowerManager == null) {
214 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
215 }
216 boolean ignore = !mPowerManager.isScreenOn();
217 ignore |= mKeyguardManager.inKeyguardRestrictedInputMode();
218 if (LOGV_ENABLED) {
219 Log.v(LOGTAG, "ignore intents: " + ignore);
220 }
221 return ignore;
222 }
223
Grace Kloba22ac16e2009-10-07 18:00:23 -0700224 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700225 protected void onStart() {
226 super.onStart();
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700227 EngineInitializer.onActivityStart(BrowserActivity.this);
Dany Rybnikovbcd37da2015-04-20 11:43:15 +0300228 if (!BrowserSettings.getInstance().isPowerSaveModeEnabled()) {
229 //Notify about anticipated network activity
230 NetworkServices.hintUpcomingUserActivity();
231 }
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700232 }
233
234 @Override
Grace Kloba22ac16e2009-10-07 18:00:23 -0700235 protected void onResume() {
Sagar Dhawaneecefa32015-09-25 12:02:34 -0700236 // Checking for Lollipop or above as only those builds will use the v21/styles(material)
237 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP &&
238 BrowserSettings.getInstance().isPowerSaveModeEnabled()) {
239 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
240 } else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
241 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
242 }
The Android Open Source Project0c908882009-03-03 19:32:16 -0800243 super.onResume();
Dave Bort31a6d1c2009-04-13 15:56:49 -0700244 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800245 Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
246 }
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700247 EngineInitializer.onActivityResume(BrowserActivity.this);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700248 // Note: Do not add any more application logic in this method.
249 // Move any additional app logic into handleOnResume().
250 }
Tarun Nainanief749cb2014-05-19 18:16:53 -0700251
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700252 protected void handleOnResume() {
Tarun Nainani32bc29c2015-04-29 15:33:45 -0700253 mController.onResume();
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800254 }
255
256 protected void handleOnStart() {
Tarun Nainani32bc29c2015-04-29 15:33:45 -0700257 mController.onStart();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800258 }
259
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400260 @Override
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800261 protected void onStop() {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700262 EngineInitializer.onActivityStop(BrowserActivity.this);
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800263 super.onStop();
264 // Note: Do not add any more application logic in this method.
265 // Move any additional app logic into handleOnStop().
266 }
267
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700268 protected void handleOnStop() {
269 CookieManager.getInstance().flushCookieStore();
Tarun Nainani32bc29c2015-04-29 15:33:45 -0700270 mController.onStop();
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700271 }
272
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800273 @Override
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400274 public boolean onMenuOpened(int featureId, Menu menu) {
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400275 if (Window.FEATURE_OPTIONS_PANEL == featureId) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700276 mController.onMenuOpened(featureId, menu);
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400277 }
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400278 return true;
279 }
280
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400281 @Override
282 public void onOptionsMenuClosed(Menu menu) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700283 mController.onOptionsMenuClosed(menu);
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400284 }
285
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400286 @Override
287 public void onContextMenuClosed(Menu menu) {
288 super.onContextMenuClosed(menu);
Michael Kolb8233fac2010-10-26 16:08:53 -0700289 mController.onContextMenuClosed(menu);
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400290 }
291
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400292 /**
The Android Open Source Project0c908882009-03-03 19:32:16 -0800293 * onSaveInstanceState(Bundle map)
294 * onSaveInstanceState is called right before onStop(). The map contains
295 * the saved state.
296 */
Grace Kloba22ac16e2009-10-07 18:00:23 -0700297 @Override
298 protected void onSaveInstanceState(Bundle outState) {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700299 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800300 Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
301 }
John Reck9c35b9c2012-05-30 10:08:50 -0700302 mController.onSaveInstanceState(outState);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800303 }
304
Grace Kloba22ac16e2009-10-07 18:00:23 -0700305 @Override
306 protected void onPause() {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700307 EngineInitializer.onActivityPause(BrowserActivity.this);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800308 super.onPause();
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700309 // Note: Do not add any more application logic in this method.
310 // Move any additional app logic into handleOnPause().
311 }
312
313 protected void handleOnPause() {
Tarun Nainani32bc29c2015-04-29 15:33:45 -0700314 mController.onPause();
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800315 }
316
Grace Kloba22ac16e2009-10-07 18:00:23 -0700317 @Override
318 protected void onDestroy() {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700319 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800320 Log.v(LOGTAG, "BrowserActivity.onDestroy: this=" + this);
321 }
322 super.onDestroy();
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700323 EngineInitializer.onActivityDestroy(BrowserActivity.this);
John Reck9c35b9c2012-05-30 10:08:50 -0700324 mController.onDestroy();
325 mController = NullController.INSTANCE;
Axesh R. Ajmera32558762015-04-23 13:21:56 -0700326 if (!Locale.getDefault().equals(mCurrentLocale) || killOnExitDialog) {
327 Log.i(LOGTAG,"Force Killing Browser");
Axesh R. Ajmeracc280282015-03-25 16:31:03 -0700328 Process.killProcess(Process.myPid());
329 }
330
The Android Open Source Project0c908882009-03-03 19:32:16 -0800331 }
332
333 @Override
334 public void onConfigurationChanged(Configuration newConfig) {
335 super.onConfigurationChanged(newConfig);
John Reck9c35b9c2012-05-30 10:08:50 -0700336 mController.onConfgurationChanged(newConfig);
kaiyizbb2db872013-08-01 22:24:07 -0400337
338 //For avoiding bug CR520353 temporarily, delay 300ms to refresh WebView.
339 mHandlerEx.postDelayed(runnable, 300);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800340 }
341
Grace Kloba22ac16e2009-10-07 18:00:23 -0700342 @Override
343 public void onLowMemory() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800344 super.onLowMemory();
Michael Kolb8233fac2010-10-26 16:08:53 -0700345 mController.onLowMemory();
Grace Kloba22ac16e2009-10-07 18:00:23 -0700346 }
347
The Android Open Source Project0c908882009-03-03 19:32:16 -0800348 @Override
Pankaj Garg49b79252014-11-07 17:33:41 -0800349 public void invalidateOptionsMenu() {
350 super.invalidateOptionsMenu();
351 mController.invalidateOptionsMenu();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800352 }
353
354 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700355 public boolean onPrepareOptionsMenu(Menu menu) {
356 super.onPrepareOptionsMenu(menu);
Enrico Ros1f5a0952014-11-18 20:15:48 -0800357 return false;
Cary Clark01cfcdd2010-06-04 16:36:45 -0400358 }
359
The Android Open Source Project0c908882009-03-03 19:32:16 -0800360 @Override
361 public boolean onOptionsItemSelected(MenuItem item) {
Tarun Nainani87a86682015-02-05 11:47:35 -0800362 if (item.getItemId() == android.R.id.home) {
363 mUiController.getUi().hideComboView();
364 return true;
365 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700366 if (!mController.onOptionsItemSelected(item)) {
367 return super.onOptionsItemSelected(item);
Michael Kolb370a4f32010-10-06 10:45:32 -0700368 }
The Android Open Source Project0c908882009-03-03 19:32:16 -0800369 return true;
370 }
371
372 @Override
373 public void onCreateContextMenu(ContextMenu menu, View v,
374 ContextMenuInfo menuInfo) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700375 mController.onCreateContextMenu(menu, v, menuInfo);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800376 }
377
Michael Kolb8233fac2010-10-26 16:08:53 -0700378 @Override
379 public boolean onContextItemSelected(MenuItem item) {
380 return mController.onContextItemSelected(item);
Grace Kloba22ac16e2009-10-07 18:00:23 -0700381 }
382
Grace Kloba5942df02009-09-18 11:48:29 -0700383 @Override
384 public boolean onKeyDown(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700385 return mController.onKeyDown(keyCode, event) ||
386 super.onKeyDown(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800387 }
388
Grace Kloba5942df02009-09-18 11:48:29 -0700389 @Override
John Recke6bf4ab2011-02-24 15:48:05 -0800390 public boolean onKeyLongPress(int keyCode, KeyEvent event) {
391 return mController.onKeyLongPress(keyCode, event) ||
392 super.onKeyLongPress(keyCode, event);
393 }
394
395 @Override
Grace Kloba5942df02009-09-18 11:48:29 -0700396 public boolean onKeyUp(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700397 return mController.onKeyUp(keyCode, event) ||
398 super.onKeyUp(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800399 }
400
Michael Kolbe421c242010-10-04 19:29:01 -0700401 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700402 public void onActionModeStarted(ActionMode mode) {
403 super.onActionModeStarted(mode);
404 mController.onActionModeStarted(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700405 }
406
Michael Kolbe421c242010-10-04 19:29:01 -0700407 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700408 public void onActionModeFinished(ActionMode mode) {
409 super.onActionModeFinished(mode);
410 mController.onActionModeFinished(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700411 }
412
The Android Open Source Project0c908882009-03-03 19:32:16 -0800413 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700414 protected void onActivityResult (int requestCode, int resultCode,
415 Intent intent) {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700416 EngineInitializer.onActivityResult(BrowserActivity.this, requestCode, resultCode, intent);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700417 }
418
419 protected void handleOnActivityResult (int requestCode, int resultCode, Intent intent) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700420 mController.onActivityResult(requestCode, resultCode, intent);
Andrei Popescu163ab742009-10-20 17:58:23 +0100421 }
422
Michael Kolbfbc579a2011-07-07 15:59:33 -0700423 @Override
424 public boolean onSearchRequested() {
425 return mController.onSearchRequested();
426 }
427
Michael Kolbc3af0672011-08-09 10:24:41 -0700428 @Override
429 public boolean dispatchKeyEvent(KeyEvent event) {
430 return mController.dispatchKeyEvent(event)
431 || super.dispatchKeyEvent(event);
432 }
433
434 @Override
435 public boolean dispatchKeyShortcutEvent(KeyEvent event) {
436 return mController.dispatchKeyShortcutEvent(event)
437 || super.dispatchKeyShortcutEvent(event);
438 }
439
440 @Override
441 public boolean dispatchTouchEvent(MotionEvent ev) {
442 return mController.dispatchTouchEvent(ev)
443 || super.dispatchTouchEvent(ev);
444 }
445
446 @Override
447 public boolean dispatchTrackballEvent(MotionEvent ev) {
448 return mController.dispatchTrackballEvent(ev)
449 || super.dispatchTrackballEvent(ev);
450 }
451
452 @Override
453 public boolean dispatchGenericMotionEvent(MotionEvent ev) {
454 return mController.dispatchGenericMotionEvent(ev) ||
455 super.dispatchGenericMotionEvent(ev);
456 }
457
The Android Open Source Project0c908882009-03-03 19:32:16 -0800458}