Package org.chromium.sdk.internal.v8native

Source Code of org.chromium.sdk.internal.v8native.LoadValueTest

// Copyright (c) 2009 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.v8native;

import static org.junit.Assert.*;
import java.util.Collections;
import java.util.concurrent.CountDownLatch;

import org.chromium.sdk.CallbackSemaphore;
import org.chromium.sdk.JsEvaluateContext;
import org.chromium.sdk.JsEvaluateContext.ResultOrException;
import org.chromium.sdk.JsValue;
import org.chromium.sdk.RelayOk;
import org.chromium.sdk.internal.browserfixture.AbstractAttachedTest;
import org.chromium.sdk.internal.transport.FakeConnection;
import org.junit.Test;

/**
* A test for the DebugContextImpl class.
*/
public class LoadValueTest extends AbstractAttachedTest<FakeConnection>{

  @Test
  public void testLoadFullValue() throws Exception {
    {
      CountDownLatch latch = expectSuspend();
      messageResponder.hitBreakpoints(Collections.<Long>emptyList());
      latch.await();
    }

    final JsValue [] expressionResult = { null };
    JsEvaluateContext.EvaluateCallback evaluateCallback = new JsEvaluateContext.EvaluateCallback() {
      @Override
      public void success(ResultOrException result) {
        result.accept(new ResultOrException.Visitor<Void>() {
          @Override
          public Void visitResult(JsValue value) {
            expressionResult[0] = value;
            return null;
          }

          @Override public Void visitException(JsValue exception) {
            return null;
          }
        });
      }
      @Override
      public void failure(Exception cause) {
      }
    };

    suspendContext.getGlobalEvaluateContext().evaluateSync("#long_value", null, evaluateCallback);
    assertNotNull(expressionResult[0]);

    JsValue value = expressionResult[0];
    assertTrue(value.isTruncated());
    String shortValue = value.getValueString();

    final boolean[] reloadResult = { false } ;
    JsValue.ReloadBiggerCallback callback = new JsValue.ReloadBiggerCallback() {
      public void done() {
        reloadResult[0] = true;
      }
    };
    CallbackSemaphore semaphore = new CallbackSemaphore();
    RelayOk relayOk = value.reloadHeavyValue(callback, semaphore);
    semaphore.acquireDefault(relayOk);
    assertTrue(reloadResult[0]);

    String reloadedValue = value.getValueString();

    assertTrue(shortValue.length() < reloadedValue.length());
  }

  @Override
  protected FakeConnection createConnection() {
    return new FakeConnection(messageResponder);
  }
}
TOP

Related Classes of org.chromium.sdk.internal.v8native.LoadValueTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.