From b9a051bd9ed974c4d3d29a549bb7e00d8a95c33c Mon Sep 17 00:00:00 2001 From: John Reck Date: Fri, 18 Mar 2011 11:55:48 -0700 Subject: use BrowserWebView for all UIs Rename ScrollWebView->BrowserWebView Change-Id: Icce042be4ad054b1fc3d5c0f9500f8ea112479a4 --- src/com/android/browser/BaseUi.java | 19 ++++ src/com/android/browser/BrowserWebView.java | 154 +++++++++++++++++++++++++++ src/com/android/browser/PhoneUi.java | 17 --- src/com/android/browser/ScrollWebView.java | 156 ---------------------------- src/com/android/browser/TabBar.java | 2 +- src/com/android/browser/TitleBar.java | 8 ++ src/com/android/browser/XLargeUi.java | 19 +--- 7 files changed, 187 insertions(+), 188 deletions(-) create mode 100644 src/com/android/browser/BrowserWebView.java delete mode 100644 src/com/android/browser/ScrollWebView.java (limited to 'src/com') diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index 71346ae35..51775d2c6 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 diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java new file mode 100644 index 000000000..6111aa698 --- /dev/null +++ b/src/com/android/browser/BrowserWebView.java @@ -0,0 +1,154 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.browser; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.webkit.WebView; + +import java.util.Map; + +/** + * Manage WebView scroll events + */ +public class BrowserWebView extends WebView implements Runnable { + + private ScrollListener mScrollListener; + private boolean mIsCancelled; + private boolean mBackgroundRemoved = false; + private boolean mUserInitiated = false; + private TitleBarBase mTitleBar; + + /** + * @param context + * @param attrs + * @param defStyle + * @param javascriptInterfaces + */ + public BrowserWebView(Context context, AttributeSet attrs, int defStyle, + Map javascriptInterfaces, boolean privateBrowsing) { + super(context, attrs, defStyle, javascriptInterfaces, privateBrowsing); + } + + /** + * @param context + * @param attrs + * @param defStyle + */ + public BrowserWebView( + Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { + super(context, attrs, defStyle, privateBrowsing); + } + + /** + * @param context + * @param attrs + */ + public BrowserWebView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + /** + * @param context + */ + public BrowserWebView(Context context) { + super(context); + } + + @Override + protected int getTitleHeight() { + return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0; + } + + // scroll runnable implementation + public void run() { + if (!mIsCancelled && (mScrollListener != null)) { + mScrollListener.onScroll(getVisibleTitleHeight(), mUserInitiated); + } + } + + void hideEmbeddedTitleBar() { + scrollBy(0, getVisibleTitleHeight()); + } + + @Override + public void setEmbeddedTitleBar(final View title) { + super.setEmbeddedTitleBar(title); + mTitleBar = (TitleBarBase) title; + if (title != null && mScrollListener != null) { + // allow the scroll listener to initialize its state + post(this); + } + } + + public boolean hasTitleBar() { + return (mTitleBar != null); + } + + @Override + public boolean onTouchEvent(MotionEvent evt) { + if (MotionEvent.ACTION_DOWN == evt.getActionMasked()) { + mUserInitiated = true; + } else if (MotionEvent.ACTION_UP == evt.getActionMasked() + || (MotionEvent.ACTION_CANCEL == evt.getActionMasked())) { + mUserInitiated = false; + } + return super.onTouchEvent(evt); + } + + @Override + public void stopScroll() { + mIsCancelled = true; + super.stopScroll(); + } + + @Override + protected void onScrollChanged(int l, final int t, int ol, int ot) { + super.onScrollChanged(l, t, ol, ot); + if (!mIsCancelled) { + post(this); + } else { + mIsCancelled = false; + } + } + + void setScrollListener(ScrollListener l) { + mScrollListener = l; + } + + // callback for scroll events + + interface ScrollListener { + public void onScroll(int visibleTitleHeight, boolean userInitiated); + } + + @Override + protected void onDraw(android.graphics.Canvas c) { + super.onDraw(c); + if (!mBackgroundRemoved && getRootView().getBackground() != null) { + mBackgroundRemoved = true; + post(new Runnable() { + public void run() { + getRootView().setBackgroundDrawable(null); + } + }); + } + } + +} diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index f1939e431..290ddf640 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -62,23 +62,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 diff --git a/src/com/android/browser/ScrollWebView.java b/src/com/android/browser/ScrollWebView.java deleted file mode 100644 index 8c89e51fd..000000000 --- a/src/com/android/browser/ScrollWebView.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package com.android.browser; - -import android.content.Context; -import android.graphics.Bitmap; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.webkit.WebView; - -import java.util.Map; - -/** - * Manage WebView scroll events - */ -public class ScrollWebView 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 - * @param attrs - * @param defStyle - * @param javascriptInterfaces - */ - public ScrollWebView(Context context, AttributeSet attrs, int defStyle, - Map javascriptInterfaces, boolean privateBrowsing) { - super(context, attrs, defStyle, javascriptInterfaces, privateBrowsing); - } - - /** - * @param context - * @param attrs - * @param defStyle - */ - public ScrollWebView( - Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { - super(context, attrs, defStyle, privateBrowsing); - } - - /** - * @param context - * @param attrs - */ - public ScrollWebView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - /** - * @param context - */ - public ScrollWebView(Context context) { - super(context); - } - - @Override - protected int getTitleHeight() { - return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0; - } - - // scroll runnable implementation - public void run() { - if (!mIsCancelled && (mScrollListener != null)) { - mScrollListener.onScroll(getVisibleTitleHeight(), mUserInitiated); - } - } - - void hideEmbeddedTitleBar() { - scrollBy(0, getVisibleTitleHeight()); - } - - @Override - public void setEmbeddedTitleBar(final View title) { - super.setEmbeddedTitleBar(title); - mTitleBar = (TitleBarBase) title; - if (title != null && mScrollListener != null) { - // allow the scroll listener to initialize its state - post(this); - } - } - - public boolean hasTitleBar() { - return (mTitleBar != null); - } - - @Override - public boolean onTouchEvent(MotionEvent evt) { - if (MotionEvent.ACTION_DOWN == evt.getActionMasked()) { - mUserInitiated = true; - } else if (MotionEvent.ACTION_UP == evt.getActionMasked() - || (MotionEvent.ACTION_CANCEL == evt.getActionMasked())) { - mUserInitiated = false; - } - return super.onTouchEvent(evt); - } - - @Override - public void stopScroll() { - mIsCancelled = true; - super.stopScroll(); - } - - @Override - protected void onScrollChanged(int l, final int t, int ol, int ot) { - super.onScrollChanged(l, t, ol, ot); - if (!mIsCancelled) { - post(this); - } else { - mIsCancelled = false; - } - } - - void setScrollListener(ScrollListener l) { - mScrollListener = l; - } - - // callback for scroll events - - interface ScrollListener { - public void onScroll(int visibleTitleHeight, boolean userInitiated); - } - - @Override - protected void onDraw(android.graphics.Canvas c) { - super.onDraw(c); - if (!mBackgroundRemoved && getRootView().getBackground() != null) { - mBackgroundRemoved = true; - post(new Runnable() { - public void run() { - getRootView().setBackgroundDrawable(null); - } - }); - } - } - -} 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); @@ -100,6 +102,12 @@ public class TitleBar extends TitleBarBase implements OnFocusChangeListener, ImageSpan.ALIGN_BASELINE); } + @Override + public int getEmbeddedHeight() { + int height = mContainer.getHeight(); + return height; + } + @Override public void createContextMenu(ContextMenu menu) { MenuInflater inflater = mActivity.getMenuInflater(); 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) { -- cgit v1.2.3