| Index: android_webview/test/shell/src/org/chromium/android_webview/test/AwTestContainerView.java
|
| diff --git a/android_webview/test/shell/src/org/chromium/android_webview/test/AwTestContainerView.java b/android_webview/test/shell/src/org/chromium/android_webview/test/AwTestContainerView.java
|
| index e853957f3c8657cfd9fa323712f89da28f2f2a02..153a280afe4adb5b86cad42a44a64cd77ea21e42 100644
|
| --- a/android_webview/test/shell/src/org/chromium/android_webview/test/AwTestContainerView.java
|
| +++ b/android_webview/test/shell/src/org/chromium/android_webview/test/AwTestContainerView.java
|
| @@ -7,13 +7,10 @@
|
| import android.content.Context;
|
| import android.content.res.Configuration;
|
| import android.graphics.Canvas;
|
| -import android.graphics.PixelFormat;
|
| import android.graphics.Rect;
|
| -import android.opengl.GLSurfaceView;
|
| import android.os.Bundle;
|
| import android.view.KeyEvent;
|
| import android.view.MotionEvent;
|
| -import android.view.SurfaceHolder;
|
| import android.view.View;
|
| import android.view.accessibility.AccessibilityEvent;
|
| import android.view.accessibility.AccessibilityNodeInfo;
|
| @@ -23,11 +20,7 @@
|
| import android.widget.FrameLayout;
|
|
|
| import org.chromium.android_webview.AwContents;
|
| -import org.chromium.android_webview.shell.DrawGL;
|
| import org.chromium.content.browser.ContentViewCore;
|
| -
|
| -import javax.microedition.khronos.egl.EGLConfig;
|
| -import javax.microedition.khronos.opengles.GL10;
|
|
|
| /**
|
| * A View used for testing the AwContents internals.
|
| @@ -39,180 +32,8 @@
|
| private AwContents.NativeGLDelegate mNativeGLDelegate;
|
| private AwContents.InternalAccessDelegate mInternalAccessDelegate;
|
|
|
| - HardwareView mHardwareView = null;
|
| - private boolean mAttachedContents = false;
|
| -
|
| - private class HardwareView extends GLSurfaceView {
|
| - private static final int MODE_DRAW = 0;
|
| - private static final int MODE_PROCESS = 1;
|
| - private static final int MODE_PROCESS_NO_CONTEXT = 2;
|
| - private static final int MODE_SYNC = 3;
|
| -
|
| - // mSyncLock is used to synchronized requestRender on the UI thread
|
| - // and drawGL on the rendering thread. The variables following
|
| - // are protected by it.
|
| - private final Object mSyncLock = new Object();
|
| - private boolean mNeedsProcessGL = false;
|
| - private boolean mNeedsDrawGL = false;
|
| - private boolean mWaitForCompletion = false;
|
| - private int mLastScrollX = 0;
|
| - private int mLastScrollY = 0;
|
| -
|
| - private int mCommittedScrollX = 0;
|
| - private int mCommittedScrollY = 0;
|
| -
|
| - private boolean mHaveSurface = false;
|
| - private Runnable mReadyToRenderCallback = null;
|
| -
|
| - private long mDrawGL = 0;
|
| - private long mViewContext = 0;
|
| -
|
| - public HardwareView(Context context) {
|
| - super(context);
|
| - setEGLContextClientVersion(2); // GLES2
|
| - getHolder().setFormat(PixelFormat.OPAQUE);
|
| - setPreserveEGLContextOnPause(true);
|
| - setRenderer(new Renderer() {
|
| - private int mWidth = 0;
|
| - private int mHeight = 0;
|
| -
|
| - @Override
|
| - public void onDrawFrame(GL10 gl) {
|
| - HardwareView.this.drawGL(mWidth, mHeight);
|
| - }
|
| -
|
| - @Override
|
| - public void onSurfaceChanged(GL10 gl, int width, int height) {
|
| - gl.glViewport(0, 0, width, height);
|
| - gl.glScissor(0, 0, width, height);
|
| - mWidth = width;
|
| - mHeight = height;
|
| - }
|
| -
|
| - @Override
|
| - public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
| - }
|
| - });
|
| -
|
| - setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
|
| - }
|
| -
|
| - public void initialize(long drawGL, long viewContext) {
|
| - mDrawGL = drawGL;
|
| - mViewContext = viewContext;
|
| - }
|
| -
|
| - public boolean isReadyToRender() {
|
| - return mHaveSurface;
|
| - }
|
| -
|
| - public void setReadyToRenderCallback(Runnable runner) {
|
| - assert !isReadyToRender() || runner == null;
|
| - mReadyToRenderCallback = runner;
|
| - }
|
| -
|
| - @Override
|
| - public void surfaceCreated(SurfaceHolder holder) {
|
| - boolean didHaveSurface = mHaveSurface;
|
| - mHaveSurface = true;
|
| - if (!didHaveSurface && mReadyToRenderCallback != null) {
|
| - mReadyToRenderCallback.run();
|
| - mReadyToRenderCallback = null;
|
| - }
|
| - super.surfaceCreated(holder);
|
| - }
|
| -
|
| - @Override
|
| - public void surfaceDestroyed(SurfaceHolder holder) {
|
| - mHaveSurface = false;
|
| - super.surfaceDestroyed(holder);
|
| - }
|
| -
|
| - public void updateScroll(int x, int y) {
|
| - synchronized (mSyncLock) {
|
| - mLastScrollX = x;
|
| - mLastScrollY = y;
|
| - }
|
| - }
|
| -
|
| - public void requestRender(Canvas canvas, boolean waitForCompletion) {
|
| - synchronized (mSyncLock) {
|
| - super.requestRender();
|
| - mWaitForCompletion = waitForCompletion;
|
| - if (canvas == null) {
|
| - mNeedsProcessGL = true;
|
| - } else {
|
| - mNeedsDrawGL = true;
|
| - if (!waitForCompletion) {
|
| - // Wait until SYNC is complete only.
|
| - // Do this every time there was a new frame.
|
| - try {
|
| - while (mNeedsDrawGL) {
|
| - mSyncLock.wait();
|
| - }
|
| - } catch (InterruptedException e) {
|
| - // ...
|
| - }
|
| - }
|
| - }
|
| - if (waitForCompletion) {
|
| - try {
|
| - while (mWaitForCompletion) {
|
| - mSyncLock.wait();
|
| - }
|
| - } catch (InterruptedException e) {
|
| - // ...
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - public void drawGL(int width, int height) {
|
| - final boolean draw;
|
| - final boolean process;
|
| - final boolean waitForCompletion;
|
| -
|
| - synchronized (mSyncLock) {
|
| - draw = mNeedsDrawGL;
|
| - process = mNeedsProcessGL;
|
| - waitForCompletion = mWaitForCompletion;
|
| -
|
| - if (draw) {
|
| - DrawGL.drawGL(mDrawGL, mViewContext, width, height, 0, 0, MODE_SYNC);
|
| - mCommittedScrollX = mLastScrollX;
|
| - mCommittedScrollY = mLastScrollY;
|
| - }
|
| - mNeedsDrawGL = false;
|
| - mNeedsProcessGL = false;
|
| - if (!waitForCompletion) {
|
| - mSyncLock.notifyAll();
|
| - }
|
| - }
|
| - if (draw) {
|
| - DrawGL.drawGL(mDrawGL, mViewContext, width, height,
|
| - mCommittedScrollX, mCommittedScrollY, MODE_DRAW);
|
| - } else if (process) {
|
| - DrawGL.drawGL(mDrawGL, mViewContext, width, height, 0, 0, MODE_PROCESS);
|
| - }
|
| -
|
| - if (waitForCompletion) {
|
| - synchronized (mSyncLock) {
|
| - mWaitForCompletion = false;
|
| - mSyncLock.notifyAll();
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - public AwTestContainerView(Context context, boolean hardwareAccelerated) {
|
| + public AwTestContainerView(Context context) {
|
| super(context);
|
| - if (hardwareAccelerated) {
|
| - mHardwareView = new HardwareView(context);
|
| - addView(mHardwareView,
|
| - new FrameLayout.LayoutParams(
|
| - FrameLayout.LayoutParams.MATCH_PARENT,
|
| - FrameLayout.LayoutParams.MATCH_PARENT));
|
| - }
|
| mNativeGLDelegate = new NativeGLDelegate();
|
| mInternalAccessDelegate = new InternalAccessAdapter();
|
| setOverScrollMode(View.OVER_SCROLL_ALWAYS);
|
| @@ -222,11 +43,6 @@
|
|
|
| public void initialize(AwContents awContents) {
|
| mAwContents = awContents;
|
| - if (mHardwareView != null) {
|
| - System.loadLibrary("drawgl");
|
| - mHardwareView.initialize(
|
| - mAwContents.getAwDrawGLFunction(), mAwContents.getAwDrawGLViewContext());
|
| - }
|
| }
|
|
|
| public ContentViewCore getContentViewCore() {
|
| @@ -258,28 +74,13 @@
|
| @Override
|
| public void onAttachedToWindow() {
|
| super.onAttachedToWindow();
|
| - if (mHardwareView == null || mHardwareView.isReadyToRender()) {
|
| - mAwContents.onAttachedToWindow();
|
| - mAttachedContents = true;
|
| - } else {
|
| - mHardwareView.setReadyToRenderCallback(new Runnable() {
|
| - public void run() {
|
| - assert !mAttachedContents;
|
| - mAwContents.onAttachedToWindow();
|
| - mAttachedContents = true;
|
| - }
|
| - });
|
| - }
|
| + mAwContents.onAttachedToWindow();
|
| }
|
|
|
| @Override
|
| public void onDetachedFromWindow() {
|
| super.onDetachedFromWindow();
|
| mAwContents.onDetachedFromWindow();
|
| - if (mHardwareView != null) {
|
| - mHardwareView.setReadyToRenderCallback(null);
|
| - }
|
| - mAttachedContents = false;
|
| }
|
|
|
| @Override
|
| @@ -306,7 +107,6 @@
|
| @Override
|
| public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
| mAwContents.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
| - super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
| }
|
|
|
| @Override
|
| @@ -353,9 +153,6 @@
|
|
|
| @Override
|
| public void onDraw(Canvas canvas) {
|
| - if (mHardwareView != null) {
|
| - mHardwareView.updateScroll(getScrollX(), getScrollY());
|
| - }
|
| mAwContents.onDraw(canvas);
|
| super.onDraw(canvas);
|
| }
|
| @@ -386,13 +183,11 @@
|
| return mAwContents.performAccessibilityAction(action, arguments);
|
| }
|
|
|
| - private class NativeGLDelegate implements AwContents.NativeGLDelegate {
|
| + private static class NativeGLDelegate implements AwContents.NativeGLDelegate {
|
| @Override
|
| public boolean requestDrawGL(Canvas canvas, boolean waitForCompletion,
|
| View containerview) {
|
| - if (mHardwareView == null) return false;
|
| - mHardwareView.requestRender(canvas, waitForCompletion);
|
| - return true;
|
| + return false;
|
| }
|
|
|
| @Override
|
| @@ -439,12 +234,6 @@
|
| public void super_scrollTo(int scrollX, int scrollY) {
|
| // We're intentionally not calling super.scrollTo here to make testing easier.
|
| AwTestContainerView.this.scrollTo(scrollX, scrollY);
|
| - if (mHardwareView != null) {
|
| - // Undo the scroll that will be applied because of mHardwareView
|
| - // being a child of |this|.
|
| - mHardwareView.setTranslationX(scrollX);
|
| - mHardwareView.setTranslationY(scrollY);
|
| - }
|
| }
|
|
|
| @Override
|
|
|