Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -1448,7 +1448,7 @@ default Page newPage() {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
default Bind bind(String title) {
default BindResult bind(String title) {
return bind(title, null);
}
/**
Expand All@@ -1457,7 +1457,7 @@ default Bind bind(String title) {
* @param title Title of the browser server, used for identification.
* @since v1.59
*/
Bind bind(String title, BindOptions options);
BindResult bind(String title, BindOptions options);
/**
* <strong>NOTE:</strong> This API controls <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chromium Tracing</a>
* which is a low-level chromium-specific debugging tool. API to control <a
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,7 +39,7 @@ public interface Debugger {
*
* @since v1.59
*/
PausedDetails pausedDetails();
DebuggerPausedDetails pausedDetails();
/**
* Configures the debugger to pause before the next action is executed.
*
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand DownExpand Up@@ -197,7 +197,7 @@ public void startTracing(Page page, StartTracingOptions options) {
}

@Override
public Bind bind(String title, BindOptions options) {
public BindResult bind(String title, BindOptions options) {
JsonObject params = new JsonObject();
params.addProperty("title", title);
if (options != null) {
Expand All@@ -212,9 +212,9 @@ public Bind bind(String title, BindOptions options) {
}
}
JsonObject result = sendMessage("startServer", params, NO_TIMEOUT).getAsJsonObject();
Bind bind = new Bind();
bind.endpoint = result.get("endpoint").getAsString();
return bind;
BindResult bindResult = new BindResult();
bindResult.endpoint = result.get("endpoint").getAsString();
return bindResult;
}

@Override
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -19,7 +19,7 @@
import com.google.gson.JsonObject;
import com.microsoft.playwright.Debugger;
import com.microsoft.playwright.options.Location;
import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;

import java.util.ArrayList;
import java.util.List;
Expand All@@ -28,7 +28,7 @@

class DebuggerImpl extends ChannelOwner implements Debugger {
private final List<Runnable> pausedStateChangedHandlers = new ArrayList<>();
private PausedDetails pausedDetails;
private DebuggerPausedDetails pausedDetails;

DebuggerImpl(ChannelOwner parent, String type, String guid, JsonObject initializer) {
super(parent, type, guid, initializer);
Expand All@@ -38,7 +38,7 @@ class DebuggerImpl extends ChannelOwner implements Debugger {
protected void handleEvent(String event, JsonObject params) {
if ("pausedStateChanged".equals(event)) {
if (params.has("pausedDetails") && !params.get("pausedDetails").isJsonNull()) {
pausedDetails = gson().fromJson(params.get("pausedDetails"), PausedDetails.class);
pausedDetails = gson().fromJson(params.get("pausedDetails"), DebuggerPausedDetails.class);
} else {
pausedDetails = null;
}
Expand All@@ -59,7 +59,7 @@ public void offPausedStateChanged(Runnable handler) {
}

@Override
public PausedDetails pausedDetails() {
public DebuggerPausedDetails pausedDetails() {
return pausedDetails;
}

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class Bind {
public class BindResult {
public String endpoint;

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright.options;

public class PausedDetails {
public class DebuggerPausedDetails {
public Location location;
public String title;

Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,15 +16,15 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.Bind;
import com.microsoft.playwright.options.BindResult;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class TestBrowserBind extends TestBase {
@Test
void shouldBindAndUnbindBrowser() {
Bind serverInfo = browser.bind("default");
BindResult serverInfo = browser.bind("default");
try {
assertNotNull(serverInfo);
assertNotNull(serverInfo.endpoint);
Expand All@@ -36,7 +36,7 @@ void shouldBindAndUnbindBrowser() {

@Test
void shouldBindWithCustomTitleAndOptions() {
Bind serverInfo = browser.bind("my-title",
BindResult serverInfo = browser.bind("my-title",
new Browser.BindOptions().setHost("127.0.0.1").setPort(0));
try {
assertNotNull(serverInfo);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@

package com.microsoft.playwright;

import com.microsoft.playwright.options.PausedDetails;
import com.microsoft.playwright.options.DebuggerPausedDetails;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;
Expand All@@ -40,7 +40,7 @@ void shouldPauseAtNextAndResume() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.resume();
Expand All@@ -63,7 +63,7 @@ void shouldStepWithNext() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Click"), "title: " + details.title);
dbg.next();
Expand All@@ -88,7 +88,7 @@ void shouldPauseAtPauseCall() {
dbg.onPausedStateChanged(() -> {
if (!paused[0]) {
paused[0] = true;
PausedDetails details = dbg.pausedDetails();
DebuggerPausedDetails details = dbg.pausedDetails();
assertNotNull(details);
assertTrue(details.title.contains("Pause"), "title: " + details.title);
dbg.resume();
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -283,40 +283,20 @@ private static String wrapText(String text, int maxColumns, String prefix) {
class TypeRef extends Element {
String customType;

private static final Map<String, String> customTypeNames = new HashMap<>();
static {
customTypeNames.put("APIRequest.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newContext.options.clientCertificates", "ClientCertificate");
customTypeNames.put("Browser.newPage.options.clientCertificates", "ClientCertificate");
customTypeNames.put("BrowserType.launchPersistentContext.options.clientCertificates", "ClientCertificate");

customTypeNames.put("BrowserContext.addCookies.cookies", "Cookie");
customTypeNames.put("BrowserContext.cookies", "Cookie");

customTypeNames.put("Request.headersArray", "HttpHeader");
customTypeNames.put("Response.headersArray", "HttpHeader");
customTypeNames.put("APIResponse.headersArray", "HttpHeader");

customTypeNames.put("Locator.selectOption.values", "SelectOption");
customTypeNames.put("ElementHandle.selectOption.values", "SelectOption");
customTypeNames.put("Frame.selectOption.values", "SelectOption");
customTypeNames.put("Page.selectOption.values", "SelectOption");

customTypeNames.put("Locator.setInputFiles.files", "FilePayload");
customTypeNames.put("ElementHandle.setInputFiles.files", "FilePayload");
customTypeNames.put("FileChooser.setFiles.files", "FilePayload");
customTypeNames.put("Frame.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("Page.setInputFiles.files", "FilePayload");
customTypeNames.put("FormData.append.value", "FilePayload");
customTypeNames.put("FormData.set.value", "FilePayload");

customTypeNames.put("Locator.dragTo.options.sourcePosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.sourcePosition", "Position");
customTypeNames.put("Locator.dragTo.options.targetPosition", "Position");
customTypeNames.put("Page.dragAndDrop.options.targetPosition", "Position");
customTypeNames.put("Frame.dragAndDrop.options.targetPosition", "Position");
// Returns the Java-specific type alias declared in the api docs (e.g. `alias-java: Cookie`),
// falling back to the language-agnostic `alias` if no Java-specific override is provided.
private static String javaAlias(JsonObject jsonType) {
if (!jsonType.has("langAliases")) {
return null;
}
JsonObject langAliases = jsonType.getAsJsonObject("langAliases");
if (langAliases.has("java")) {
return langAliases.get("java").getAsString();
}
if (langAliases.has("default")) {
return langAliases.get("default").getAsString();
}
return null;
}

TypeRef(Element parent, JsonElement jsonElement) {
Expand DownExpand Up@@ -355,8 +335,9 @@ private void createClassesAndEnums(JsonObject jsonObject) {
customType = toTitle(parent.parent.jsonName) + toTitle(parent.jsonName);
typeScope().createNestedClass(customType, this, jsonObject);
} else {
if (customTypeNames.containsKey(jsonPath)) {
customType = customTypeNames.get(jsonPath);
String alias = javaAlias(jsonObject);
if (alias != null) {
customType = alias;
} else {
customType = toTitle(parent.jsonName);
}
Expand DownExpand Up@@ -534,15 +515,12 @@ private String convertBuiltinType(JsonObject jsonType) {
return convertTemplateParams(jsonType);
}
if ("function".equals(name)) {
String alias = javaAlias(jsonType);
if (alias != null) {
return alias;
}
if (!jsonType.has("args")) {
switch (jsonPath) {
case "BrowserContext.exposeBinding.callback": return "BindingCallback";
case "BrowserContext.exposeFunction.callback": return "FunctionCallback";
case "Page.exposeBinding.callback": return "BindingCallback";
case "Page.exposeFunction.callback": return "FunctionCallback";
default:
throw new RuntimeException("Missing mapping for " + jsonPath);
}
throw new RuntimeException("Missing mapping for " + jsonPath);
}
if ("WebSocketRoute.onClose.handler".equals(jsonPath)) {
return "BiConsumer<Integer, String>";
Expand Down
Loading