// Copyright (c) 2010 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.sdk.internal; import java.util.Map; import org.chromium.sdk.CallbackSemaphore; import org.chromium.sdk.JsEvaluateContext; import org.chromium.sdk.RelayOk; import org.chromium.sdk.SyncCallback; import org.chromium.sdk.util.MethodIsBlockingException; /** * Partial implementation of {@link JsEvaluateContext} that reduce all functionality * to single abstract method. */ public abstract class JsEvaluateContextBase implements JsEvaluateContext { @Override public void evaluateSync(String expression, Map<String, String> additionalContext, EvaluateCallback evaluateCallback) throws MethodIsBlockingException { CallbackSemaphore callbackSemaphore = new CallbackSemaphore(); RelayOk relayOk = evaluateAsync(expression, additionalContext, evaluateCallback, callbackSemaphore); boolean res = callbackSemaphore.tryAcquireDefault(relayOk); if (!res) { evaluateCallback.failure("Timeout"); } } @Override public abstract RelayOk evaluateAsync(String expression, Map<String, String> additionalContext, EvaluateCallback callback, SyncCallback syncCallback); }