| 762 | } |
| 763 | |
| 764 | static char *web_cdp_eval_string(cdp_ws *ws, const char *expr, |
| 765 | char *err, size_t err_len) { |
| 766 | char *qexpr = web_json_quote(expr); |
| 767 | web_buf params = {0}; |
| 768 | web_buf_puts(¶ms, "{\"expression\":"); |
| 769 | web_buf_puts(¶ms, qexpr); |
| 770 | web_buf_puts(¶ms, ",\"returnByValue\":true,\"awaitPromise\":true,\"includeCommandLineAPI\":true}"); |
| 771 | free(qexpr); |
| 772 | char *params_s = web_buf_take(¶ms); |
| 773 | char *resp = web_cdp_call(ws, "Runtime.evaluate", params_s, err, err_len); |
| 774 | free(params_s); |
| 775 | if (!resp) return NULL; |
| 776 | if (strstr(resp, "\"exceptionDetails\"")) { |
| 777 | web_set_err(err, err_len, "JavaScript evaluation failed"); |
| 778 | free(resp); |
| 779 | return NULL; |
| 780 | } |
| 781 | char *val = web_json_get_string(resp, "value"); |
| 782 | free(resp); |
| 783 | if (!val) web_set_err(err, err_len, "Runtime.evaluate did not return a string"); |
| 784 | return val; |
| 785 | } |
| 786 | |
| 787 | static bool web_wait_ready(cdp_ws *ws, char *err, size_t err_len) { |
| 788 | const char *expr = "document.readyState"; |
no test coverage detected