summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/browser/BookmarkUtils.java2
-rw-r--r--src/com/android/browser/BrowserHistoryPage.java2
-rw-r--r--src/com/android/browser/BrowserSettings.java9
-rw-r--r--src/com/android/browser/Controller.java49
-rw-r--r--src/com/android/browser/DownloadHandler.java3
-rw-r--r--src/com/android/browser/FetchUrlMimeType.java1
-rw-r--r--src/com/android/browser/HttpAuthenticationDialog.java2
-rw-r--r--src/com/android/browser/PhoneUi.java19
-rw-r--r--src/com/android/browser/Tab.java8
-rw-r--r--src/com/android/browser/TabControl.java2
-rw-r--r--src/com/android/browser/UiController.java2
-rw-r--r--src/com/android/browser/WallpaperHandler.java7
-rw-r--r--src/com/android/browser/preferences/WebsiteSettingsFragment.java6
13 files changed, 85 insertions, 27 deletions
diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java
index 4834c392..f0c01f7d 100644
--- a/src/com/android/browser/BookmarkUtils.java
+++ b/src/com/android/browser/BookmarkUtils.java
@@ -234,7 +234,7 @@ public class BookmarkUtils {
final Context context, final Message msg) {
new AlertDialog.Builder(context)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setMessage(context.getString(R.string.delete_bookmark_warning,
title))
.setPositiveButton(R.string.ok,
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index 69febc5a..9493b85e 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -293,7 +293,7 @@ public class BrowserHistoryPage extends Fragment
final ClearHistoryTask clear = new ClearHistoryTask(resolver);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setMessage(R.string.pref_privacy_clear_history_dlg)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 8dfd4d7b..4555c18b 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -372,11 +372,11 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
if (PREF_SEARCH_ENGINE.equals(key)) {
updateSearchEngine(false);
} else if (PREF_FULLSCREEN.equals(key)) {
- if (mController.getUi() != null) {
+ if (mController != null && mController.getUi() != null) {
mController.getUi().setFullscreen(useFullscreen());
}
} else if (PREF_ENABLE_QUICK_CONTROLS.equals(key)) {
- if (mController.getUi() != null) {
+ if (mController != null && mController.getUi() != null) {
mController.getUi().setUseQuickControls(sharedPreferences.getBoolean(key, false));
}
} else if (PREF_LINK_PREFETCH.equals(key)) {
@@ -506,9 +506,14 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
.clear()
.putLong(GoogleAccountLogin.PREF_AUTOLOGIN_TIME, gal)
.apply();
+ resetCachedValues();
syncManagedSettings();
}
+ private void resetCachedValues() {
+ updateSearchEngine(false);
+ }
+
public AutoFillProfile getAutoFillProfile() {
return mAutofillHandler.getAutoFillProfile();
}
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index e901d451..56a9e209 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -35,6 +35,7 @@ import android.content.res.TypedArray;
import android.database.ContentObserver;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.net.Uri;
@@ -512,8 +513,8 @@ public class Controller
case R.id.save_link_context_menu_id:
case R.id.download_context_menu_id:
DownloadHandler.onDownloadStartNoStream(
- mActivity, url, null, null, null,
- view.isPrivateBrowsingEnabled());
+ mActivity, url, view.getSettings().getUserAgentString(),
+ null, null, view.isPrivateBrowsingEnabled());
break;
}
break;
@@ -860,11 +861,6 @@ public class Controller
public void onPageFinished(Tab tab) {
mCrashRecoveryHandler.backupState();
mUi.onTabDataChanged(tab);
- // pause the WebView timer and release the wake lock if it is finished
- // while BrowserActivity is in pause state.
- if (mActivityPaused && pauseWebViewTimers(tab)) {
- releaseWakeLock();
- }
// Performance probe
if (false) {
@@ -889,6 +885,10 @@ public class Controller
// onPageFinished has executed)
if (tab.inPageLoad()) {
updateInLoadMenuItems(mCachedMenu, tab);
+ } else if (mActivityPaused && pauseWebViewTimers(tab)) {
+ // pause the WebView timer and release the wake lock if it is
+ // finished while BrowserActivity is in pause state.
+ releaseWakeLock();
}
if (!tab.isPrivateBrowsingEnabled()
&& !TextUtils.isEmpty(tab.getUrl())
@@ -1433,9 +1433,9 @@ public class Controller
return false;
}
});
- menu.findItem(R.id.download_context_menu_id).
- setOnMenuItemClickListener(
- new Download(mActivity, extra, webview.isPrivateBrowsingEnabled()));
+ menu.findItem(R.id.download_context_menu_id).setOnMenuItemClickListener(
+ new Download(mActivity, extra, webview.isPrivateBrowsingEnabled(),
+ webview.getSettings().getUserAgentString()));
menu.findItem(R.id.set_wallpaper_context_menu_id).
setOnMenuItemClickListener(new WallpaperHandler(mActivity,
extra));
@@ -1579,6 +1579,10 @@ public class Controller
openIncognitoTab();
break;
+ case R.id.close_other_tabs_id:
+ closeOtherTabs();
+ break;
+
case R.id.goto_menu_id:
editUrl();
break;
@@ -2135,6 +2139,10 @@ public class Controller
}
} catch (IllegalStateException e) {
// Ignore
+ } catch (SQLiteException s) {
+ // Added for possible error when user tries to remove the same bookmark
+ // that is being updated with a screen shot
+ Log.w(LOGTAG, "Error when running updateScreenshot ", s);
} finally {
if (cursor != null) cursor.close();
}
@@ -2161,6 +2169,7 @@ public class Controller
private Activity mActivity;
private String mText;
private boolean mPrivateBrowsing;
+ private String mUserAgent;
private static final String FALLBACK_EXTENSION = "dat";
private static final String IMAGE_BASE_FORMAT = "yyyy-MM-dd-HH-mm-ss-";
@@ -2169,16 +2178,18 @@ public class Controller
if (DataUri.isDataUri(mText)) {
saveDataUri();
} else {
- DownloadHandler.onDownloadStartNoStream(mActivity, mText, null,
+ DownloadHandler.onDownloadStartNoStream(mActivity, mText, mUserAgent,
null, null, mPrivateBrowsing);
}
return true;
}
- public Download(Activity activity, String toDownload, boolean privateBrowsing) {
+ public Download(Activity activity, String toDownload, boolean privateBrowsing,
+ String userAgent) {
mActivity = activity;
mText = toDownload;
mPrivateBrowsing = privateBrowsing;
+ mUserAgent = userAgent;
}
/**
@@ -2511,6 +2522,20 @@ public class Controller
}
}
+ /**
+ * Close all tabs except the current one
+ */
+ @Override
+ public void closeOtherTabs() {
+ int inactiveTabs = mTabControl.getTabCount() - 1;
+ for (int i = inactiveTabs; i >= 0; i--) {
+ Tab tab = mTabControl.getTab(i);
+ if (tab != mTabControl.getCurrentTab()) {
+ removeTab(tab);
+ }
+ }
+ }
+
// Called when loading from context menu or LOAD_URL message
protected void loadUrlFromContext(String url) {
Tab tab = getCurrentTab();
diff --git a/src/com/android/browser/DownloadHandler.java b/src/com/android/browser/DownloadHandler.java
index 219114e1..6d0b1e68 100644
--- a/src/com/android/browser/DownloadHandler.java
+++ b/src/com/android/browser/DownloadHandler.java
@@ -163,7 +163,7 @@ public class DownloadHandler {
new AlertDialog.Builder(activity)
.setTitle(title)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setMessage(msg)
.setPositiveButton(R.string.ok, null)
.show();
@@ -204,6 +204,7 @@ public class DownloadHandler {
// old percent-encoded url.
String cookies = CookieManager.getInstance().getCookie(url, privateBrowsing);
request.addRequestHeader("cookie", cookies);
+ request.addRequestHeader("User-Agent", userAgent);
request.setNotificationVisibility(
DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
if (mimetype == null) {
diff --git a/src/com/android/browser/FetchUrlMimeType.java b/src/com/android/browser/FetchUrlMimeType.java
index 07c9b936..33b58086 100644
--- a/src/com/android/browser/FetchUrlMimeType.java
+++ b/src/com/android/browser/FetchUrlMimeType.java
@@ -121,6 +121,7 @@ class FetchUrlMimeType extends Thread {
MimeTypeMap.getSingleton().getMimeTypeFromExtension(
MimeTypeMap.getFileExtensionFromUrl(mUri));
if (newMimeType != null) {
+ mimeType = newMimeType;
mRequest.setMimeType(newMimeType);
}
}
diff --git a/src/com/android/browser/HttpAuthenticationDialog.java b/src/com/android/browser/HttpAuthenticationDialog.java
index ac4119c0..0c16632f 100644
--- a/src/com/android/browser/HttpAuthenticationDialog.java
+++ b/src/com/android/browser/HttpAuthenticationDialog.java
@@ -128,7 +128,7 @@ public class HttpAuthenticationDialog {
mDialog = new AlertDialog.Builder(mContext)
.setTitle(title)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setView(v)
.setPositiveButton(R.string.action, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index eb6032d0..89eae708 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -54,6 +54,7 @@ public class PhoneUi extends BaseUi {
private int mActionBarHeight;
boolean mAnimating;
+ boolean mShowNav = false;
/**
* @param browser
@@ -80,6 +81,8 @@ public class PhoneUi extends BaseUi {
if (mUseQuickControls) {
mTitleBar.setShowProgressOnly(false);
}
+ //Do nothing while at Nav show screen.
+ if (mShowNav) return;
super.editUrl(clearInput, forceIME);
}
@@ -131,6 +134,12 @@ public class PhoneUi extends BaseUi {
mTitleBar.cancelTitleBarAnimation(true);
mTitleBar.setSkipTitleBarAnimations(true);
super.setActiveTab(tab);
+
+ //if at Nav screen show, detach tab like what showNavScreen() do.
+ if (mShowNav) {
+ detachTab(mActiveTab);
+ }
+
BrowserWebView view = (BrowserWebView) tab.getWebView();
// TabControl.setCurrentTab has been called before this,
// so the tab is guaranteed to have a webview
@@ -182,6 +191,14 @@ public class PhoneUi extends BaseUi {
if (incognito != null) {
incognito.setVisible(showingNavScreen() || mUseQuickControls);
}
+ MenuItem closeOthers = menu.findItem(R.id.close_other_tabs_id);
+ if (closeOthers != null) {
+ boolean isLastTab = true;
+ if (tab != null) {
+ isLastTab = (mTabControl.getTabCount() <= 1);
+ }
+ closeOthers.setEnabled(!isLastTab);
+ }
if (showingNavScreen()) {
menu.setGroupVisible(R.id.LIVE_MENU, false);
menu.setGroupVisible(R.id.SNAPSHOT_MENU, false);
@@ -246,6 +263,7 @@ public class PhoneUi extends BaseUi {
}
void showNavScreen() {
+ mShowNav = true;
mUiController.setBlockEvents(true);
if (mNavScreen == null) {
mNavScreen = new NavScreen(mActivity, mUiController, this);
@@ -326,6 +344,7 @@ public class PhoneUi extends BaseUi {
}
void hideNavScreen(int position, boolean animate) {
+ mShowNav = false;
if (!showingNavScreen()) return;
final Tab tab = mUiController.getTabControl().getTab(position);
if ((tab == null) || !animate) {
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 2f00b268..b3b51fd4 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -518,7 +518,7 @@ class Tab implements PictureListener {
new AlertDialog.Builder(mContext)
.setTitle(R.string.security_warning)
.setMessage(R.string.ssl_warnings_header)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setPositiveButton(R.string.ssl_continue,
new DialogInterface.OnClickListener() {
@Override
@@ -737,7 +737,7 @@ class Tab implements PictureListener {
if (dialog && mSubView != null) {
new AlertDialog.Builder(mContext)
.setTitle(R.string.too_many_subwindows_dialog_title)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setMessage(R.string.too_many_subwindows_dialog_message)
.setPositiveButton(R.string.ok, null)
.show();
@@ -745,7 +745,7 @@ class Tab implements PictureListener {
} else if (!mWebViewController.getTabControl().canCreateNewTab()) {
new AlertDialog.Builder(mContext)
.setTitle(R.string.too_many_windows_dialog_title)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setMessage(R.string.too_many_windows_dialog_message)
.setPositiveButton(R.string.ok, null)
.show();
@@ -778,7 +778,7 @@ class Tab implements PictureListener {
// Build a confirmation dialog to display to the user.
final AlertDialog d =
new AlertDialog.Builder(mContext)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.setMessage(R.string.popup_window_attempt)
.setPositiveButton(R.string.allow, allowListener)
.setNegativeButton(R.string.block, blockListener)
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 993cd113..150ece06 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -571,7 +571,7 @@ class TabControl {
}
final WebView subview = t.getSubWebView();
if (subview != null) {
- webview.stopLoading();
+ subview.stopLoading();
}
}
}
diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java
index d5dfa3e0..683e4732 100644
--- a/src/com/android/browser/UiController.java
+++ b/src/com/android/browser/UiController.java
@@ -59,6 +59,8 @@ public interface UiController {
void closeTab(Tab tab);
+ void closeOtherTabs();
+
void stopLoading();
Intent createBookmarkCurrentPageIntent(boolean canBeAnEdit);
diff --git a/src/com/android/browser/WallpaperHandler.java b/src/com/android/browser/WallpaperHandler.java
index b76861cc..0c60664e 100644
--- a/src/com/android/browser/WallpaperHandler.java
+++ b/src/com/android/browser/WallpaperHandler.java
@@ -130,7 +130,12 @@ public class WallpaperHandler extends Thread
}
Bitmap scaledWallpaper = BitmapFactory.decodeStream(inputstream,
null, options);
- wm.setBitmap(scaledWallpaper);
+ if (scaledWallpaper != null) {
+ wm.setBitmap(scaledWallpaper);
+ } else {
+ Log.e(LOGTAG, "Unable to set new wallpaper, " +
+ "decodeStream returned null.");
+ }
}
} catch (IOException e) {
Log.e(LOGTAG, "Unable to set new wallpaper");
diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
index da06428f..c84c6693 100644
--- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java
+++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
@@ -596,7 +596,7 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList
notifyDataSetChanged();
}})
.setNegativeButton(R.string.webstorage_clear_data_dialog_cancel_button, null)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.show();
break;
case Site.FEATURE_GEOLOCATION:
@@ -614,7 +614,7 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList
notifyDataSetChanged();
}})
.setNegativeButton(R.string.geolocation_settings_page_dialog_cancel_button, null)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.show();
break;
}
@@ -695,7 +695,7 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList
finish();
}})
.setNegativeButton(R.string.website_settings_clear_all_dialog_cancel_button, null)
- .setIcon(android.R.drawable.ic_dialog_alert)
+ .setIconAttribute(android.R.attr.alertDialogIcon)
.show();
break;
}