lib/webdriver/serializable.js

1// Licensed to the Software Freedom Conservancy (SFC) under one
2// or more contributor license agreements. See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership. The SFC licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License. You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied. See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18goog.provide('webdriver.Serializable');
19
20
21
22/**
23 * Defines an object that can be asynchronously serialized to its WebDriver
24 * wire representation.
25 *
26 * @constructor
27 * @template T
28 */
29webdriver.Serializable = function() {};
30
31
32/**
33 * Returns either this instance's serialized represention, if immediately
34 * available, or a promise for its serialized representation. This function is
35 * conceptually equivalent to objects that have a {@code toJSON()} property,
36 * except the serialize() result may be a promise or an object containing a
37 * promise (which are not directly JSON friendly).
38 *
39 * @return {!(T|IThenable.<!T>)} This instance's serialized wire format.
40 */
41webdriver.Serializable.prototype.serialize = goog.abstractMethod;