package Ġcom . code bor ne . se len ide ĊĊ Ċ abstract Ġclass ĠJS Storage ( private Ġval Ġdriver : ĠDriver , Ġprivate Ġval Ġstorage : ĠString ) Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġcontains Item ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem ( key ) Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġsuspend Ġfun ĠgetItem ( key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdriver . execute JavaScript (" return Ġ$ storage . getItem ( arguments [ 0 ]) ", Ġkey ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġset Item ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . execute JavaScript < Any >(" $ storage . setItem ( arguments [ 0 ], Ġarguments [ 1 ]) ", Ġkey , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġremove Item ( key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . execute JavaScript < Any >(" $ storage . removeItem ( arguments [ 0 ]) ", Ġkey ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . execute JavaScript < Any >(" $ storage . clear () ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġsuspend Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdriver . execute JavaScript < Any >(" return Ġ$ storage . length "). toString (). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun ĠisEmpty (): ĠBoolean Ġ= Ġsize () Ġ== Ġ 0 Ċ } Ċ