// 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 org.chromium.sdk.DebugContext;
import org.chromium.sdk.RelayOk;
import org.chromium.sdk.SyncCallback;
import org.chromium.sdk.internal.v8native.protocol.output.DebuggerMessage;
import org.chromium.sdk.internal.v8native.value.ValueLoader;
import org.chromium.sdk.internal.v8native.value.ValueLoaderImpl;
/**
* Internal API to DebugContext implementation. The actual object might
* be hidden deep inside, so we need an interface. Do not try to cast
* DebugContext to this interface -- technically they might be different
* objects.
*/
public interface InternalContext extends V8CommandSender<DebuggerMessage,
InternalContext.ContextDismissedCheckedException> {
/**
* Context belongs to a particular {@code DebugSession}.
* @return DebugSession this context belongs to
*/
DebugSession getDebugSession();
ContextBuilder getContextBuilder();
// TODO(peter.rybin): document this
boolean isValid();
CallFrameImpl getTopFrameImpl();
/**
* Sends V8 command message provided this context is still valid. There is no
* way of making sure context will be valid via this API.
* @throws ContextDismissedCheckedException if context is not valid anymore
*/
@Override
RelayOk sendV8CommandAsync(DebuggerMessage message, boolean isImmediate,
V8CommandProcessor.V8HandlerCallback commandCallback, SyncCallback syncCallback)
throws ContextDismissedCheckedException;
class ContextDismissedCheckedException extends Exception {
}
/**
* {@link ValueLoader} makes sense only for a particular context.
* @return {@link ValueLoader} of this context
*/
ValueLoaderImpl getValueLoader();
UserContext getUserContext();
/**
* An internal extension to {@link DebugContext} interface. This is an object that is
* passed to user (unlike the {@link InternalContext} which is a separate object).
*/
interface UserContext extends DebugContext {
InternalContext getInternalContext();
ContextBuilder.ExpectingBacktraceStep createReloadBacktraceStep();
}
}