blob: 2ea733b978149aea707fc08d3862769d7eec0f6d [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;
The Android Open Source Project0c908882009-03-03 19:32:16 -080026import android.os.Bundle;
qqzhou8c5b0a32013-07-22 15:31:03 +080027import android.os.Handler;
John Reck7878f222012-04-18 16:23:14 -070028import android.os.PowerManager;
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070029import android.os.Process;
The Android Open Source Project0c908882009-03-03 19:32:16 -080030import android.util.Log;
Leon Scroggins III8e4fbf12010-08-17 16:58:15 -040031import android.view.ActionMode;
The Android Open Source Project0c908882009-03-03 19:32:16 -080032import android.view.ContextMenu;
Michael Kolba2b2ba82010-08-04 17:54:03 -070033import android.view.ContextMenu.ContextMenuInfo;
The Android Open Source Project0c908882009-03-03 19:32:16 -080034import android.view.KeyEvent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080035import android.view.Menu;
The Android Open Source Project0c908882009-03-03 19:32:16 -080036import android.view.MenuItem;
Michael Kolbc3af0672011-08-09 10:24:41 -070037import android.view.MotionEvent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080038import android.view.View;
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070039import android.view.ViewGroup;
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;
Dave Tharp9a082b12015-06-19 08:46:57 -070044import com.android.browser.mdm.EditBookmarksRestriction;
Dave Tharp490ca7f2015-06-16 11:17:34 -070045import com.android.browser.mdm.ManagedBookmarksRestriction;
Dave Tharp880f6432015-05-28 12:38:15 -070046import com.android.browser.mdm.ThirdPartyCookiesRestriction;
Bijan Amirzada41242f22014-03-21 12:12:18 -070047import com.android.browser.search.DefaultSearchEngine;
48import com.android.browser.search.SearchEngine;
49import com.android.browser.stub.NullController;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080050
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070051import java.util.Locale;
52
Dany Rybnikovbcd37da2015-04-20 11:43:15 +030053import org.codeaurora.net.NetworkServices;
Dany Rybnikovc912c552015-01-19 15:40:13 +020054import org.codeaurora.swe.CookieManager;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080055import org.codeaurora.swe.WebView;
John Reckd3e4d5b2011-07-13 15:48:43 -070056
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -070057public class BrowserActivity extends Activity {
The Android Open Source Project0c908882009-03-03 19:32:16 -080058
John Reck439c9a52010-12-14 10:04:39 -080059 public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks";
60 public static final String ACTION_SHOW_BROWSER = "show_browser";
John Reck63bb6872010-12-01 19:29:32 -080061 public static final String ACTION_RESTART = "--restart--";
62 private static final String EXTRA_STATE = "state";
John Reck38b39652012-06-05 09:22:59 -070063 public static final String EXTRA_DISABLE_URL_OVERRIDE = "disable_url_override";
John Reck63bb6872010-12-01 19:29:32 -080064
Michael Kolb8233fac2010-10-26 16:08:53 -070065 private final static String LOGTAG = "browser";
The Android Open Source Project0c908882009-03-03 19:32:16 -080066
John Reck6c2e2f32011-08-22 13:41:23 -070067 private final static boolean LOGV_ENABLED = Browser.LOGV_ENABLED;
Dave Bort31a6d1c2009-04-13 15:56:49 -070068
John Reck9c35b9c2012-05-30 10:08:50 -070069 private ActivityController mController = NullController.INSTANCE;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080070
qqzhou8c5b0a32013-07-22 15:31:03 +080071 private Handler mHandler = new Handler();
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070072 private final Locale mCurrentLocale = Locale.getDefault();
Axesh R. Ajmera32558762015-04-23 13:21:56 -070073 public static boolean killOnExitDialog = false;
74
Jeff Davidson43610292010-07-16 16:03:58 -070075
kaiyizbb2db872013-08-01 22:24:07 -040076 private UiController mUiController;
77 private Handler mHandlerEx = new Handler();
78 private Runnable runnable = new Runnable() {
79 @Override
80 public void run() {
81 if (mUiController != null) {
82 WebView current = mUiController.getCurrentWebView();
83 if (current != null) {
84 current.postInvalidate();
85 }
86 }
87 }
88 };
89
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070090 private Bundle mSavedInstanceState;
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -070091 private EngineInitializer.ActivityScheduler mActivityScheduler;
92 public EngineInitializer.ActivityScheduler getScheduler() {
93 return mActivityScheduler;
94 }
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080095
Grace Kloba22ac16e2009-10-07 18:00:23 -070096 @Override
97 public void onCreate(Bundle icicle) {
Dave Bort31a6d1c2009-04-13 15:56:49 -070098 if (LOGV_ENABLED) {
John Reck6c2e2f32011-08-22 13:41:23 -070099 Log.v(LOGTAG, this + " onStart, has state: "
100 + (icicle == null ? "false" : "true"));
The Android Open Source Project0c908882009-03-03 19:32:16 -0800101 }
102 super.onCreate(icicle);
Derek Sollenbergerffa561e2010-11-16 14:19:01 -0500103
John Reck7878f222012-04-18 16:23:14 -0700104 if (shouldIgnoreIntents()) {
105 finish();
106 return;
107 }
108
Tarun Nainani87a86682015-02-05 11:47:35 -0800109 if (!isTablet(this)) {
110 final ActionBar bar = getActionBar();
111 bar.hide();
112 }
113
John Reckf57c0292011-07-21 18:15:39 -0700114 // If this was a web search request, pass it on to the default web
115 // search provider and finish this activity.
Bijan Amirzada41242f22014-03-21 12:12:18 -0700116 /*
kaiyiza2368f12013-09-02 10:43:31 +0800117 SearchEngine searchEngine = BrowserSettings.getInstance().getSearchEngine();
118 boolean result = IntentHandler.handleWebSearchIntent(this, null, getIntent());
119 if (result && (searchEngine instanceof DefaultSearchEngine)) {
John Reckf57c0292011-07-21 18:15:39 -0700120 finish();
121 return;
122 }
Bijan Amirzada41242f22014-03-21 12:12:18 -0700123 */
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700124
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700125 mActivityScheduler = EngineInitializer.onActivityCreate(BrowserActivity.this);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700126
127 Thread.setDefaultUncaughtExceptionHandler(new CrashLogExceptionHandler(this));
128
129 mSavedInstanceState = icicle;
130 // Create the initial UI views
John Reck9c35b9c2012-05-30 10:08:50 -0700131 mController = createController();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800132
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700133 // Workaround for the black screen flicker on SurfaceView creation
134 ViewGroup topLayout = (ViewGroup) findViewById(R.id.main_content);
135 topLayout.requestTransparentRegion(topLayout);
136
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700137 EngineInitializer.onPostActivityCreate(BrowserActivity.this);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800138 }
139
John Recka5176f32011-05-17 12:35:37 -0700140 public static boolean isTablet(Context context) {
141 return context.getResources().getBoolean(R.bool.isTablet);
John Reck9d27ff52011-02-11 17:47:54 -0800142 }
143
John Reck9c35b9c2012-05-30 10:08:50 -0700144 private Controller createController() {
145 Controller controller = new Controller(this);
146 boolean xlarge = isTablet(this);
147 UI ui = null;
148 if (xlarge) {
kaiyizbb2db872013-08-01 22:24:07 -0400149 XLargeUi tablet = new XLargeUi(this, controller);
150 ui = tablet;
151 mUiController = tablet.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700152 } else {
kaiyizbb2db872013-08-01 22:24:07 -0400153 PhoneUi phone = new PhoneUi(this, controller);
154 ui = phone;
155 mUiController = phone.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700156 }
157 controller.setUi(ui);
158 return controller;
159 }
160
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700161 public void startController() {
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700162 Intent intent = (mSavedInstanceState == null) ? getIntent() : null;
163 mController.start(intent);
Dave Tharp880f6432015-05-28 12:38:15 -0700164
165 // MDM Restrictions not tied to a UI element initialized here.
166 ThirdPartyCookiesRestriction.getInstance();
Dave Tharp490ca7f2015-06-16 11:17:34 -0700167 ManagedBookmarksRestriction.getInstance();
Dave Tharp9a082b12015-06-19 08:46:57 -0700168 EditBookmarksRestriction.getInstance();
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700169 }
170
John Reck41554852010-12-01 12:53:37 -0800171 @VisibleForTesting
Tarun Nainani436b8732014-06-10 13:58:41 -0700172 //public to facilitate testing
173 public Controller getController() {
John Reck9c35b9c2012-05-30 10:08:50 -0700174 return (Controller) mController;
Michael Kolba2b2ba82010-08-04 17:54:03 -0700175 }
176
The Android Open Source Project0c908882009-03-03 19:32:16 -0800177 @Override
178 protected void onNewIntent(Intent intent) {
John Reck7878f222012-04-18 16:23:14 -0700179 if (shouldIgnoreIntents()) return;
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700180 EngineInitializer.onNewIntent(BrowserActivity.this, intent);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700181 // Note: Do not add any more application logic in this method.
182 // Move any additional app logic into handleOnNewIntent().
183 }
184
185 protected void handleOnNewIntent(Intent intent) {
John Reck63bb6872010-12-01 19:29:32 -0800186 if (ACTION_RESTART.equals(intent.getAction())) {
187 Bundle outState = new Bundle();
John Reck1cf4b792011-07-26 10:22:22 -0700188 mController.onSaveInstanceState(outState);
John Reck63bb6872010-12-01 19:29:32 -0800189 finish();
190 getApplicationContext().startActivity(
191 new Intent(getApplicationContext(), BrowserActivity.class)
192 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
193 .putExtra(EXTRA_STATE, outState));
194 return;
195 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700196 mController.handleNewIntent(intent);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800197 }
198
John Reck7878f222012-04-18 16:23:14 -0700199 private KeyguardManager mKeyguardManager;
200 private PowerManager mPowerManager;
201 private boolean shouldIgnoreIntents() {
202 // Only process intents if the screen is on and the device is unlocked
203 // aka, if we will be user-visible
204 if (mKeyguardManager == null) {
205 mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
206 }
207 if (mPowerManager == null) {
208 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
209 }
210 boolean ignore = !mPowerManager.isScreenOn();
211 ignore |= mKeyguardManager.inKeyguardRestrictedInputMode();
212 if (LOGV_ENABLED) {
213 Log.v(LOGTAG, "ignore intents: " + ignore);
214 }
215 return ignore;
216 }
217
Grace Kloba22ac16e2009-10-07 18:00:23 -0700218 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700219 protected void onStart() {
220 super.onStart();
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700221 EngineInitializer.onActivityStart(BrowserActivity.this);
Dany Rybnikovbcd37da2015-04-20 11:43:15 +0300222 if (!BrowserSettings.getInstance().isPowerSaveModeEnabled()) {
223 //Notify about anticipated network activity
224 NetworkServices.hintUpcomingUserActivity();
225 }
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700226 }
227
228 @Override
Grace Kloba22ac16e2009-10-07 18:00:23 -0700229 protected void onResume() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800230 super.onResume();
Dave Bort31a6d1c2009-04-13 15:56:49 -0700231 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800232 Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
233 }
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700234 EngineInitializer.onActivityResume(BrowserActivity.this);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700235 // Note: Do not add any more application logic in this method.
236 // Move any additional app logic into handleOnResume().
237 }
Tarun Nainanief749cb2014-05-19 18:16:53 -0700238
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700239 protected void handleOnResume() {
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800240 // Note: Intentionally left blank.
241 }
242
243 protected void handleOnStart() {
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700244 mController.onResume();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800245 }
246
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400247 @Override
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800248 protected void onStop() {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700249 EngineInitializer.onActivityStop(BrowserActivity.this);
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800250 super.onStop();
251 // Note: Do not add any more application logic in this method.
252 // Move any additional app logic into handleOnStop().
253 }
254
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700255 protected void handleOnStop() {
256 CookieManager.getInstance().flushCookieStore();
257 mController.onPause();
258 }
259
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800260 @Override
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400261 public boolean onMenuOpened(int featureId, Menu menu) {
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400262 if (Window.FEATURE_OPTIONS_PANEL == featureId) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700263 mController.onMenuOpened(featureId, menu);
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400264 }
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400265 return true;
266 }
267
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400268 @Override
269 public void onOptionsMenuClosed(Menu menu) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700270 mController.onOptionsMenuClosed(menu);
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400271 }
272
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400273 @Override
274 public void onContextMenuClosed(Menu menu) {
275 super.onContextMenuClosed(menu);
Michael Kolb8233fac2010-10-26 16:08:53 -0700276 mController.onContextMenuClosed(menu);
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400277 }
278
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400279 /**
The Android Open Source Project0c908882009-03-03 19:32:16 -0800280 * onSaveInstanceState(Bundle map)
281 * onSaveInstanceState is called right before onStop(). The map contains
282 * the saved state.
283 */
Grace Kloba22ac16e2009-10-07 18:00:23 -0700284 @Override
285 protected void onSaveInstanceState(Bundle outState) {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700286 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800287 Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
288 }
John Reck9c35b9c2012-05-30 10:08:50 -0700289 mController.onSaveInstanceState(outState);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800290 }
291
Grace Kloba22ac16e2009-10-07 18:00:23 -0700292 @Override
293 protected void onPause() {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700294 EngineInitializer.onActivityPause(BrowserActivity.this);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800295 super.onPause();
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700296 // Note: Do not add any more application logic in this method.
297 // Move any additional app logic into handleOnPause().
298 }
299
300 protected void handleOnPause() {
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800301 // Note: Intentionally left blank
302 }
303
Grace Kloba22ac16e2009-10-07 18:00:23 -0700304 @Override
305 protected void onDestroy() {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700306 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800307 Log.v(LOGTAG, "BrowserActivity.onDestroy: this=" + this);
308 }
309 super.onDestroy();
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700310 EngineInitializer.onActivityDestroy(BrowserActivity.this);
John Reck9c35b9c2012-05-30 10:08:50 -0700311 mController.onDestroy();
312 mController = NullController.INSTANCE;
Axesh R. Ajmera32558762015-04-23 13:21:56 -0700313 if (!Locale.getDefault().equals(mCurrentLocale) || killOnExitDialog) {
314 Log.i(LOGTAG,"Force Killing Browser");
Axesh R. Ajmeracc280282015-03-25 16:31:03 -0700315 Process.killProcess(Process.myPid());
316 }
317
The Android Open Source Project0c908882009-03-03 19:32:16 -0800318 }
319
320 @Override
321 public void onConfigurationChanged(Configuration newConfig) {
322 super.onConfigurationChanged(newConfig);
John Reck9c35b9c2012-05-30 10:08:50 -0700323 mController.onConfgurationChanged(newConfig);
kaiyizbb2db872013-08-01 22:24:07 -0400324
325 //For avoiding bug CR520353 temporarily, delay 300ms to refresh WebView.
326 mHandlerEx.postDelayed(runnable, 300);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800327 }
328
Grace Kloba22ac16e2009-10-07 18:00:23 -0700329 @Override
330 public void onLowMemory() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800331 super.onLowMemory();
Michael Kolb8233fac2010-10-26 16:08:53 -0700332 mController.onLowMemory();
Grace Kloba22ac16e2009-10-07 18:00:23 -0700333 }
334
The Android Open Source Project0c908882009-03-03 19:32:16 -0800335 @Override
Pankaj Garg49b79252014-11-07 17:33:41 -0800336 public void invalidateOptionsMenu() {
337 super.invalidateOptionsMenu();
338 mController.invalidateOptionsMenu();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800339 }
340
341 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700342 public boolean onPrepareOptionsMenu(Menu menu) {
343 super.onPrepareOptionsMenu(menu);
Enrico Ros1f5a0952014-11-18 20:15:48 -0800344 return false;
Cary Clark01cfcdd2010-06-04 16:36:45 -0400345 }
346
The Android Open Source Project0c908882009-03-03 19:32:16 -0800347 @Override
348 public boolean onOptionsItemSelected(MenuItem item) {
Tarun Nainani87a86682015-02-05 11:47:35 -0800349 if (item.getItemId() == android.R.id.home) {
350 mUiController.getUi().hideComboView();
351 return true;
352 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700353 if (!mController.onOptionsItemSelected(item)) {
354 return super.onOptionsItemSelected(item);
Michael Kolb370a4f32010-10-06 10:45:32 -0700355 }
The Android Open Source Project0c908882009-03-03 19:32:16 -0800356 return true;
357 }
358
359 @Override
360 public void onCreateContextMenu(ContextMenu menu, View v,
361 ContextMenuInfo menuInfo) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700362 mController.onCreateContextMenu(menu, v, menuInfo);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800363 }
364
Michael Kolb8233fac2010-10-26 16:08:53 -0700365 @Override
366 public boolean onContextItemSelected(MenuItem item) {
367 return mController.onContextItemSelected(item);
Grace Kloba22ac16e2009-10-07 18:00:23 -0700368 }
369
Grace Kloba5942df02009-09-18 11:48:29 -0700370 @Override
371 public boolean onKeyDown(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700372 return mController.onKeyDown(keyCode, event) ||
373 super.onKeyDown(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800374 }
375
Grace Kloba5942df02009-09-18 11:48:29 -0700376 @Override
John Recke6bf4ab2011-02-24 15:48:05 -0800377 public boolean onKeyLongPress(int keyCode, KeyEvent event) {
378 return mController.onKeyLongPress(keyCode, event) ||
379 super.onKeyLongPress(keyCode, event);
380 }
381
382 @Override
Grace Kloba5942df02009-09-18 11:48:29 -0700383 public boolean onKeyUp(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700384 return mController.onKeyUp(keyCode, event) ||
385 super.onKeyUp(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800386 }
387
Michael Kolbe421c242010-10-04 19:29:01 -0700388 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700389 public void onActionModeStarted(ActionMode mode) {
390 super.onActionModeStarted(mode);
391 mController.onActionModeStarted(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700392 }
393
Michael Kolbe421c242010-10-04 19:29:01 -0700394 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700395 public void onActionModeFinished(ActionMode mode) {
396 super.onActionModeFinished(mode);
397 mController.onActionModeFinished(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700398 }
399
The Android Open Source Project0c908882009-03-03 19:32:16 -0800400 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700401 protected void onActivityResult (int requestCode, int resultCode,
402 Intent intent) {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700403 EngineInitializer.onActivityResult(BrowserActivity.this, requestCode, resultCode, intent);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700404 }
405
406 protected void handleOnActivityResult (int requestCode, int resultCode, Intent intent) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700407 mController.onActivityResult(requestCode, resultCode, intent);
Andrei Popescu163ab742009-10-20 17:58:23 +0100408 }
409
Michael Kolbfbc579a2011-07-07 15:59:33 -0700410 @Override
411 public boolean onSearchRequested() {
412 return mController.onSearchRequested();
413 }
414
Michael Kolbc3af0672011-08-09 10:24:41 -0700415 @Override
416 public boolean dispatchKeyEvent(KeyEvent event) {
417 return mController.dispatchKeyEvent(event)
418 || super.dispatchKeyEvent(event);
419 }
420
421 @Override
422 public boolean dispatchKeyShortcutEvent(KeyEvent event) {
423 return mController.dispatchKeyShortcutEvent(event)
424 || super.dispatchKeyShortcutEvent(event);
425 }
426
427 @Override
428 public boolean dispatchTouchEvent(MotionEvent ev) {
429 return mController.dispatchTouchEvent(ev)
430 || super.dispatchTouchEvent(ev);
431 }
432
433 @Override
434 public boolean dispatchTrackballEvent(MotionEvent ev) {
435 return mController.dispatchTrackballEvent(ev)
436 || super.dispatchTrackballEvent(ev);
437 }
438
439 @Override
440 public boolean dispatchGenericMotionEvent(MotionEvent ev) {
441 return mController.dispatchGenericMotionEvent(ev) ||
442 super.dispatchGenericMotionEvent(ev);
443 }
444
The Android Open Source Project0c908882009-03-03 19:32:16 -0800445}