Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 487300ab authored by Steve Block's avatar Steve Block Committed by Android (Google) Code Review
Browse files

Merge "Implement logic for new Geolocation delayed permission LayoutTests"

parents 3374dce3 f0f30c67
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -89,8 +89,6 @@ public class FileFilter {
        // This first block of tests are for features for which Android
        // should pass all tests. They are skipped only temporarily.
        // TODO: Fix these failing tests and remove them from this list.
        ignoreResultList.add("fast/dom/Geolocation/delayed-permission-allowed.html"); // requires layoutTestController.permissionSet
        ignoreResultList.add("fast/dom/Geolocation/delayed-permission-denied.html"); // requires layoutTestController.permissionSet
        ignoreResultList.add("fast/events/touch/basic-multi-touch-events.html"); // Requires multi-touch
        ignoreResultList.add("fast/events/touch/touch-target.html"); // Requires multi-touch
        ignoreResultList.add("http/tests/appcache/empty-manifest.html"); // flaky
+24 −3
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;

@@ -493,8 +494,19 @@ public class TestShellActivity extends Activity implements LayoutTestController
     * Sets the Geolocation permission state to be used for all future requests.
     */
    public void setGeolocationPermission(boolean allow) {
        mGeolocationPermissionSet = true;
        mIsGeolocationPermissionSet = true;
        mGeolocationPermission = allow;

        if (mPendingGeolocationPermissionCallbacks != null) {
            Iterator iter = mPendingGeolocationPermissionCallbacks.keySet().iterator();
            while (iter.hasNext()) {
                GeolocationPermissions.Callback callback =
                        (GeolocationPermissions.Callback) iter.next();
                String origin = (String) mPendingGeolocationPermissionCallbacks.get(callback);
                callback.invoke(origin, mGeolocationPermission, false);
            }
            mPendingGeolocationPermissionCallbacks = null;
        }
    }

    public void setMockDeviceOrientation(boolean canProvideAlpha, double alpha,
@@ -697,9 +709,15 @@ public class TestShellActivity extends Activity implements LayoutTestController
        @Override
        public void onGeolocationPermissionsShowPrompt(String origin,
                GeolocationPermissions.Callback callback) {
            if (mGeolocationPermissionSet) {
            if (mIsGeolocationPermissionSet) {
                callback.invoke(origin, mGeolocationPermission, false);
                return;
            }
            if (mPendingGeolocationPermissionCallbacks == null) {
                mPendingGeolocationPermissionCallbacks =
                        new HashMap<GeolocationPermissions.Callback, String>();
            }
            mPendingGeolocationPermissionCallbacks.put(callback, origin);
        }

        @Override
@@ -785,6 +803,8 @@ public class TestShellActivity extends Activity implements LayoutTestController
        mGetDrawtime = false;
        mSaveImagePath = null;
        setDefaultWebSettings(mWebView);
        mIsGeolocationPermissionSet = false;
        mPendingGeolocationPermissionCallbacks = null;
    }

    private long[] getDrawWebViewTime(WebView view, int count) {
@@ -920,6 +940,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
    static final String DRAW_TIME_LOG = Environment.getExternalStorageDirectory() +
        "/android/page_draw_time.txt";

    private boolean mGeolocationPermissionSet;
    private boolean mIsGeolocationPermissionSet;
    private boolean mGeolocationPermission;
    private Map mPendingGeolocationPermissionCallbacks;
}
+32 −10
Original line number Diff line number Diff line
@@ -40,11 +40,14 @@ import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.GeolocationPermissions.Callback;
import android.webkit.GeolocationPermissions;
import android.webkit.WebStorage.QuotaUpdater;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * This activity executes the test. It contains WebView and logic of LayoutTestController
@@ -107,8 +110,9 @@ public class LayoutTestsExecutor extends Activity {
    private LayoutTestController mLayoutTestController = new LayoutTestController(this);
    private boolean mCanOpenWindows;
    private boolean mDumpDatabaseCallbacks;
    private boolean mSetGeolocationPermissionCalled;
    private boolean mIsGeolocationPermissionSet;
    private boolean mGeolocationPermission;
    private Map mPendingGeolocationPermissionCallbacks;

    private EventSender mEventSender = new EventSender();

@@ -230,10 +234,17 @@ public class LayoutTestsExecutor extends Activity {
        }

        @Override
        public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
            if (mSetGeolocationPermissionCalled) {
        public void onGeolocationPermissionsShowPrompt(String origin,
                GeolocationPermissions.Callback callback) {
            if (mIsGeolocationPermissionSet) {
                callback.invoke(origin, mGeolocationPermission, false);
                return;
            }
            if (mPendingGeolocationPermissionCallbacks == null) {
                mPendingGeolocationPermissionCallbacks =
                        new HashMap<GeolocationPermissions.Callback, String>();
            }
            mPendingGeolocationPermissionCallbacks.put(callback, origin);
        }
    };

@@ -465,7 +476,7 @@ public class LayoutTestsExecutor extends Activity {
    private static final int MSG_DUMP_CHILD_FRAMES_AS_TEXT = 3;
    private static final int MSG_SET_CAN_OPEN_WINDOWS = 4;
    private static final int MSG_DUMP_DATABASE_CALLBACKS = 5;
    private static final int MSG_SET_GEOLOCATION_PREMISSION = 6;
    private static final int MSG_SET_GEOLOCATION_PERMISSION = 6;

    Handler mLayoutTestControllerHandler = new Handler() {
        @Override
@@ -513,9 +524,20 @@ public class LayoutTestsExecutor extends Activity {
                    mDumpDatabaseCallbacks = true;
                    break;

                case MSG_SET_GEOLOCATION_PREMISSION:
                    mSetGeolocationPermissionCalled = true;
                case MSG_SET_GEOLOCATION_PERMISSION:
                    mIsGeolocationPermissionSet = true;
                    mGeolocationPermission = msg.arg1 == 1;

                    if (mPendingGeolocationPermissionCallbacks != null) {
                        Iterator iter = mPendingGeolocationPermissionCallbacks.keySet().iterator();
                        while (iter.hasNext()) {
                            GeolocationPermissions.Callback callback =
                                    (GeolocationPermissions.Callback) iter.next();
                            String origin = (String) mPendingGeolocationPermissionCallbacks.get(callback);
                            callback.invoke(origin, mGeolocationPermission, false);
                        }
                        mPendingGeolocationPermissionCallbacks = null;
                    }
                    break;

                default:
@@ -528,8 +550,8 @@ public class LayoutTestsExecutor extends Activity {
    private void resetLayoutTestController() {
        mCanOpenWindows = false;
        mDumpDatabaseCallbacks = false;
        mSetGeolocationPermissionCalled = false;
        mGeolocationPermission = false;
        mIsGeolocationPermissionSet = false;
        mPendingGeolocationPermissionCallbacks = null;
    }

    public void waitUntilDone() {
@@ -568,7 +590,7 @@ public class LayoutTestsExecutor extends Activity {

    public void setGeolocationPermission(boolean allow) {
        Log.w(LOG_TAG + "::setGeolocationPermission", "called");
        Message msg = mLayoutTestControllerHandler.obtainMessage(MSG_SET_GEOLOCATION_PREMISSION);
        Message msg = mLayoutTestControllerHandler.obtainMessage(MSG_SET_GEOLOCATION_PERMISSION);
        msg.arg1 = allow ? 1 : 0;
        msg.sendToTarget();
    }