You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ErrorCodes and Response.status/getStatus()/setStatus() are leftover JSON Wire Protocol plumbing. They're still load-bearing in the W3C path: ErrorHandler resolves exceptions via getExceptionType(int) keyed off the integer Response.getStatus(). Removal is two independent efforts.
Interim state landed separately: both are now plain @Deprecated with javadoc pointing at the replacement (no forRemoval, to avoid promising a removal that isn't scheduled and to keep the build warning-free until the migration below happens).
Track A — Response.status integer (internal only)
No external consumer found; doable entirely within this repo.
Re-point ErrorHandler (lines 102-104, 258) off getExceptionType(int) onto the W3C state string via ErrorCodec.decode().
Flip Response.status/getStatus()/setStatus() to @Deprecated(forRemoval = true) once the internal callers above are gone (no consumers left to warn).
Remove Response.status/getStatus()/setStatus().
Track B — ErrorCodes (public API, Appium depends on it)
Appium subclasses it (ErrorCodesMobile extends ErrorCodes) and injects via new ErrorHandler(new ErrorCodesMobile(), true). Requires cross-repo sequencing:
(Selenium) Make ErrorCodec extensible — public API to register custom state → exception mappings (currently private ctor + private static ERRORS list).
(Selenium) Add an ErrorHandler constructor taking ErrorCodec; old ErrorHandler(ErrorCodes, …) delegates and stays deprecated.
(Appium) Replace the subclass with one registration: "No such context found" → NoSuchContextException. (then wait for an Appium release)
(Selenium) Mark ErrorCodes + ErrorHandler(ErrorCodes, …)forRemoval, then remove in a major release.
Have you considered any alternatives or workarounds?
Keep ErrorCodes indefinitely as legacy API and never remove it — needs no Appium coordination, reclaims no code.
Description
ErrorCodesandResponse.status/getStatus()/setStatus()are leftover JSON Wire Protocol plumbing. They're still load-bearing in the W3C path:ErrorHandlerresolves exceptions viagetExceptionType(int)keyed off the integerResponse.getStatus(). Removal is two independent efforts.Track A —
Response.statusinteger (internal only)No external consumer found; doable entirely within this repo.
ErrorHandler(lines 102-104, 258) offgetExceptionType(int)onto the W3Cstatestring viaErrorCodec.decode().getStatus()/setStatus():Response.fromJson,AbstractHttpResponseCodec,W3CHttpResponseCodec,W3CHandshakeResponse,ProtocolHandshake,ResponseConverter.Response.status/getStatus()/setStatus()to@Deprecated(forRemoval = true)once the internal callers above are gone (no consumers left to warn).Response.status/getStatus()/setStatus().Track B —
ErrorCodes(public API, Appium depends on it)Appium subclasses it (
ErrorCodesMobile extends ErrorCodes) and injects vianew ErrorHandler(new ErrorCodesMobile(), true). Requires cross-repo sequencing:ErrorCodecextensible — public API to register customstate → exceptionmappings (currently private ctor + private staticERRORSlist).ErrorHandlerconstructor takingErrorCodec; oldErrorHandler(ErrorCodes, …)delegates and stays deprecated."No such context found" → NoSuchContextException. (then wait for an Appium release)ErrorCodes+ErrorHandler(ErrorCodes, …)forRemoval, then remove in a major release.Have you considered any alternatives or workarounds?
Keep
ErrorCodesindefinitely as legacy API and never remove it — needs no Appium coordination, reclaims no code.Does this apply to specific language bindings?
Java