| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.base; | 5 package org.chromium.base; |
| 6 | 6 |
| 7 import android.os.Handler; | 7 import android.os.Handler; |
| 8 import android.os.Looper; | 8 import android.os.Looper; |
| 9 import android.os.Message; | 9 import android.os.Message; |
| 10 import android.os.MessageQueue; | 10 import android.os.MessageQueue; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 } | 77 } |
| 78 | 78 |
| 79 private void updateWhetherQueueHasBlockingSyncBarrier() { | 79 private void updateWhetherQueueHasBlockingSyncBarrier() { |
| 80 if (mMessageQueue == null) return; | 80 if (mMessageQueue == null) return; |
| 81 // As barrier detection is only used for tracing, early out when tracing | 81 // As barrier detection is only used for tracing, early out when tracing |
| 82 // is disabled to avoid any potential performance penalties. | 82 // is disabled to avoid any potential performance penalties. |
| 83 if (!TraceEvent.enabled()) { | 83 if (!TraceEvent.enabled()) { |
| 84 mQueueHasSyncBarrier = false; | 84 mQueueHasSyncBarrier = false; |
| 85 return; | 85 return; |
| 86 } | 86 } |
| 87 Message queueHead = (Message)getField(mMessageQueue, mMessageQueueMessag
eField); | 87 Message queueHead = (Message) getField(mMessageQueue, mMessageQueueMessa
geField); |
| 88 setqueueHasSyncBarrier(isSyncBarrierMessage(queueHead)); | 88 setqueueHasSyncBarrier(isSyncBarrierMessage(queueHead)); |
| 89 } | 89 } |
| 90 | 90 |
| 91 private boolean isSyncBarrierMessage(Message message) { | 91 private boolean isSyncBarrierMessage(Message message) { |
| 92 if (message == null) return false; | 92 if (message == null) return false; |
| 93 // Sync barrier messages have null targets. | 93 // Sync barrier messages have null targets. |
| 94 return getField(message, mMessageTargetField) == null; | 94 return getField(message, mMessageTargetField) == null; |
| 95 } | 95 } |
| 96 | 96 |
| 97 private void tryEnableSyncBarrierDetection() { | 97 private void tryEnableSyncBarrierDetection() { |
| 98 assert mMessageQueue == null; | 98 assert mMessageQueue == null; |
| 99 | 99 |
| 100 boolean success = false; | 100 boolean success = false; |
| 101 try { | 101 try { |
| 102 Method getQueueMethod = Looper.class.getMethod("getQueue", new Class
[]{}); | 102 Method getQueueMethod = Looper.class.getMethod("getQueue", new Class
[]{}); |
| 103 mMessageQueue = (MessageQueue)getQueueMethod.invoke(getLooper()); | 103 mMessageQueue = (MessageQueue) getQueueMethod.invoke(getLooper()); |
| 104 | 104 |
| 105 mMessageQueueMessageField = mMessageQueue.getClass().getDeclaredFiel
d("mMessages"); | 105 mMessageQueueMessageField = mMessageQueue.getClass().getDeclaredFiel
d("mMessages"); |
| 106 mMessageQueueMessageField.setAccessible(true); | 106 mMessageQueueMessageField.setAccessible(true); |
| 107 | 107 |
| 108 mMessageTargetField = Message.class.getDeclaredField("target"); | 108 mMessageTargetField = Message.class.getDeclaredField("target"); |
| 109 mMessageTargetField.setAccessible(true); | 109 mMessageTargetField.setAccessible(true); |
| 110 | 110 |
| 111 mSyncBarrierTraceId = hashCode(); | 111 mSyncBarrierTraceId = hashCode(); |
| 112 | 112 |
| 113 success = true; | 113 success = true; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 } | 157 } |
| 158 | 158 |
| 159 @CalledByNative | 159 @CalledByNative |
| 160 private static SystemMessageHandler create(long messagePumpDelegateNative) { | 160 private static SystemMessageHandler create(long messagePumpDelegateNative) { |
| 161 return new SystemMessageHandler(messagePumpDelegateNative); | 161 return new SystemMessageHandler(messagePumpDelegateNative); |
| 162 } | 162 } |
| 163 | 163 |
| 164 private native void nativeDoRunLoopOnce( | 164 private native void nativeDoRunLoopOnce( |
| 165 long messagePumpDelegateNative, long delayedScheduledTimeTicks); | 165 long messagePumpDelegateNative, long delayedScheduledTimeTicks); |
| 166 } | 166 } |
| OLD | NEW |