summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit
diff options
context:
space:
mode:
authorGrace Kloba <klobag@google.com>2009-07-02 17:22:01 -0700
committerGrace Kloba <klobag@google.com>2009-07-02 17:22:01 -0700
commitf099481c26a412b8193847b4c1a145c9f2d59aba (patch)
tree1e271a8ed4b65268b4464d88f525be3b8b3f0463 /core/java/android/webkit
parent340a1b21de7d5f650b15fab2bcda355ae9776f90 (diff)
downloadframeworks_base-f099481c26a412b8193847b4c1a145c9f2d59aba.zip
frameworks_base-f099481c26a412b8193847b4c1a145c9f2d59aba.tar.gz
frameworks_base-f099481c26a412b8193847b4c1a145c9f2d59aba.tar.bz2
Add the code to detect how long the WebViewCore thread is idle in the real time.
Diffstat (limited to 'core/java/android/webkit')
-rw-r--r--core/java/android/webkit/CallbackProxy.java44
1 files changed, 41 insertions, 3 deletions
diff --git a/core/java/android/webkit/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java
index 9a8c3c0..3b67fb6 100644
--- a/core/java/android/webkit/CallbackProxy.java
+++ b/core/java/android/webkit/CallbackProxy.java
@@ -641,7 +641,40 @@ class CallbackProxy extends Handler {
//--------------------------------------------------------------------------
// Performance probe
+ private static final boolean PERF_PROBE = false;
private long mWebCoreThreadTime;
+ private long mWebCoreIdleTime;
+
+ /*
+ * If PERF_PROBE is true, this block needs to be added to MessageQueue.java.
+ * startWait() and finishWait() should be called before and after wait().
+
+ private WaitCallback mWaitCallback = null;
+ public static interface WaitCallback {
+ void startWait();
+ void finishWait();
+ }
+ public final void setWaitCallback(WaitCallback callback) {
+ mWaitCallback = callback;
+ }
+ */
+
+ // un-comment this block if PERF_PROBE is true
+ /*
+ private IdleCallback mIdleCallback = new IdleCallback();
+
+ private final class IdleCallback implements MessageQueue.WaitCallback {
+ private long mStartTime = 0;
+
+ public void finishWait() {
+ mWebCoreIdleTime += SystemClock.uptimeMillis() - mStartTime;
+ }
+
+ public void startWait() {
+ mStartTime = SystemClock.uptimeMillis();
+ }
+ }
+ */
public void onPageStarted(String url, Bitmap favicon) {
// Do an unsynchronized quick check to avoid posting if no callback has
@@ -650,9 +683,12 @@ class CallbackProxy extends Handler {
return;
}
// Performance probe
- if (false) {
+ if (PERF_PROBE) {
mWebCoreThreadTime = SystemClock.currentThreadTimeMillis();
+ mWebCoreIdleTime = 0;
Network.getInstance(mContext).startTiming();
+ // un-comment this if PERF_PROBE is true
+// Looper.myQueue().setWaitCallback(mIdleCallback);
}
Message msg = obtainMessage(PAGE_STARTED);
msg.obj = favicon;
@@ -667,10 +703,12 @@ class CallbackProxy extends Handler {
return;
}
// Performance probe
- if (false) {
+ if (PERF_PROBE) {
+ // un-comment this if PERF_PROBE is true
+// Looper.myQueue().setWaitCallback(null);
Log.d("WebCore", "WebCore thread used " +
(SystemClock.currentThreadTimeMillis() - mWebCoreThreadTime)
- + " ms");
+ + " ms and idled " + mWebCoreIdleTime + " ms");
Network.getInstance(mContext).stopTiming();
}
Message msg = obtainMessage(PAGE_FINISHED, url);