org.chromium.sdk/src/org/chromium/sdk/internal/protocol/data/SomeHandle.java
changeset 2 e4420d2515f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.chromium.sdk/src/org/chromium/sdk/internal/protocol/data/SomeHandle.java	Wed Dec 23 17:13:18 2009 -0800
@@ -0,0 +1,40 @@
+// 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.protocol.data;
+
+import org.chromium.sdk.internal.protocol.FrameObject;
+import org.chromium.sdk.internal.protocolparser.JsonProtocolParseException;
+import org.chromium.sdk.internal.protocolparser.JsonSubtype;
+import org.chromium.sdk.internal.protocolparser.JsonSubtypeCasting;
+import org.chromium.sdk.internal.protocolparser.JsonSubtypeCondition;
+import org.chromium.sdk.internal.protocolparser.JsonType;
+
+/**
+ * A serialized form of object when it is fully (though shallowly) described. Object always
+ * has a type and a handle. (See {@link FrameObject} as a case that makes it a bit more messy).
+ * <p>Gets serialized in mirror-delay.js,
+ * JSONProtocolSerializer.prototype.serialize_, main part.
+ */
+@JsonType(subtypesChosenManually=true)
+public interface SomeHandle extends JsonSubtype<SomeSerialized> {
+  /**
+   * An integer "handle" of the object. Normally it is unique (for particular suspended-to-resumed
+   * period). Some auxiliary objects may have non-unique handles which should be negative.
+   */
+  @JsonSubtypeCondition
+  long handle();
+
+  String type();
+
+
+  @JsonSubtypeCasting
+  ScriptHandle asScriptHandle() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting
+  ValueHandle asValueHandle() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting
+  ContextHandle asContextHandle() throws JsonProtocolParseException;
+}