blob: 97da40170bd8a57f314fa32cbbdde8f7291fec9d [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
17package com.android.browser;
18
The Android Open Source Project0c908882009-03-03 19:32:16 -080019import android.app.Activity;
The Android Open Source Project0c908882009-03-03 19:32:16 -080020import android.content.Intent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080021import android.content.res.Configuration;
The Android Open Source Project0c908882009-03-03 19:32:16 -080022import android.graphics.Bitmap;
Andrei Popescu540035d2009-09-18 18:59:20 +010023import android.graphics.BitmapFactory;
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -040024import android.graphics.PixelFormat;
The Android Open Source Project0c908882009-03-03 19:32:16 -080025import android.os.Bundle;
The Android Open Source Project0c908882009-03-03 19:32:16 -080026import android.util.Log;
Leon Scroggins III8e4fbf12010-08-17 16:58:15 -040027import android.view.ActionMode;
The Android Open Source Project0c908882009-03-03 19:32:16 -080028import android.view.ContextMenu;
Michael Kolba2b2ba82010-08-04 17:54:03 -070029import android.view.ContextMenu.ContextMenuInfo;
The Android Open Source Project0c908882009-03-03 19:32:16 -080030import android.view.KeyEvent;
The Android Open Source Project0c908882009-03-03 19:32:16 -080031import android.view.Menu;
The Android Open Source Project0c908882009-03-03 19:32:16 -080032import android.view.MenuItem;
33import android.view.View;
The Android Open Source Project0c908882009-03-03 19:32:16 -080034import android.view.Window;
35import android.view.WindowManager;
Svetoslav Ganov2b345992010-05-06 06:13:54 -070036import android.view.accessibility.AccessibilityManager;
The Android Open Source Project0c908882009-03-03 19:32:16 -080037
Michael Kolb8233fac2010-10-26 16:08:53 -070038public class BrowserActivity extends Activity {
The Android Open Source Project0c908882009-03-03 19:32:16 -080039
Michael Kolb8233fac2010-10-26 16:08:53 -070040 private final static String LOGTAG = "browser";
The Android Open Source Project0c908882009-03-03 19:32:16 -080041
Michael Kolb8233fac2010-10-26 16:08:53 -070042 private final static boolean LOGV_ENABLED =
43 com.android.browser.Browser.LOGV_ENABLED;
Dave Bort31a6d1c2009-04-13 15:56:49 -070044
Michael Kolb8233fac2010-10-26 16:08:53 -070045 private Controller mController;
46 private UI mUi;
Jeff Davidson43610292010-07-16 16:03:58 -070047
Grace Kloba22ac16e2009-10-07 18:00:23 -070048 @Override
49 public void onCreate(Bundle icicle) {
Dave Bort31a6d1c2009-04-13 15:56:49 -070050 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -080051 Log.v(LOGTAG, this + " onStart");
52 }
53 super.onCreate(icicle);
Derek Sollenbergerffa561e2010-11-16 14:19:01 -050054
Derek Sollenbergerffa561e2010-11-16 14:19:01 -050055 // render the browser in OpenGL
Michael Kolb8233fac2010-10-26 16:08:53 -070056 if (BrowserSettings.getInstance().isHardwareAccelerated()) {
Derek Sollenbergerffa561e2010-11-16 14:19:01 -050057 // Set the flag in the activity's window
58 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
59 WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
60 } else {
61 // Clear the flag in the activity's window
62 this.getWindow().setFlags(0, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
63 }
The Android Open Source Project0c908882009-03-03 19:32:16 -080064
Mike Reedd334bf52010-01-26 15:21:44 -050065 // enable this to test the browser in 32bit
66 if (false) {
67 getWindow().setFormat(PixelFormat.RGBX_8888);
68 BitmapFactory.setDefaultConfig(Bitmap.Config.ARGB_8888);
69 }
70
Michael Kolb8233fac2010-10-26 16:08:53 -070071 // If this was a web search request, pass it on to the default web
72 // search provider and finish this activity.
73 if (IntentHandler.handleWebSearchIntent(this, null, getIntent())) {
74 finish();
75 return;
76 }
77
78 if (((AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE))
79 .isEnabled()) {
Svetoslav Ganov2b345992010-05-06 06:13:54 -070080 setDefaultKeyMode(DEFAULT_KEYS_DISABLE);
81 } else {
82 setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
83 }
The Android Open Source Project0c908882009-03-03 19:32:16 -080084
Michael Kolb8233fac2010-10-26 16:08:53 -070085 mController = new Controller(this);
86 mUi = new BaseUi(this, mController);
87 mController.setUi(mUi);
88 mController.setWebViewFactory((BaseUi) mUi);
The Android Open Source Project0c908882009-03-03 19:32:16 -080089
Michael Kolb8233fac2010-10-26 16:08:53 -070090 mController.start(icicle, getIntent());
The Android Open Source Project0c908882009-03-03 19:32:16 -080091 }
92
Michael Kolb8233fac2010-10-26 16:08:53 -070093 Controller getController() {
94 return mController;
Michael Kolba2b2ba82010-08-04 17:54:03 -070095 }
96
Michael Kolb8233fac2010-10-26 16:08:53 -070097 // TODO: this is here for the test classes
98 // remove once tests are fixed
99 TabControl getTabControl() {
100 return mController.getTabControl();
Leon Scroggins58d56c62010-01-28 15:12:40 -0500101 }
102
The Android Open Source Project0c908882009-03-03 19:32:16 -0800103 @Override
104 protected void onNewIntent(Intent intent) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700105 mController.handleNewIntent(intent);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800106 }
107
Grace Kloba22ac16e2009-10-07 18:00:23 -0700108 @Override
109 protected void onResume() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800110 super.onResume();
Dave Bort31a6d1c2009-04-13 15:56:49 -0700111 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800112 Log.v(LOGTAG, "BrowserActivity.onResume: this=" + this);
113 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700114 mController.onResume();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800115 }
116
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400117 @Override
118 public boolean onMenuOpened(int featureId, Menu menu) {
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400119 if (Window.FEATURE_OPTIONS_PANEL == featureId) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700120 mController.onMenuOpened(featureId, menu);
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400121 }
Leon Scrogginsa81a7642009-08-31 17:05:41 -0400122 return true;
123 }
124
Leon Scroggins3bbb6ca2009-09-09 12:51:10 -0400125 @Override
126 public void onOptionsMenuClosed(Menu menu) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700127 mController.onOptionsMenuClosed(menu);
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400128 }
129
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400130 @Override
131 public void onContextMenuClosed(Menu menu) {
132 super.onContextMenuClosed(menu);
Michael Kolb8233fac2010-10-26 16:08:53 -0700133 mController.onContextMenuClosed(menu);
Leon Scrogginsb2b19f52009-10-09 16:10:00 -0400134 }
135
Leon Scrogginsc6fa1102009-09-21 10:40:01 -0400136 /**
The Android Open Source Project0c908882009-03-03 19:32:16 -0800137 * onSaveInstanceState(Bundle map)
138 * onSaveInstanceState is called right before onStop(). The map contains
139 * the saved state.
140 */
Grace Kloba22ac16e2009-10-07 18:00:23 -0700141 @Override
142 protected void onSaveInstanceState(Bundle outState) {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700143 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800144 Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
145 }
Michael Kolb8233fac2010-10-26 16:08:53 -0700146 mController.onSaveInstanceState(outState);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800147 }
148
Grace Kloba22ac16e2009-10-07 18:00:23 -0700149 @Override
150 protected void onPause() {
Michael Kolb8233fac2010-10-26 16:08:53 -0700151 mController.onPause();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800152 super.onPause();
The Android Open Source Project0c908882009-03-03 19:32:16 -0800153 }
154
Grace Kloba22ac16e2009-10-07 18:00:23 -0700155 @Override
156 protected void onDestroy() {
Dave Bort31a6d1c2009-04-13 15:56:49 -0700157 if (LOGV_ENABLED) {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800158 Log.v(LOGTAG, "BrowserActivity.onDestroy: this=" + this);
159 }
160 super.onDestroy();
Michael Kolb8233fac2010-10-26 16:08:53 -0700161 mController.onDestroy();
162 mUi = null;
163 mController = null;
The Android Open Source Project0c908882009-03-03 19:32:16 -0800164 }
165
166 @Override
167 public void onConfigurationChanged(Configuration newConfig) {
168 super.onConfigurationChanged(newConfig);
Michael Kolb8233fac2010-10-26 16:08:53 -0700169 mController.onConfgurationChanged(newConfig);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800170 }
171
Grace Kloba22ac16e2009-10-07 18:00:23 -0700172 @Override
173 public void onLowMemory() {
The Android Open Source Project0c908882009-03-03 19:32:16 -0800174 super.onLowMemory();
Michael Kolb8233fac2010-10-26 16:08:53 -0700175 mController.onLowMemory();
Grace Kloba22ac16e2009-10-07 18:00:23 -0700176 }
177
The Android Open Source Project0c908882009-03-03 19:32:16 -0800178 @Override
179 public boolean onCreateOptionsMenu(Menu menu) {
180 super.onCreateOptionsMenu(menu);
Michael Kolb8233fac2010-10-26 16:08:53 -0700181 return mController.onCreateOptionsMenu(menu);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800182 }
183
184 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700185 public boolean onPrepareOptionsMenu(Menu menu) {
186 super.onPrepareOptionsMenu(menu);
187 return mController.prepareOptionsMenu(menu);
Cary Clark01cfcdd2010-06-04 16:36:45 -0400188 }
189
The Android Open Source Project0c908882009-03-03 19:32:16 -0800190 @Override
191 public boolean onOptionsItemSelected(MenuItem item) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700192 if (!mController.onOptionsItemSelected(item)) {
193 return super.onOptionsItemSelected(item);
Michael Kolb370a4f32010-10-06 10:45:32 -0700194 }
The Android Open Source Project0c908882009-03-03 19:32:16 -0800195 return true;
196 }
197
198 @Override
199 public void onCreateContextMenu(ContextMenu menu, View v,
200 ContextMenuInfo menuInfo) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700201 mController.onCreateContextMenu(menu, v, menuInfo);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800202 }
203
Michael Kolb8233fac2010-10-26 16:08:53 -0700204 @Override
205 public boolean onContextItemSelected(MenuItem item) {
206 return mController.onContextItemSelected(item);
Grace Kloba22ac16e2009-10-07 18:00:23 -0700207 }
208
Grace Kloba5942df02009-09-18 11:48:29 -0700209 @Override
210 public boolean onKeyDown(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700211 return mController.onKeyDown(keyCode, event) ||
212 super.onKeyDown(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800213 }
214
Grace Kloba5942df02009-09-18 11:48:29 -0700215 @Override
216 public boolean onKeyUp(int keyCode, KeyEvent event) {
Michael Kolb8233fac2010-10-26 16:08:53 -0700217 return mController.onKeyUp(keyCode, event) ||
218 super.onKeyUp(keyCode, event);
The Android Open Source Project0c908882009-03-03 19:32:16 -0800219 }
220
Michael Kolbe421c242010-10-04 19:29:01 -0700221 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700222 public void onActionModeStarted(ActionMode mode) {
223 super.onActionModeStarted(mode);
224 mController.onActionModeStarted(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700225 }
226
Michael Kolbe421c242010-10-04 19:29:01 -0700227 @Override
Michael Kolb8233fac2010-10-26 16:08:53 -0700228 public void onActionModeFinished(ActionMode mode) {
229 super.onActionModeFinished(mode);
230 mController.onActionModeFinished(mode);
Michael Kolbe421c242010-10-04 19:29:01 -0700231 }
232
The Android Open Source Project0c908882009-03-03 19:32:16 -0800233 @Override
234 protected void onActivityResult(int requestCode, int resultCode,
Michael Kolb8233fac2010-10-26 16:08:53 -0700235 Intent intent) {
236 mController.onActivityResult(requestCode, resultCode, intent);
Andrei Popescu163ab742009-10-20 17:58:23 +0100237 }
238
Andrei Popescu56199cc2010-01-12 22:39:16 +0000239
The Android Open Source Project0c908882009-03-03 19:32:16 -0800240}