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

Commit dad347c8 authored by Steve Block's avatar Steve Block
Browse files

Adds the ability to set Geolocation permissions from DumpRenderTree on Android.

parent 77035a31
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ public class CallbackProxy extends Handler implements EventSender, LayoutTestCon
    private static final int LAYOUT_WAIT_UNTIL_DONE = 40;
    private static final int LAYOUT_DUMP_DATABASE_CALLBACKS = 41;
    private static final int LAYOUT_SET_CAN_OPEN_WINDOWS = 42;
    private static final int SET_GEOLOCATION_PERMISSION = 43;
    
    CallbackProxy(EventSender eventSender, 
            LayoutTestController layoutTestController) {
@@ -202,6 +203,11 @@ public class CallbackProxy extends Handler implements EventSender, LayoutTestCon
        case LAYOUT_SET_CAN_OPEN_WINDOWS:
            mLayoutTestController.setCanOpenWindows();
            break;

        case SET_GEOLOCATION_PERMISSION:
            mLayoutTestController.setGeolocationPermission(
                    msg.arg1 == 1 ? true : false);
            break;
        }
    }

@@ -364,4 +370,8 @@ public class CallbackProxy extends Handler implements EventSender, LayoutTestCon
    public void setMockGeolocationError(int code, String message) {
        MockGeolocation.getInstance().setError(code, message);
    }

    public void setGeolocationPermission(boolean allow) {
        obtainMessage(SET_GEOLOCATION_PERMISSION, allow ? 1 : 0, 0).sendToTarget();
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -62,4 +62,7 @@ public interface LayoutTestController {
    // For storage tests
    public void dumpDatabaseCallbacks();
    public void setCanOpenWindows();

    // For Geolocation tests
    public void setGeolocationPermission(boolean allow);
}
+24 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.ViewGroup;
import android.webkit.GeolocationPermissions;
import android.webkit.HttpAuthHandler;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
@@ -425,6 +426,14 @@ public class TestShellActivity extends Activity implements LayoutTestController
        mCanOpenWindows = true;
    }

    /**
     * Sets the Geolocation permission state to be used for all future requests.
     */
    public void setGeolocationPermission(boolean allow) {
        mGeolocationPermissionSet = true;
        mGeolocationPermission = allow;
    }

    private final WebViewClient mViewClient = new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
@@ -575,6 +584,18 @@ public class TestShellActivity extends Activity implements LayoutTestController
            callback.updateQuota(currentQuota + 1024 * 1024 * 5);
        }

        /**
         * Instructs the client to show a prompt to ask the user to set the
         * Geolocation permission state for the specified origin.
         */
        @Override
        public void onGeolocationPermissionsShowPrompt(String origin,
                GeolocationPermissions.Callback callback) {
            if (mGeolocationPermissionSet) {
                callback.invoke(origin, mGeolocationPermission, false);
            }
        }

        @Override
        public void addMessageToConsole(String message, int lineNumber,
                String sourceID) {
@@ -687,4 +708,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
    static final String RESULT_FILE = "ResultFile";
    static final String TIMEOUT_IN_MILLIS = "TimeoutInMillis";
    static final String UI_AUTO_TEST = "UiAutoTest";

    private boolean mGeolocationPermissionSet;
    private boolean mGeolocationPermission;
}