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

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

Implements layoutTestController.overridePreference()

This change provides the infrastructure for
layoutTestController.overridePreference(). Currently, we only provide an
implementation for the preference 'WebKitOfflineWebApplicationCacheEnabled',
which is required by the layout test http/tests/appcache/disabled.html.

Change-Id: I8552f2f4e23b982db2d067ffa20c052e56d8fb7f
parent cd90b15c
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ public class CallbackProxy extends Handler implements EventSender, LayoutTestCon
    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;
    private static final int OVERRIDE_PREFERENCE = 44;
    
    CallbackProxy(EventSender eventSender, 
            LayoutTestController layoutTestController) {
@@ -266,6 +267,12 @@ public class CallbackProxy extends Handler implements EventSender, LayoutTestCon
            mLayoutTestController.setGeolocationPermission(
                    msg.arg1 == 1 ? true : false);
            break;

        case OVERRIDE_PREFERENCE:
            String key = msg.getData().getString("key");
            boolean value = msg.getData().getBoolean("value");
            mLayoutTestController.overridePreference(key, value);
            break;
        }
    }

@@ -484,4 +491,11 @@ public class CallbackProxy extends Handler implements EventSender, LayoutTestCon
    public void setGeolocationPermission(boolean allow) {
        obtainMessage(SET_GEOLOCATION_PERMISSION, allow ? 1 : 0, 0).sendToTarget();
    }

    public void overridePreference(String key, boolean value) {
        Message message = obtainMessage(OVERRIDE_PREFERENCE);
        message.getData().putString("key", key);
        message.getData().putBoolean("value", value);
        message.sendToTarget();
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -83,7 +83,6 @@ public class FileFilter {
        // should pass all tests. They are skipped only temporarily.
        // TODO: Fix these failing tests and remove them from this list.
        ignoreResultList.add("http/tests/appcache/auth.html"); // DumpRenderTree throws exception when authentication fails
        ignoreResultList.add("http/tests/appcache/disabled.html"); // Missing layoutTestController.overridePreference
        ignoreResultList.add("http/tests/appcache/empty-manifest.html"); // flaky
        ignoreResultList.add("http/tests/appcache/foreign-iframe-main.html"); // flaky - skips states
        ignoreResultList.add("http/tests/appcache/manifest-with-empty-file.html"); // flaky
+2 −0
Original line number Diff line number Diff line
@@ -65,4 +65,6 @@ public interface LayoutTestController {

    // For Geolocation tests
    public void setGeolocationPermission(boolean allow);

    public void overridePreference(String key, boolean value);
}
+13 −0
Original line number Diff line number Diff line
@@ -61,6 +61,9 @@ public class TestShellActivity extends Activity implements LayoutTestController

    static enum DumpDataType {DUMP_AS_TEXT, EXT_REPR, NO_OP}

    // String constants for use with layoutTestController.overridePreferences
    private final String WEBKIT_OFFLINE_WEB_APPLICATION_CACHE_ENABLED = "WebKitOfflineWebApplicationCacheEnabled";

    public class AsyncHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
@@ -459,6 +462,16 @@ public class TestShellActivity extends Activity implements LayoutTestController
        mGeolocationPermission = allow;
    }

    public void overridePreference(String key, boolean value) {
        // TODO: We should look up the correct WebView for the frame which
        // called the layoutTestController method. Currently, we just use the
        // WebView for the main frame. EventSender suffers from the same
        // problem.
        if (key.equals(WEBKIT_OFFLINE_WEB_APPLICATION_CACHE_ENABLED)) {
            mWebView.getSettings().setAppCacheEnabled(value);
        }
    }

    private final WebViewClient mViewClient = new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {