Index: content/public/test/android/javatests/src/org/chromium/content/browser/test/NestedSystemMessageHandler.java |
diff --git a/content/public/test/android/javatests/src/org/chromium/content/browser/test/NestedSystemMessageHandler.java b/content/public/test/android/javatests/src/org/chromium/content/browser/test/NestedSystemMessageHandler.java |
deleted file mode 100644 |
index 5f6deb44c06fbe74e8eedb1c7a9a616e81de6628..0000000000000000000000000000000000000000 |
--- a/content/public/test/android/javatests/src/org/chromium/content/browser/test/NestedSystemMessageHandler.java |
+++ /dev/null |
@@ -1,128 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.content.browser.test; |
- |
-import android.os.Handler; |
-import android.os.Looper; |
-import android.os.Message; |
-import android.os.MessageQueue; |
- |
-import org.chromium.base.CalledByNative; |
-import org.chromium.base.JNINamespace; |
- |
-import java.lang.reflect.Field; |
-import java.lang.reflect.InvocationTargetException; |
-import java.lang.reflect.Method; |
- |
-/** |
- * Handles processing messages in nested run loops. |
- * |
- * Android does not support nested message loops by default. While running |
- * in nested mode, we use reflection to retreive messages from the MessageQueue |
- * and dispatch them. |
- */ |
-@JNINamespace("content") |
-class NestedSystemMessageHandler { |
- // See org.chromium.base.SystemMessageHandler for more message ids. |
- // The id here should not conflict with the ones in SystemMessageHandler. |
- private static final int QUIT_MESSAGE = 10; |
- private static final Handler mHandler = new Handler(); |
- |
- private NestedSystemMessageHandler() { |
- } |
- |
- /** |
- * Processes messages from the current MessageQueue till the queue becomes idle. |
- */ |
- @SuppressWarnings("unused") |
- @CalledByNative |
- private boolean runNestedLoopTillIdle() { |
- boolean quitLoop = false; |
- |
- MessageQueue queue = Looper.myQueue(); |
- queue.addIdleHandler(new MessageQueue.IdleHandler() { |
- @Override |
- public boolean queueIdle() { |
- mHandler.sendMessage(mHandler.obtainMessage(QUIT_MESSAGE)); |
- return false; |
- } |
- }); |
- |
- Class<?> messageQueueClazz = queue.getClass(); |
- Method nextMethod = null; |
- try { |
- nextMethod = messageQueueClazz.getDeclaredMethod("next"); |
- } catch (SecurityException e) { |
- e.printStackTrace(); |
- return false; |
- } catch (NoSuchMethodException e) { |
- e.printStackTrace(); |
- return false; |
- } |
- nextMethod.setAccessible(true); |
- |
- while (!quitLoop) { |
- Message msg = null; |
- try { |
- msg = (Message) nextMethod.invoke(queue); |
- } catch (IllegalArgumentException e) { |
- e.printStackTrace(); |
- return false; |
- } catch (IllegalAccessException e) { |
- e.printStackTrace(); |
- return false; |
- } catch (InvocationTargetException e) { |
- e.printStackTrace(); |
- return false; |
- } |
- |
- if (msg != null) { |
- if (msg.what == QUIT_MESSAGE) { |
- quitLoop = true; |
- } |
- Class messageClazz = msg.getClass(); |
- Field targetFiled = null; |
- try { |
- targetFiled = messageClazz.getDeclaredField("target"); |
- } catch (SecurityException e) { |
- e.printStackTrace(); |
- return false; |
- } catch (NoSuchFieldException e) { |
- e.printStackTrace(); |
- return false; |
- } |
- targetFiled.setAccessible(true); |
- |
- Handler target = null; |
- try { |
- target = (Handler) targetFiled.get(msg); |
- } catch (IllegalArgumentException e) { |
- e.printStackTrace(); |
- return false; |
- } catch (IllegalAccessException e) { |
- e.printStackTrace(); |
- return false; |
- } |
- |
- if (target == null) { |
- // No target is a magic identifier for the quit message. |
- quitLoop = true; |
- } else { |
- target.dispatchMessage(msg); |
- } |
- msg.recycle(); |
- } else { |
- quitLoop = true; |
- } |
- } |
- return true; |
- } |
- |
- @SuppressWarnings("unused") |
- @CalledByNative |
- private static NestedSystemMessageHandler create() { |
- return new NestedSystemMessageHandler(); |
- } |
-} |