blob: 8bade8167abb287b5fadd27d838113b7e58f1ccb [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 Tharp490ca7f2015-06-16 11:17:34 -070044import com.android.browser.mdm.ManagedBookmarksRestriction;
Dave Tharp880f6432015-05-28 12:38:15 -070045import com.android.browser.mdm.ThirdPartyCookiesRestriction;
Bijan Amirzada41242f22014-03-21 12:12:18 -070046import com.android.browser.search.DefaultSearchEngine;
47import com.android.browser.search.SearchEngine;
48import 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 Rybnikovc912c552015-01-19 15:40:13 +020052import org.codeaurora.swe.CookieManager;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080053import org.codeaurora.swe.WebView;
John Reckd3e4d5b2011-07-13 15:48:43 -070054
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -070055public class BrowserActivity extends Activity {
The Android Open Source Project0c908882009-03-03 19:32:16 -080056
John Reck439c9a52010-12-14 10:04:39 -080057 public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks";
58 public static final String ACTION_SHOW_BROWSER = "show_browser";
John Reck63bb6872010-12-01 19:29:32 -080059 public static final String ACTION_RESTART = "--restart--";
60 private static final String EXTRA_STATE = "state";
John Reck38b39652012-06-05 09:22:59 -070061 public static final String EXTRA_DISABLE_URL_OVERRIDE = "disable_url_override";
John Reck63bb6872010-12-01 19:29:32 -080062
Michael Kolb8233fac2010-10-26 16:08:53 -070063 private final static String LOGTAG = "browser";
The Android Open Source Project0c908882009-03-03 19:32:16 -080064
John Reck6c2e2f32011-08-22 13:41:23 -070065 private final static boolean LOGV_ENABLED = Browser.LOGV_ENABLED;
Dave Bort31a6d1c2009-04-13 15:56:49 -070066
John Reck9c35b9c2012-05-30 10:08:50 -070067 private ActivityController mController = NullController.INSTANCE;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080068
qqzhou8c5b0a32013-07-22 15:31:03 +080069 private Handler mHandler = new Handler();
Axesh R. Ajmeracc280282015-03-25 16:31:03 -070070 private final Locale mCurrentLocale = Locale.getDefault();
Axesh R. Ajmera32558762015-04-23 13:21:56 -070071 public static boolean killOnExitDialog = false;
72
Jeff Davidson43610292010-07-16 16:03:58 -070073
kaiyizbb2db872013-08-01 22:24:07 -040074 private UiController mUiController;
75 private Handler mHandlerEx = new Handler();
76 private Runnable runnable = new Runnable() {
77 @Override
78 public void run() {
79 if (mUiController != null) {
80 WebView current = mUiController.getCurrentWebView();
81 if (current != null) {
82 current.postInvalidate();
83 }
84 }
85 }
86 };
87
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -070088 private Bundle mSavedInstanceState;
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -070089 private EngineInitializer.ActivityScheduler mActivityScheduler;
90 public EngineInitializer.ActivityScheduler getScheduler() {
91 return mActivityScheduler;
92 }
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080093
Grace Kloba22ac16e2009-10-07 18:00:23 -070094 @Override
95 public void onCreate(Bundle icicle) {
Dave Bort31a6d1c2009-04-13 15:56:49 -070096 if (LOGV_ENABLED) {
John Reck6c2e2f32011-08-22 13:41:23 -070097 Log.v(LOGTAG, this + " onStart, has state: "
98 + (icicle == null ? "false" : "true"));
The Android Open Source Project0c908882009-03-03 19:32:16 -080099 }
100 super.onCreate(icicle);
Derek Sollenbergerffa561e2010-11-16 14:19:01 -0500101
John Reck7878f222012-04-18 16:23:14 -0700102 if (shouldIgnoreIntents()) {
103 finish();
104 return;
105 }
106
Tarun Nainani87a86682015-02-05 11:47:35 -0800107 if (!isTablet(this)) {
108 final ActionBar bar = getActionBar();
109 bar.hide();
110 }
111
John Reckf57c0292011-07-21 18:15:39 -0700112 // If this was a web search request, pass it on to the default web
113 // search provider and finish this activity.
Bijan Amirzada41242f22014-03-21 12:12:18 -0700114 /*
kaiyiza2368f12013-09-02 10:43:31 +0800115 SearchEngine searchEngine = BrowserSettings.getInstance().getSearchEngine();
116 boolean result = IntentHandler.handleWebSearchIntent(this, null, getIntent());
117 if (result && (searchEngine instanceof DefaultSearchEngine)) {
John Reckf57c0292011-07-21 18:15:39 -0700118 finish();
119 return;
120 }
Bijan Amirzada41242f22014-03-21 12:12:18 -0700121 */
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700122
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700123 mActivityScheduler = EngineInitializer.onActivityCreate(BrowserActivity.this);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700124
125 Thread.setDefaultUncaughtExceptionHandler(new CrashLogExceptionHandler(this));
126
127 mSavedInstanceState = icicle;
128 // Create the initial UI views
John Reck9c35b9c2012-05-30 10:08:50 -0700129 mController = createController();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800130
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700131 // Workaround for the black screen flicker on SurfaceView creation
132 ViewGroup topLayout = (ViewGroup) findViewById(R.id.main_content);
133 topLayout.requestTransparentRegion(topLayout);
134
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700135 EngineInitializer.onPostActivityCreate(BrowserActivity.this);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800136 }
137
John Recka5176f32011-05-17 12:35:37 -0700138 public static boolean isTablet(Context context) {
139 return context.getResources().getBoolean(R.bool.isTablet);
John Reck9d27ff52011-02-11 17:47:54 -0800140 }
141
John Reck9c35b9c2012-05-30 10:08:50 -0700142 private Controller createController() {
143 Controller controller = new Controller(this);
144 boolean xlarge = isTablet(this);
145 UI ui = null;
146 if (xlarge) {
kaiyizbb2db872013-08-01 22:24:07 -0400147 XLargeUi tablet = new XLargeUi(this, controller);
148 ui = tablet;
149 mUiController = tablet.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700150 } else {
kaiyizbb2db872013-08-01 22:24:07 -0400151 PhoneUi phone = new PhoneUi(this, controller);
152 ui = phone;
153 mUiController = phone.getUiController();
John Reck9c35b9c2012-05-30 10:08:50 -0700154 }
155 controller.setUi(ui);
156 return controller;
157 }
158
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700159 public void startController() {
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700160 Intent intent = (mSavedInstanceState == null) ? getIntent() : null;
161 mController.start(intent);
Dave Tharp880f6432015-05-28 12:38:15 -0700162
163 // MDM Restrictions not tied to a UI element initialized here.
164 ThirdPartyCookiesRestriction.getInstance();
Dave Tharp490ca7f2015-06-16 11:17:34 -0700165 ManagedBookmarksRestriction.getInstance();
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700166 }
167
John Reck41554852010-12-01 12:53:37 -0800168 @VisibleForTesting
Tarun Nainani436b8732014-06-10 13:58:41 -0700169 //public to facilitate testing
170 public Controller getController() {
John Reck9c35b9c2012-05-30 10:08:50 -0700171 return (Controller) mController;
Michael Kolba2b2ba82010-08-04 17:54:03 -0700172 }
173
The Android Open Source Project0c908882009-03-03 19:32:16 -0800174 @Override
175 protected void onNewIntent(Intent intent) {
John Reck7878f222012-04-18 16:23:14 -0700176 if (shouldIgnoreIntents()) return;
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700177 EngineInitializer.onNewIntent(BrowserActivity.this, intent);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700178 // Note: Do not add any more application logic in this method.
179 // Move any additional app logic into handleOnNewIntent().
180 }
181
182 protected void handleOnNewIntent(Intent intent) {
John Reck63bb6872010-12-01 19:29:32 -0800183 if (ACTION_RESTART.equals(intent.getAction())) {
184 Bundle outState = new Bundle();
John Reck1cf4b792011-07-26 10:22:22 -0700185 mController.onSaveInstanceState(outState);
John Reck63bb6872010-12-01 19:29:32 -0800186 finish();
187 getApplicationContext().startActivity(
188 new Intent(getApplicationContext(), BrowserActivity.class)
189 .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
190 .putExtra(EXTRA_STATE, outState));
191 return;
192 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700193 mController.handleNewIntent(intent);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800194 }
195
John Reck7878f222012-04-18 16:23:14 -0700196 private KeyguardManager mKeyguardManager;
197 private PowerManager mPowerManager;
198 private boolean shouldIgnoreIntents() {
199 // Only process intents if the screen is on and the device is unlocked
200 // aka, if we will be user-visible
201 if (mKeyguardManager == null) {
202 mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
203 }
204 if (mPowerManager == null) {
205 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
206 }
207 boolean ignore = !mPowerManager.isScreenOn();
208 ignore |= mKeyguardManager.inKeyguardRestrictedInputMode();
209 if (LOGV_ENABLED) {
210 Log.v(LOGTAG, "ignore intents: " + ignore);
211 }
212 return ignore;
213 }
214
Grace Kloba22ac16e2009-10-07 18:00:23 -0700215 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700216 protected void onStart() {
217 super.onStart();
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700218 EngineInitializer.onActivityStart(BrowserActivity.this);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700219 }
220
221 @Override
Grace Kloba22ac16e2009-10-07 18:00:23 -0700222 protected void onResume() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800223 super.onResume();
Dave Bort31a6d1c2009-04-13 15:56:49 -0700224 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800225 Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
226 }
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700227 EngineInitializer.onActivityResume(BrowserActivity.this);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700228 // Note: Do not add any more application logic in this method.
229 // Move any additional app logic into handleOnResume().
230 }
Tarun Nainanief749cb2014-05-19 18:16:53 -0700231
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700232 protected void handleOnResume() {
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800233 // Note: Intentionally left blank.
234 }
235
236 protected void handleOnStart() {
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700237 mController.onResume();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800238 }
239
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400240 @Override
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800241 protected void onStop() {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700242 EngineInitializer.onActivityStop(BrowserActivity.this);
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800243 super.onStop();
244 // Note: Do not add any more application logic in this method.
245 // Move any additional app logic into handleOnStop().
246 }
247
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700248 protected void handleOnStop() {
249 CookieManager.getInstance().flushCookieStore();
250 mController.onPause();
251 }
252
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800253 @Override
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400254 public boolean onMenuOpened(int featureId, Menu menu) {
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400255 if (Window.FEATURE_OPTIONS_PANEL == featureId) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700256 mController.onMenuOpened(featureId, menu);
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400257 }
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400258 return true;
259 }
260
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400261 @Override
262 public void onOptionsMenuClosed(Menu menu) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700263 mController.onOptionsMenuClosed(menu);
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400264 }
265
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400266 @Override
267 public void onContextMenuClosed(Menu menu) {
268 super.onContextMenuClosed(menu);
Michael Kolb8233fac2010-10-26 16:08:53 -0700269 mController.onContextMenuClosed(menu);
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400270 }
271
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400272 /**
The Android Open Source Project0c908882009-03-03 19:32:16 -0800273 * onSaveInstanceState(Bundle map)
274 * onSaveInstanceState is called right before onStop(). The map contains
275 * the saved state.
276 */
Grace Kloba22ac16e2009-10-07 18:00:23 -0700277 @Override
278 protected void onSaveInstanceState(Bundle outState) {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700279 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800280 Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
281 }
John Reck9c35b9c2012-05-30 10:08:50 -0700282 mController.onSaveInstanceState(outState);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800283 }
284
Grace Kloba22ac16e2009-10-07 18:00:23 -0700285 @Override
286 protected void onPause() {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700287 EngineInitializer.onActivityPause(BrowserActivity.this);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800288 super.onPause();
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700289 // Note: Do not add any more application logic in this method.
290 // Move any additional app logic into handleOnPause().
291 }
292
293 protected void handleOnPause() {
Tarun Nainanib4a173f2015-01-05 09:23:08 -0800294 // Note: Intentionally left blank
295 }
296
Grace Kloba22ac16e2009-10-07 18:00:23 -0700297 @Override
298 protected void onDestroy() {
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.onDestroy: this=" + this);
301 }
302 super.onDestroy();
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700303 EngineInitializer.onActivityDestroy(BrowserActivity.this);
John Reck9c35b9c2012-05-30 10:08:50 -0700304 mController.onDestroy();
305 mController = NullController.INSTANCE;
Axesh R. Ajmera32558762015-04-23 13:21:56 -0700306 if (!Locale.getDefault().equals(mCurrentLocale) || killOnExitDialog) {
307 Log.i(LOGTAG,"Force Killing Browser");
Axesh R. Ajmeracc280282015-03-25 16:31:03 -0700308 Process.killProcess(Process.myPid());
309 }
310
The Android Open Source Project0c908882009-03-03 19:32:16 -0800311 }
312
313 @Override
314 public void onConfigurationChanged(Configuration newConfig) {
315 super.onConfigurationChanged(newConfig);
John Reck9c35b9c2012-05-30 10:08:50 -0700316 mController.onConfgurationChanged(newConfig);
kaiyizbb2db872013-08-01 22:24:07 -0400317
318 //For avoiding bug CR520353 temporarily, delay 300ms to refresh WebView.
319 mHandlerEx.postDelayed(runnable, 300);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800320 }
321
Grace Kloba22ac16e2009-10-07 18:00:23 -0700322 @Override
323 public void onLowMemory() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800324 super.onLowMemory();
Michael Kolb8233fac2010-10-26 16:08:53 -0700325 mController.onLowMemory();
Grace Kloba22ac16e2009-10-07 18:00:23 -0700326 }
327
The Android Open Source Project0c908882009-03-03 19:32:16 -0800328 @Override
Pankaj Garg49b79252014-11-07 17:33:41 -0800329 public void invalidateOptionsMenu() {
330 super.invalidateOptionsMenu();
331 mController.invalidateOptionsMenu();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800332 }
333
334 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700335 public boolean onPrepareOptionsMenu(Menu menu) {
336 super.onPrepareOptionsMenu(menu);
Enrico Ros1f5a0952014-11-18 20:15:48 -0800337 return false;
Cary Clark01cfcdd2010-06-04 16:36:45 -0400338 }
339
The Android Open Source Project0c908882009-03-03 19:32:16 -0800340 @Override
341 public boolean onOptionsItemSelected(MenuItem item) {
Tarun Nainani87a86682015-02-05 11:47:35 -0800342 if (item.getItemId() == android.R.id.home) {
343 mUiController.getUi().hideComboView();
344 return true;
345 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700346 if (!mController.onOptionsItemSelected(item)) {
347 return super.onOptionsItemSelected(item);
Michael Kolb370a4f32010-10-06 10:45:32 -0700348 }
The Android Open Source Project0c908882009-03-03 19:32:16 -0800349 return true;
350 }
351
352 @Override
353 public void onCreateContextMenu(ContextMenu menu, View v,
354 ContextMenuInfo menuInfo) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700355 mController.onCreateContextMenu(menu, v, menuInfo);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800356 }
357
Michael Kolb8233fac2010-10-26 16:08:53 -0700358 @Override
359 public boolean onContextItemSelected(MenuItem item) {
360 return mController.onContextItemSelected(item);
Grace Kloba22ac16e2009-10-07 18:00:23 -0700361 }
362
Grace Kloba5942df02009-09-18 11:48:29 -0700363 @Override
364 public boolean onKeyDown(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700365 return mController.onKeyDown(keyCode, event) ||
366 super.onKeyDown(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800367 }
368
Grace Kloba5942df02009-09-18 11:48:29 -0700369 @Override
John Recke6bf4ab2011-02-24 15:48:05 -0800370 public boolean onKeyLongPress(int keyCode, KeyEvent event) {
371 return mController.onKeyLongPress(keyCode, event) ||
372 super.onKeyLongPress(keyCode, event);
373 }
374
375 @Override
Grace Kloba5942df02009-09-18 11:48:29 -0700376 public boolean onKeyUp(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700377 return mController.onKeyUp(keyCode, event) ||
378 super.onKeyUp(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800379 }
380
Michael Kolbe421c242010-10-04 19:29:01 -0700381 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700382 public void onActionModeStarted(ActionMode mode) {
383 super.onActionModeStarted(mode);
384 mController.onActionModeStarted(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700385 }
386
Michael Kolbe421c242010-10-04 19:29:01 -0700387 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700388 public void onActionModeFinished(ActionMode mode) {
389 super.onActionModeFinished(mode);
390 mController.onActionModeFinished(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700391 }
392
The Android Open Source Project0c908882009-03-03 19:32:16 -0800393 @Override
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700394 protected void onActivityResult (int requestCode, int resultCode,
395 Intent intent) {
Kulanthaivel Palanichamy60aac812015-05-13 20:54:15 -0700396 EngineInitializer.onActivityResult(BrowserActivity.this, requestCode, resultCode, intent);
Kulanthaivel Palanichamy77942682014-10-28 11:52:06 -0700397 }
398
399 protected void handleOnActivityResult (int requestCode, int resultCode, Intent intent) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700400 mController.onActivityResult(requestCode, resultCode, intent);
Andrei Popescu163ab742009-10-20 17:58:23 +0100401 }
402
Michael Kolbfbc579a2011-07-07 15:59:33 -0700403 @Override
404 public boolean onSearchRequested() {
405 return mController.onSearchRequested();
406 }
407
Michael Kolbc3af0672011-08-09 10:24:41 -0700408 @Override
409 public boolean dispatchKeyEvent(KeyEvent event) {
410 return mController.dispatchKeyEvent(event)
411 || super.dispatchKeyEvent(event);
412 }
413
414 @Override
415 public boolean dispatchKeyShortcutEvent(KeyEvent event) {
416 return mController.dispatchKeyShortcutEvent(event)
417 || super.dispatchKeyShortcutEvent(event);
418 }
419
420 @Override
421 public boolean dispatchTouchEvent(MotionEvent ev) {
422 return mController.dispatchTouchEvent(ev)
423 || super.dispatchTouchEvent(ev);
424 }
425
426 @Override
427 public boolean dispatchTrackballEvent(MotionEvent ev) {
428 return mController.dispatchTrackballEvent(ev)
429 || super.dispatchTrackballEvent(ev);
430 }
431
432 @Override
433 public boolean dispatchGenericMotionEvent(MotionEvent ev) {
434 return mController.dispatchGenericMotionEvent(ev) ||
435 super.dispatchGenericMotionEvent(ev);
436 }
437
The Android Open Source Project0c908882009-03-03 19:32:16 -0800438}