# lib/webdriver/serializable.js

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