diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/browser/BookmarkUtils.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/BrowserHistoryPage.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/BrowserSettings.java | 9 | ||||
-rw-r--r-- | src/com/android/browser/Controller.java | 49 | ||||
-rw-r--r-- | src/com/android/browser/DownloadHandler.java | 3 | ||||
-rw-r--r-- | src/com/android/browser/FetchUrlMimeType.java | 1 | ||||
-rw-r--r-- | src/com/android/browser/HttpAuthenticationDialog.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/PhoneUi.java | 19 | ||||
-rw-r--r-- | src/com/android/browser/Tab.java | 8 | ||||
-rw-r--r-- | src/com/android/browser/TabControl.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/UiController.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/WallpaperHandler.java | 7 | ||||
-rw-r--r-- | src/com/android/browser/preferences/WebsiteSettingsFragment.java | 6 |
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; } |