diff --git a/playwright/src/main/java/com/microsoft/playwright/BrowserType.java b/playwright/src/main/java/com/microsoft/playwright/BrowserType.java index 2738ce42..75e80397 100644 --- a/playwright/src/main/java/com/microsoft/playwright/BrowserType.java +++ b/playwright/src/main/java/com/microsoft/playwright/BrowserType.java @@ -81,7 +81,8 @@ public interface BrowserType { /** * If {@code true}, Playwright does not pass its own configurations args and only uses the ones from {@code args}. If an array is given, then filters out the given default arguments. Dangerous option; use with care. Defaults to {@code false}. */ - public Boolean ignoreDefaultArgs; + public List ignoreDefaultArgs; + public Boolean ignoreAllDefaultArgs; /** * Network proxy settings. */ @@ -143,8 +144,12 @@ public interface BrowserType { this.args = args; return this; } - public LaunchOptions withIgnoreDefaultArgs(Boolean ignoreDefaultArgs) { - this.ignoreDefaultArgs = ignoreDefaultArgs; + public LaunchOptions withIgnoreDefaultArgs(List argumentNames) { + this.ignoreDefaultArgs = argumentNames; + return this; + } + public LaunchOptions withIgnoreAllDefaultArgs(boolean ignore) { + this.ignoreAllDefaultArgs = ignore; return this; } public Proxy setProxy() { @@ -328,7 +333,8 @@ public interface BrowserType { /** * If {@code true}, then do not use any of the default arguments. If an array is given, then filter out the given default arguments. Dangerous option; use with care. Defaults to {@code false}. */ - public String ignoreDefaultArgs; + public List ignoreDefaultArgs; + public Boolean ignoreAllDefaultArgs; /** * Network proxy settings. */ @@ -459,8 +465,12 @@ public interface BrowserType { this.args = args; return this; } - public LaunchPersistentContextOptions withIgnoreDefaultArgs(String ignoreDefaultArgs) { - this.ignoreDefaultArgs = ignoreDefaultArgs; + public LaunchPersistentContextOptions withIgnoreDefaultArgs(List argumentNames) { + this.ignoreDefaultArgs = argumentNames; + return this; + } + public LaunchPersistentContextOptions withIgnoreAllDefaultArgs(boolean ignore) { + this.ignoreAllDefaultArgs = ignore; return this; } public Proxy setProxy() { diff --git a/playwright/src/test/java/com/microsoft/playwright/TestDefaultBrowserContext2.java b/playwright/src/test/java/com/microsoft/playwright/TestDefaultBrowserContext2.java index 2069ccb5..ec3bc408 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestDefaultBrowserContext2.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestDefaultBrowserContext2.java @@ -199,6 +199,17 @@ public class TestDefaultBrowserContext2 extends TestBase { } } + @Test + void shouldWorkWithIgnoreDefaultArgs() { + // Ignore arguments by name. + BrowserType.LaunchOptions options = new BrowserType.LaunchOptions().withIgnoreDefaultArgs(asList("foo")); + Browser browser = browserType.launch(options); + Page page = browser.newPage(); + browser.close(); + // Check that there is a way to ignore all arguments. + new BrowserType.LaunchOptions().withIgnoreAllDefaultArgs(true); + } + void shouldHavePassedURLWhenLaunchingWithIgnoreDefaultArgsTrue() { } diff --git a/tools/api-generator/src/main/java/com/microsoft/playwright/tools/ApiGenerator.java b/tools/api-generator/src/main/java/com/microsoft/playwright/tools/ApiGenerator.java index 2885cc73..3a785434 100644 --- a/tools/api-generator/src/main/java/com/microsoft/playwright/tools/ApiGenerator.java +++ b/tools/api-generator/src/main/java/com/microsoft/playwright/tools/ApiGenerator.java @@ -618,6 +618,12 @@ class Field extends Element { output.add(offset + access + "Path " + name + "Path;"); return; } + if (asList("BrowserType.launch.options.ignoreDefaultArgs", + "BrowserType.launchPersistentContext.options.ignoreDefaultArgs").contains(jsonPath)) { + output.add(offset + access + "List ignoreDefaultArgs;"); + output.add(offset + access + "Boolean ignoreAllDefaultArgs;"); + return; + } output.add(offset + access + type.toJava() + " " + name + ";"); } @@ -682,6 +688,18 @@ class Field extends Element { output.add(offset + "}"); return; } + if (asList("BrowserType.launch.options.ignoreDefaultArgs", + "BrowserType.launchPersistentContext.options.ignoreDefaultArgs").contains(jsonPath)) { + output.add(offset + "public " + parentClass + " withIgnoreDefaultArgs(List argumentNames) {"); + output.add(offset + " this.ignoreDefaultArgs = argumentNames;"); + output.add(offset + " return this;"); + output.add(offset + "}"); + output.add(offset + "public " + parentClass + " withIgnoreAllDefaultArgs(boolean ignore) {"); + output.add(offset + " this.ignoreAllDefaultArgs = ignore;"); + output.add(offset + " return this;"); + output.add(offset + "}"); + return; + } if (asList("Browser.newContext.options.storageState", "Browser.newPage.options.storageState").contains(jsonPath)) { output.add(offset + "public " + parentClass + " withStorageState(BrowserContext.StorageState storageState) {"); diff --git a/tools/api-generator/src/main/java/com/microsoft/playwright/tools/Types.java b/tools/api-generator/src/main/java/com/microsoft/playwright/tools/Types.java index d50d5236..c439bbbc 100644 --- a/tools/api-generator/src/main/java/com/microsoft/playwright/tools/Types.java +++ b/tools/api-generator/src/main/java/com/microsoft/playwright/tools/Types.java @@ -277,12 +277,12 @@ class Types { add("FileChooser.setFiles.files", "string|Array|Object|Array", "String"); add("Route.continue.overrides.postData", "string|Buffer", "byte[]"); add("Route.fulfill.response.body", "string|Buffer", "String"); - add("BrowserType.launch.options.ignoreDefaultArgs", "boolean|Array", "Boolean"); + add("BrowserType.launch.options.ignoreDefaultArgs", "boolean|Array", "Custom"); add("BrowserType.launch.options.firefoxUserPrefs", "Object", "String"); add("BrowserType.launch.options.env", "Object", "Map"); - add("BrowserType.launchPersistentContext.options.ignoreDefaultArgs", "boolean|Array", "String"); + add("BrowserType.launchPersistentContext.options.ignoreDefaultArgs", "boolean|Array", "Custom"); add("BrowserType.launchPersistentContext.options.env", "Object", "Map"); - add("BrowserType.launchServer.options.ignoreDefaultArgs", "boolean|Array", "String"); + add("BrowserType.launchServer.options.ignoreDefaultArgs", "boolean|Array", "Custom"); add("BrowserType.launchServer.options.firefoxUserPrefs", "Object", "String"); add("BrowserType.launchServer.options.env", "Object", "Map"); add("Logger.log.message", "string|Error", "String");