diff options
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/browser/BaseUi.java | 24 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserBookmarksPage.java | 12 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserHistoryPage.java | 74 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserSettings.java | 2 | ||||
| -rw-r--r-- | src/com/android/browser/BrowserWebView.java (renamed from src/com/android/browser/ScrollWebView.java) | 12 | ||||
| -rw-r--r-- | src/com/android/browser/PhoneUi.java | 29 | ||||
| -rw-r--r-- | src/com/android/browser/TabBar.java | 2 | ||||
| -rw-r--r-- | src/com/android/browser/TitleBar.java | 8 | ||||
| -rw-r--r-- | src/com/android/browser/XLargeUi.java | 19 | ||||
| -rw-r--r-- | src/com/android/browser/preferences/LabPreferencesFragment.java | 20 |
10 files changed, 125 insertions, 77 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index 71346ae35..22de40dc3 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -23,6 +23,7 @@ import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.ObjectAnimator; import android.app.Activity; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; @@ -122,6 +123,20 @@ public abstract class BaseUi implements UI, WebViewFactory { mTitleShowing = false; } + @Override + public WebView createWebView(boolean privateBrowsing) { + // Create a new WebView + BrowserWebView w = new BrowserWebView(mActivity, null, + android.R.attr.webViewStyle, privateBrowsing); + initWebViewSettings(w); + return w; + } + + @Override + public WebView createSubWebView(boolean privateBrowsing) { + return createWebView(privateBrowsing); + } + /** * common webview initialization * @param w the webview to initialize @@ -132,6 +147,10 @@ public abstract class BaseUi implements UI, WebViewFactory { w.setMapTrackballToArrowKeys(false); // use trackball directly // Enable the built-in zoom w.getSettings().setBuiltInZoomControls(true); + boolean supportsMultiTouch = mActivity.getPackageManager() + .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH); + w.getSettings().setDisplayZoomControls(!supportsMultiTouch); + w.setExpandedTileBounds(true); // smoother scrolling // Add this WebView to the settings observer list and update the // settings @@ -608,11 +627,6 @@ public abstract class BaseUi implements UI, WebViewFactory { @Override public void onActionModeFinished(boolean inLoad) { - if (inLoad) { - // the titlebar was removed when the CAB was shown - // if the page is loading, show it again - showTitleBar(); - } } // active tabs page diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index de28d0dfa..88b89796a 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -331,10 +331,15 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte public void onCreate(Bundle icicle) { super.onCreate(icicle); - setHasOptionsMenu(true); + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(getActivity()); + prefs.registerOnSharedPreferenceChangeListener(this); + mCurrentView = prefs.getInt(PREF_SELECTED_VIEW, getDefaultView()); Bundle args = getArguments(); mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false); + + setHasOptionsMenu(true); } @Override @@ -372,11 +377,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } // Start the loaders LoaderManager lm = getLoaderManager(); - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - prefs.registerOnSharedPreferenceChangeListener(this); - mCurrentView = - prefs.getInt(PREF_SELECTED_VIEW, getDefaultView()); mAdapter = new BrowserBookmarksAdapter(getActivity(), mCurrentView); lm.restartLoader(LOADER_BOOKMARKS, null, this); diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java index 44f358d61..2dcda6887 100644 --- a/src/com/android/browser/BrowserHistoryPage.java +++ b/src/com/android/browser/BrowserHistoryPage.java @@ -59,6 +59,9 @@ import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; +import android.widget.ExpandableListView; +import android.widget.ExpandableListView.ExpandableListContextMenuInfo; +import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; @@ -68,7 +71,7 @@ import android.widget.Toast; * days of viewing. */ public class BrowserHistoryPage extends Fragment - implements LoaderCallbacks<Cursor> { + implements LoaderCallbacks<Cursor>, OnChildClickListener { static final int LOADER_HISTORY = 1; static final int LOADER_MOST_VISITED = 2; @@ -82,6 +85,7 @@ public class BrowserHistoryPage extends Fragment ListView mGroupList, mChildList; private ViewGroup mPrefsContainer; private FragmentBreadCrumbs mFragmentBreadCrumbs; + private ExpandableListView mHistoryList; // Implementation of WebIconDatabase.IconListener class IconReceiver implements IconListener { @@ -187,7 +191,7 @@ public class BrowserHistoryPage extends Fragment switch (loader.getId()) { case LOADER_HISTORY: { mAdapter.changeCursor(data); - if (!mAdapter.isEmpty() + if (!mAdapter.isEmpty() && mGroupList != null && mGroupList.getCheckedItemPosition() == ListView.INVALID_POSITION) { selectGroup(0); } @@ -229,7 +233,31 @@ public class BrowserHistoryPage extends Fragment public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mRoot = inflater.inflate(R.layout.history, container, false); + mAdapter = new HistoryAdapter(getActivity()); ViewStub stub = (ViewStub) mRoot.findViewById(R.id.pref_stub); + if (stub != null) { + inflateTwoPane(stub); + } else { + inflateSinglePane(); + } + + // Start the loaders + getLoaderManager().restartLoader(LOADER_HISTORY, null, this); + getLoaderManager().restartLoader(LOADER_MOST_VISITED, null, this); + + // Register to receive icons in case they haven't all been loaded. + CombinedBookmarkHistoryView.getIconListenerSet().addListener(mIconReceiver); + return mRoot; + } + + private void inflateSinglePane() { + mHistoryList = (ExpandableListView) mRoot.findViewById(R.id.history); + mHistoryList.setAdapter(mAdapter); + mHistoryList.setOnChildClickListener(this); + registerForContextMenu(mHistoryList); + } + + private void inflateTwoPane(ViewStub stub) { stub.setLayoutResource(com.android.internal.R.layout.preference_list_content); stub.inflate(); mGroupList = (ListView) mRoot.findViewById(android.R.id.list); @@ -238,7 +266,6 @@ public class BrowserHistoryPage extends Fragment mFragmentBreadCrumbs.setMaxVisible(1); mFragmentBreadCrumbs.setActivity(getActivity()); mPrefsContainer.setVisibility(View.VISIBLE); - mAdapter = new HistoryAdapter(getActivity()); mGroupList.setAdapter(new HistoryGroupWrapper(mAdapter)); mGroupList.setOnItemClickListener(mGroupItemClickListener); mGroupList.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); @@ -249,14 +276,6 @@ public class BrowserHistoryPage extends Fragment registerForContextMenu(mChildList); ViewGroup prefs = (ViewGroup) mRoot.findViewById(com.android.internal.R.id.prefs); prefs.addView(mChildList); - - // Start the loaders - getLoaderManager().restartLoader(LOADER_HISTORY, null, this); - getLoaderManager().restartLoader(LOADER_MOST_VISITED, null, this); - - // Register to receive icons in case they haven't all been loaded. - CombinedBookmarkHistoryView.getIconListenerSet().addListener(mIconReceiver); - return mRoot; } private OnItemClickListener mGroupItemClickListener = new OnItemClickListener() { @@ -279,6 +298,13 @@ public class BrowserHistoryPage extends Fragment }; @Override + public boolean onChildClick(ExpandableListView parent, View view, + int groupPosition, int childPosition, long id) { + mCallbacks.onUrlSelected(((HistoryItem) view).getUrl(), false); + return true; + } + + @Override public void onDestroy() { super.onDestroy(); CombinedBookmarkHistoryView.getIconListenerSet().removeListener(mIconReceiver); @@ -341,17 +367,30 @@ public class BrowserHistoryPage extends Fragment } } + View getTargetView(ContextMenuInfo menuInfo) { + if (menuInfo instanceof AdapterContextMenuInfo) { + return ((AdapterContextMenuInfo) menuInfo).targetView; + } + if (menuInfo instanceof ExpandableListContextMenuInfo) { + return ((ExpandableListContextMenuInfo) menuInfo).targetView; + } + return null; + } + @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - AdapterContextMenuInfo i = (AdapterContextMenuInfo) menuInfo; + + View targetView = getTargetView(menuInfo); + if (!(targetView instanceof HistoryItem)) { + return; + } + HistoryItem historyItem = (HistoryItem) targetView; // Inflate the menu Activity parent = getActivity(); MenuInflater inflater = parent.getMenuInflater(); inflater.inflate(R.menu.historycontext, menu); - HistoryItem historyItem = (HistoryItem) i.targetView; - // Setup the header if (mContextHeader == null) { mContextHeader = new HistoryItem(parent, false); @@ -382,12 +421,11 @@ public class BrowserHistoryPage extends Fragment @Override public boolean onContextItemSelected(MenuItem item) { - AdapterContextMenuInfo i = - (AdapterContextMenuInfo) item.getMenuInfo(); - if (i == null) { + ContextMenuInfo menuInfo = item.getMenuInfo(); + if (menuInfo == null) { return false; } - HistoryItem historyItem = (HistoryItem) i.targetView; + HistoryItem historyItem = (HistoryItem) getTargetView(menuInfo); String url = historyItem.getUrl(); String title = historyItem.getName(); Activity activity = getActivity(); diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index 357d1e907..9dc3c5f6b 100644 --- a/src/com/android/browser/BrowserSettings.java +++ b/src/com/android/browser/BrowserSettings.java @@ -193,7 +193,7 @@ public class BrowserSettings extends Observable implements OnSharedPreferenceCha public static final Uri RLZ_PROVIDER_URI = Uri.parse("content://" + RLZ_PROVIDER + "/"); // Set to true to enable some of the about:debug options - public static final boolean DEV_BUILD = false; + public static final boolean DEV_BUILD = true; private Controller mController; diff --git a/src/com/android/browser/ScrollWebView.java b/src/com/android/browser/BrowserWebView.java index 8c89e51fd..6111aa698 100644 --- a/src/com/android/browser/ScrollWebView.java +++ b/src/com/android/browser/BrowserWebView.java @@ -17,7 +17,6 @@ package com.android.browser; import android.content.Context; -import android.graphics.Bitmap; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -28,14 +27,13 @@ import java.util.Map; /** * Manage WebView scroll events */ -public class ScrollWebView extends WebView implements Runnable { +public class BrowserWebView extends WebView implements Runnable { private ScrollListener mScrollListener; private boolean mIsCancelled; private boolean mBackgroundRemoved = false; private boolean mUserInitiated = false; private TitleBarBase mTitleBar; - private Bitmap mBitmap; /** * @param context @@ -43,7 +41,7 @@ public class ScrollWebView extends WebView implements Runnable { * @param defStyle * @param javascriptInterfaces */ - public ScrollWebView(Context context, AttributeSet attrs, int defStyle, + public BrowserWebView(Context context, AttributeSet attrs, int defStyle, Map<String, Object> javascriptInterfaces, boolean privateBrowsing) { super(context, attrs, defStyle, javascriptInterfaces, privateBrowsing); } @@ -53,7 +51,7 @@ public class ScrollWebView extends WebView implements Runnable { * @param attrs * @param defStyle */ - public ScrollWebView( + public BrowserWebView( Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { super(context, attrs, defStyle, privateBrowsing); } @@ -62,14 +60,14 @@ public class ScrollWebView extends WebView implements Runnable { * @param context * @param attrs */ - public ScrollWebView(Context context, AttributeSet attrs) { + public BrowserWebView(Context context, AttributeSet attrs) { super(context, attrs); } /** * @param context */ - public ScrollWebView(Context context) { + public BrowserWebView(Context context) { super(context); } diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index f1939e431..dd68e85b5 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -19,6 +19,7 @@ package com.android.browser; import android.app.Activity; import android.content.Context; import android.graphics.PixelFormat; +import android.os.Handler; import android.util.Log; import android.view.ActionMode; import android.view.Gravity; @@ -62,23 +63,6 @@ public class PhoneUi extends BaseUi { mActivity.getActionBar().hide(); } - // webview factory - - @Override - public WebView createWebView(boolean privateBrowsing) { - // Create a new WebView - WebView w = new WebView(mActivity, null, - android.R.attr.webViewStyle, privateBrowsing); - initWebViewSettings(w); - return w; - } - - @Override - public WebView createSubWebView(boolean privateBrowsing) { - WebView web = createWebView(privateBrowsing); - return web; - } - // lifecycle @Override @@ -255,6 +239,17 @@ public class PhoneUi extends BaseUi { } @Override + public void onActionModeFinished(boolean inLoad) { + // TODO: Remove once b/4136071 is fixed + new Handler().post(new Runnable() { + @Override + public void run() { + mActivity.getActionBar().hide(); + } + }); + } + + @Override public boolean dispatchKey(int code, KeyEvent event) { return false; } diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java index 1d17cb3f5..c97fc718c 100644 --- a/src/com/android/browser/TabBar.java +++ b/src/com/android/browser/TabBar.java @@ -16,7 +16,7 @@ package com.android.browser; -import com.android.browser.ScrollWebView.ScrollListener; +import com.android.browser.BrowserWebView.ScrollListener; import android.animation.Animator; import android.animation.Animator.AnimatorListener; diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java index 686416cbf..f1fcdc334 100644 --- a/src/com/android/browser/TitleBar.java +++ b/src/com/android/browser/TitleBar.java @@ -52,6 +52,7 @@ public class TitleBar extends TitleBarBase implements OnFocusChangeListener, private boolean mInLoad; private Intent mVoiceSearchIntent; private ImageSpan mArcsSpan; + private View mContainer; public TitleBar(Activity activity, UiController controller, PhoneUi ui) { super(activity, controller, ui); @@ -59,6 +60,7 @@ public class TitleBar extends TitleBarBase implements OnFocusChangeListener, factory.inflate(R.layout.title_bar, this); mActivity = activity; + mContainer = findViewById(R.id.taburlbar); mUrlInput = (UrlInputView) findViewById(R.id.url_input); mUrlInput.setCompoundDrawablePadding(5); mUrlInput.setContainer(this); @@ -101,6 +103,12 @@ public class TitleBar extends TitleBarBase implements OnFocusChangeListener, } @Override + public int getEmbeddedHeight() { + int height = mContainer.getHeight(); + return height; + } + + @Override public void createContextMenu(ContextMenu menu) { MenuInflater inflater = mActivity.getMenuInflater(); inflater.inflate(R.menu.title_context, menu); diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 13018afe6..92fdc9787 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -16,7 +16,7 @@ package com.android.browser; -import com.android.browser.ScrollWebView.ScrollListener; +import com.android.browser.BrowserWebView.ScrollListener; import android.animation.Animator; import android.animation.Animator.AnimatorListener; @@ -149,23 +149,14 @@ public class XLargeUi extends BaseUi implements ScrollListener { @Override public WebView createWebView(boolean privateBrowsing) { // Create a new WebView - ScrollWebView w = new ScrollWebView(mActivity, null, - android.R.attr.webViewStyle, privateBrowsing); - initWebViewSettings(w); + BrowserWebView w = (BrowserWebView) super.createWebView(privateBrowsing); w.setScrollListener(this); - boolean supportsMultiTouch = mActivity.getPackageManager() - .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH); - w.getSettings().setDisplayZoomControls(!supportsMultiTouch); - w.setExpandedTileBounds(true); // smoother scrolling return w; } @Override public WebView createSubWebView(boolean privateBrowsing) { - ScrollWebView web = (ScrollWebView) createWebView(privateBrowsing); - // no scroll listener for subview - web.setScrollListener(null); - return web; + return super.createWebView(privateBrowsing); } @Override @@ -174,7 +165,7 @@ public class XLargeUi extends BaseUi implements ScrollListener { } void stopWebViewScrolling() { - ScrollWebView web = (ScrollWebView) mUiController.getCurrentWebView(); + BrowserWebView web = (BrowserWebView) mUiController.getCurrentWebView(); if (web != null) { web.stopScroll(); } @@ -237,7 +228,7 @@ public class XLargeUi extends BaseUi implements ScrollListener { @Override void setActiveTab(Tab tab, boolean needsAttaching) { - ScrollWebView view = (ScrollWebView) tab.getWebView(); + BrowserWebView view = (BrowserWebView) tab.getWebView(); // TabControl.setCurrentTab has been called before this, // so the tab is guaranteed to have a webview if (view == null) { diff --git a/src/com/android/browser/preferences/LabPreferencesFragment.java b/src/com/android/browser/preferences/LabPreferencesFragment.java index a06dc3e0e..88a9690d9 100644 --- a/src/com/android/browser/preferences/LabPreferencesFragment.java +++ b/src/com/android/browser/preferences/LabPreferencesFragment.java @@ -42,21 +42,25 @@ public class LabPreferencesFragment extends PreferenceFragment addPreferencesFromResource(R.xml.lab_preferences); Preference e = findPreference(BrowserSettings.PREF_QUICK_CONTROLS); - e.setOnPreferenceChangeListener(this); + if (e != null) { + e.setOnPreferenceChangeListener(this); + } useInstantPref = findPreference(BrowserSettings.PREF_USE_INSTANT); } @Override public void onResume() { super.onResume(); - useInstantPref.setEnabled(false); + if (useInstantPref != null) { + useInstantPref.setEnabled(false); - // Enable the "use instant" preference only if the selected - // search engine is google. - if (mBrowserSettings.getSearchEngine() != null) { - final String currentName = mBrowserSettings.getSearchEngine().getName(); - if (SearchEngine.GOOGLE.equals(currentName)) { - useInstantPref.setEnabled(true); + // Enable the "use instant" preference only if the selected + // search engine is google. + if (mBrowserSettings.getSearchEngine() != null) { + final String currentName = mBrowserSettings.getSearchEngine().getName(); + if (SearchEngine.GOOGLE.equals(currentName)) { + useInstantPref.setEnabled(true); + } } } } |
