// 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.android_webview.test.util; import android.webkit.ValueCallback; import org.chromium.android_webview.AwQuotaManagerBridge; import org.chromium.android_webview.test.AwTestBase; import org.chromium.content.browser.test.util.CallbackHelper; import java.util.concurrent.Callable; /** * This class provides common methods for AwQuotaManagerBridge related tests */ public class AwQuotaManagerBridgeTestUtil { public static AwQuotaManagerBridge getQuotaManagerBridge(AwTestBase awTestBase) throws Exception { return awTestBase.runTestOnUiThreadAndGetResult(new Callable() { @Override public AwQuotaManagerBridge call() throws Exception { return AwQuotaManagerBridge.getInstance(); } }); } private static class GetOriginsCallbackHelper extends CallbackHelper { private AwQuotaManagerBridge.Origins mOrigins; public void notifyCalled(AwQuotaManagerBridge.Origins origins) { mOrigins = origins; notifyCalled(); } public AwQuotaManagerBridge.Origins getOrigins() { assert getCallCount() > 0; return mOrigins; } } public static AwQuotaManagerBridge.Origins getOrigins(AwTestBase awTestBase) throws Exception { final GetOriginsCallbackHelper callbackHelper = new GetOriginsCallbackHelper(); final AwQuotaManagerBridge bridge = getQuotaManagerBridge(awTestBase); int callCount = callbackHelper.getCallCount(); awTestBase.getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { bridge.getOrigins( new ValueCallback() { @Override public void onReceiveValue(AwQuotaManagerBridge.Origins origins) { callbackHelper.notifyCalled(origins); } } ); } }); callbackHelper.waitForCallback(callCount); return callbackHelper.getOrigins(); } }