Merge "Remove unnecessary memory allocations" into ics-mr1

This commit is contained in:
John Reck
2011-11-08 08:38:07 -08:00
committed by Android (Google) Code Review
5 changed files with 25 additions and 94 deletions

View File

@@ -813,8 +813,6 @@ class BrowserFrame extends Handler {
boolean synchronous,
String username,
String password) {
PerfChecker checker = new PerfChecker();
if (mSettings.getCacheMode() != WebSettings.LOAD_DEFAULT) {
cacheMode = mSettings.getCacheMode();
}
@@ -872,11 +870,6 @@ class BrowserFrame extends Handler {
|| headers.containsKey("If-None-Match") ?
WebSettings.LOAD_NO_CACHE : cacheMode);
// Set referrer to current URL?
if (!loader.executeLoad()) {
checker.responseAlert("startLoadingResource fail");
}
checker.responseAlert("startLoadingResource succeed");
return !synchronous ? loadListener : null;
}

View File

@@ -87,11 +87,9 @@ final class JWebCoreJavaBridge extends Handler {
* Call native timer callbacks.
*/
private void fireSharedTimer() {
PerfChecker checker = new PerfChecker();
// clear the flag so that sharedTimerFired() can set a new timer
mHasInstantTimer = false;
sharedTimerFired();
checker.responseAlert("sharedTimer");
}
/**

View File

@@ -1136,7 +1136,6 @@ class LoadListener extends Handler implements EventHandler {
// Give the data to WebKit now. We don't have to synchronize on
// mDataBuilder here because pulling each chunk removes it from the
// internal list so it cannot be modified.
PerfChecker checker = new PerfChecker();
ByteArrayBuilder.Chunk c;
while (true) {
c = mDataBuilder.getFirstChunk();
@@ -1152,7 +1151,6 @@ class LoadListener extends Handler implements EventHandler {
} else {
c.release();
}
checker.responseAlert("res nativeAddData");
}
}
@@ -1173,13 +1171,11 @@ class LoadListener extends Handler implements EventHandler {
WebViewWorker.MSG_REMOVE_CACHE, this).sendToTarget();
}
if (mNativeLoader != 0) {
PerfChecker checker = new PerfChecker();
if (!mSetNativeResponse) {
setNativeResponse();
}
nativeFinished();
checker.responseAlert("res nativeFinished");
clearNativeLoader();
}
}

View File

@@ -1,49 +0,0 @@
/*
* Copyright (C) 2007 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 android.webkit;
import android.os.SystemClock;
import android.util.Log;
class PerfChecker {
private long mTime;
private static final long mResponseThreshold = 2000; // 2s
public PerfChecker() {
if (false) {
mTime = SystemClock.uptimeMillis();
}
}
/**
* @param what log string
* Logs given string if mResponseThreshold time passed between either
* instantiation or previous responseAlert call
*/
public void responseAlert(String what) {
if (false) {
long upTime = SystemClock.uptimeMillis();
long time = upTime - mTime;
if (time > mResponseThreshold) {
Log.w("webkit", what + " used " + time + " ms");
}
// Reset mTime, to permit reuse
mTime = upTime;
}
}
}

View File

@@ -683,7 +683,6 @@ public class WebView extends AbsoluteLayout
private static final int SWITCH_TO_LONGPRESS = 4;
private static final int RELEASE_SINGLE_TAP = 5;
private static final int REQUEST_FORM_DATA = 6;
private static final int RESUME_WEBCORE_PRIORITY = 7;
private static final int DRAG_HELD_MOTIONLESS = 8;
private static final int AWAKEN_SCROLL_BARS = 9;
private static final int PREVENT_DEFAULT_TIMEOUT = 10;
@@ -2850,46 +2849,47 @@ public class WebView extends AbsoluteLayout
// Used to avoid sending many visible rect messages.
private Rect mLastVisibleRectSent;
private Rect mLastGlobalRect;
private Rect mVisibleRect = new Rect();
private Rect mGlobalVisibleRect = new Rect();
private Point mScrollOffset = new Point();
Rect sendOurVisibleRect() {
if (mZoomManager.isPreventingWebkitUpdates()) return mLastVisibleRectSent;
Rect rect = new Rect();
calcOurContentVisibleRect(rect);
calcOurContentVisibleRect(mVisibleRect);
// Rect.equals() checks for null input.
if (!rect.equals(mLastVisibleRectSent)) {
if (!mVisibleRect.equals(mLastVisibleRectSent)) {
if (!mBlockWebkitViewMessages) {
Point pos = new Point(rect.left, rect.top);
mScrollOffset.set(mVisibleRect.left, mVisibleRect.top);
mWebViewCore.removeMessages(EventHub.SET_SCROLL_OFFSET);
mWebViewCore.sendMessage(EventHub.SET_SCROLL_OFFSET,
nativeMoveGeneration(), mSendScrollEvent ? 1 : 0, pos);
nativeMoveGeneration(), mSendScrollEvent ? 1 : 0, mScrollOffset);
}
mLastVisibleRectSent = rect;
mLastVisibleRectSent = mVisibleRect;
mPrivateHandler.removeMessages(SWITCH_TO_LONGPRESS);
}
Rect globalRect = new Rect();
if (getGlobalVisibleRect(globalRect)
&& !globalRect.equals(mLastGlobalRect)) {
if (getGlobalVisibleRect(mGlobalVisibleRect)
&& !mGlobalVisibleRect.equals(mLastGlobalRect)) {
if (DebugFlags.WEB_VIEW) {
Log.v(LOGTAG, "sendOurVisibleRect=(" + globalRect.left + ","
+ globalRect.top + ",r=" + globalRect.right + ",b="
+ globalRect.bottom);
Log.v(LOGTAG, "sendOurVisibleRect=(" + mGlobalVisibleRect.left + ","
+ mGlobalVisibleRect.top + ",r=" + mGlobalVisibleRect.right + ",b="
+ mGlobalVisibleRect.bottom);
}
// TODO: the global offset is only used by windowRect()
// in ChromeClientAndroid ; other clients such as touch
// and mouse events could return view + screen relative points.
if (!mBlockWebkitViewMessages) {
mWebViewCore.sendMessage(EventHub.SET_GLOBAL_BOUNDS, globalRect);
mWebViewCore.sendMessage(EventHub.SET_GLOBAL_BOUNDS, mGlobalVisibleRect);
}
mLastGlobalRect = globalRect;
mLastGlobalRect = mGlobalVisibleRect;
}
return rect;
return mVisibleRect;
}
private Point mGlobalVisibleOffset = new Point();
// Sets r to be the visible rectangle of our webview in view coordinates
private void calcOurVisibleRect(Rect r) {
Point p = new Point();
getGlobalVisibleRect(r, p);
r.offset(-p.x, -p.y);
getGlobalVisibleRect(r, mGlobalVisibleOffset);
r.offset(-mGlobalVisibleOffset.x, -mGlobalVisibleOffset.y);
}
// Sets r to be our visible rectangle in content coordinates
@@ -2905,21 +2905,21 @@ public class WebView extends AbsoluteLayout
r.bottom = viewToContentY(r.bottom);
}
private Rect mContentVisibleRect = new Rect();
// Sets r to be our visible rectangle in content coordinates. We use this
// method on the native side to compute the position of the fixed layers.
// Uses floating coordinates (necessary to correctly place elements when
// the scale factor is not 1)
private void calcOurContentVisibleRectF(RectF r) {
Rect ri = new Rect(0,0,0,0);
calcOurVisibleRect(ri);
r.left = viewToContentXf(ri.left);
calcOurVisibleRect(mContentVisibleRect);
r.left = viewToContentXf(mContentVisibleRect.left);
// viewToContentY will remove the total height of the title bar. Add
// the visible height back in to account for the fact that if the title
// bar is partially visible, the part of the visible rect which is
// displaying our content is displaced by that amount.
r.top = viewToContentYf(ri.top + getVisibleTitleHeightImpl());
r.right = viewToContentXf(ri.right);
r.bottom = viewToContentYf(ri.bottom);
r.top = viewToContentYf(mContentVisibleRect.top + getVisibleTitleHeightImpl());
r.right = viewToContentXf(mContentVisibleRect.right);
r.bottom = viewToContentYf(mContentVisibleRect.bottom);
}
static class ViewSizeData {
@@ -3569,7 +3569,6 @@ public class WebView extends AbsoluteLayout
mScrollingLayerRect.top = y;
}
abortAnimation();
mPrivateHandler.removeMessages(RESUME_WEBCORE_PRIORITY);
nativeSetIsScrolling(false);
if (!mBlockWebkitViewMessages) {
WebViewCore.resumePriority();
@@ -5992,7 +5991,6 @@ public class WebView extends AbsoluteLayout
mScroller.abortAnimation();
mTouchMode = TOUCH_DRAG_START_MODE;
mConfirmMove = true;
mPrivateHandler.removeMessages(RESUME_WEBCORE_PRIORITY);
nativeSetIsScrolling(false);
} else if (mPrivateHandler.hasMessages(RELEASE_SINGLE_TAP)) {
mPrivateHandler.removeMessages(RELEASE_SINGLE_TAP);
@@ -7329,7 +7327,6 @@ public class WebView extends AbsoluteLayout
mLastTouchTime = eventTime;
if (!mScroller.isFinished()) {
abortAnimation();
mPrivateHandler.removeMessages(RESUME_WEBCORE_PRIORITY);
}
mSnapScrollMode = SNAP_NONE;
mVelocityTracker = VelocityTracker.obtain();
@@ -8461,10 +8458,6 @@ public class WebView extends AbsoluteLayout
mWebTextView.setAdapterCustom(adapter);
}
break;
case RESUME_WEBCORE_PRIORITY:
WebViewCore.resumePriority();
WebViewCore.resumeUpdatePicture(mWebViewCore);
break;
case LONG_PRESS_CENTER:
// as this is shared by keydown and trackballdown, reset all