Skip to content

Commit b329114

Browse files
committed
[java] implement chromium driver log level and deprecate chrome driver log level
1 parent c9bb6f4 commit b329114

File tree

5 files changed

+100
-13
lines changed

5 files changed

+100
-13
lines changed

java/src/org/openqa/selenium/chrome/ChromeDriverLogLevel.java

+3
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@
1818
package org.openqa.selenium.chrome;
1919

2020
import com.google.common.collect.ImmutableMap;
21+
import org.openqa.selenium.chromium.ChromiumDriverLogLevel;
2122

2223
import java.util.Map;
2324
import java.util.logging.Level;
2425

2526
/**
2627
* <a href="https://source.chromium.org/chromium/chromium/src/+/master:chrome/test/chromedriver/logging.cc">
2728
* Log levels</a> defined by ChromeDriver
29+
* @deprecated use {@link ChromiumDriverLogLevel}
2830
*/
31+
@Deprecated
2932
public enum ChromeDriverLogLevel {
3033
ALL,
3134
INFO,

java/src/org/openqa/selenium/chrome/ChromeDriverService.java

+21-7
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.openqa.selenium.Capabilities;
2323
import org.openqa.selenium.WebDriverException;
24+
import org.openqa.selenium.chromium.ChromiumDriverLogLevel;
2425
import org.openqa.selenium.remote.service.DriverService;
2526

2627
import java.io.File;
@@ -153,12 +154,12 @@ public static ChromeDriverService createDefaultService() {
153154
* be configured to use a free port on the current system.
154155
*
155156
* @return A new ChromeDriverService using the supplied configuration from {@link ChromeOptions}.
156-
* @deprecated Use {@link Builder#withLogLevel(ChromeDriverLogLevel)} }
157+
* @deprecated Use {@link Builder#withLogLevel(ChromiumDriverLogLevel)} }
157158
*/
158159
@Deprecated
159160
public static ChromeDriverService createServiceWithConfig(ChromeOptions options) {
160161
return new Builder()
161-
.withLogLevel(options.getLogLevel())
162+
.withLogLevel(ChromiumDriverLogLevel.fromString(options.getLogLevel().toString()))
162163
.build();
163164
}
164165

@@ -176,7 +177,7 @@ public static class Builder extends DriverService.Builder<
176177
private boolean silent = Boolean.getBoolean(CHROME_DRIVER_SILENT_OUTPUT_PROPERTY);
177178
private String allowedListIps = System.getProperty(CHROME_DRIVER_ALLOWED_IPS_PROPERTY,
178179
System.getProperty(CHROME_DRIVER_WHITELISTED_IPS_PROPERTY));
179-
private ChromeDriverLogLevel logLevel = ChromeDriverLogLevel.fromString(System.getProperty(CHROME_DRIVER_LOG_LEVEL_PROPERTY));
180+
private ChromiumDriverLogLevel logLevel = ChromiumDriverLogLevel.fromString(System.getProperty(CHROME_DRIVER_LOG_LEVEL_PROPERTY));
180181

181182
@Override
182183
public int score(Capabilities capabilities) {
@@ -218,13 +219,13 @@ public Builder withBuildCheckDisabled(boolean noBuildCheck) {
218219
/**
219220
* Configures the driver server verbosity.
220221
*
221-
* @param verbose True for verbose output, false otherwise.
222+
* @param verbose Log all output for true, no changes made if false.
222223
* @return A self reference.
223224
*/
224225
@SuppressWarnings("UnusedReturnValue")
225226
public Builder withVerbose(boolean verbose) {
226227
if (verbose) {
227-
this.logLevel = ChromeDriverLogLevel.ALL;
228+
this.logLevel = ChromiumDriverLogLevel.ALL;
228229
}
229230
this.verbose = false;
230231
return this;
@@ -235,23 +236,36 @@ public Builder withVerbose(boolean verbose) {
235236
*
236237
* @param logLevel {@link ChromeDriverLogLevel} for desired log level output.
237238
* @return A self reference.
239+
* @deprecated use {@link #withLogLevel(ChromiumDriverLogLevel)} instead.
238240
*/
241+
@Deprecated
239242
public Builder withLogLevel(ChromeDriverLogLevel logLevel) {
240243
this.verbose = false;
241244
this.silent = false;
245+
this.logLevel = ChromiumDriverLogLevel.fromString(logLevel.toString());
246+
return this;
247+
}
248+
249+
/**
250+
* Configures the driver server verbosity.
251+
*
252+
* @param logLevel {@link ChromiumDriverLogLevel} for desired log level output.
253+
* @return A self reference.
254+
*/
255+
public Builder withLogLevel(ChromiumDriverLogLevel logLevel) {
242256
this.logLevel = logLevel;
243257
return this;
244258
}
245259

246260
/**
247261
* Configures the driver server for silent output.
248262
*
249-
* @param silent True for silent output, false otherwise.
263+
* @param silent Log no output for true, no changes made if false.
250264
* @return A self reference.
251265
*/
252266
public Builder withSilent(boolean silent) {
253267
if (silent) {
254-
this.logLevel = ChromeDriverLogLevel.OFF;
268+
this.logLevel = ChromiumDriverLogLevel.OFF;
255269
}
256270
this.silent = false;
257271
return this;

java/src/org/openqa/selenium/chrome/ChromeOptions.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.openqa.selenium.chrome;
1919

2020
import org.openqa.selenium.Capabilities;
21+
import org.openqa.selenium.chromium.ChromiumDriverLogLevel;
2122
import org.openqa.selenium.chromium.ChromiumOptions;
2223
import org.openqa.selenium.internal.Require;
2324
import org.openqa.selenium.remote.CapabilityType;
@@ -59,7 +60,7 @@ public ChromeOptions() {
5960
}
6061

6162
/**
62-
* @deprecated Use {@link ChromeDriverService.Builder#withLogLevel(ChromeDriverLogLevel)} to set log level.
63+
* @deprecated Use {@link ChromeDriverService.Builder#withLogLevel(ChromiumDriverLogLevel)} to set log level.
6364
*/
6465
@Deprecated
6566
public ChromeOptions setLogLevel(ChromeDriverLogLevel logLevel){
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Licensed to the Software Freedom Conservancy (SFC) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The SFC licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
package org.openqa.selenium.chromium;
19+
20+
import com.google.common.collect.ImmutableMap;
21+
22+
import java.util.Map;
23+
import java.util.logging.Level;
24+
25+
/**
26+
* <a href="https://source.chromium.org/chromium/chromium/src/+/master:chrome/test/chromedriver/logging.cc">
27+
* Log levels</a> defined by ChromeDriver
28+
*/
29+
public enum ChromiumDriverLogLevel {
30+
ALL,
31+
INFO,
32+
DEBUG,
33+
WARNING,
34+
SEVERE,
35+
OFF;
36+
37+
private static final Map<Level, ChromiumDriverLogLevel> logLevelToChromeLevelMap
38+
= new ImmutableMap.Builder<Level, ChromiumDriverLogLevel>()
39+
.put(Level.ALL, ALL)
40+
.put(Level.FINEST, DEBUG)
41+
.put(Level.FINER, DEBUG)
42+
.put(Level.FINE, DEBUG)
43+
.put(Level.INFO, INFO)
44+
.put(Level.WARNING, WARNING)
45+
.put(Level.SEVERE, SEVERE)
46+
.put(Level.OFF, OFF)
47+
.build();
48+
49+
@Override
50+
public String toString() {
51+
return super.toString().toLowerCase();
52+
}
53+
54+
public static ChromiumDriverLogLevel fromString(String text) {
55+
if (text != null) {
56+
for (ChromiumDriverLogLevel b : ChromiumDriverLogLevel.values()) {
57+
if (text.equalsIgnoreCase(b.toString())) {
58+
return b;
59+
}
60+
}
61+
}
62+
return null;
63+
}
64+
65+
public static ChromiumDriverLogLevel fromLevel(Level level) {
66+
return logLevelToChromeLevelMap.getOrDefault(level, ALL);
67+
}
68+
}

java/test/org/openqa/selenium/chrome/ChromeDriverServiceTest.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import org.junit.jupiter.api.Test;
2828
import org.junit.jupiter.api.Tag;
29+
import org.openqa.selenium.chromium.ChromiumDriverLogLevel;
2930

3031
import java.io.File;
3132
import java.time.Duration;
@@ -61,19 +62,19 @@ void logLevelLastWins() {
6162
doReturn(exe).when(builderMock).findDefaultExecutable();
6263

6364
List<String> silentLast = Arrays.asList("--port=1", "--log-level=OFF");
64-
builderMock.withLogLevel(ChromeDriverLogLevel.ALL).usingPort(1).withSilent(true).build();
65+
builderMock.withLogLevel(ChromiumDriverLogLevel.ALL).usingPort(1).withSilent(true).build();
6566
verify(builderMock).createDriverService(any(), anyInt(), any(), eq(silentLast), any());
6667

6768
List<String> silentFirst = Arrays.asList("--port=1", "--log-level=DEBUG");
68-
builderMock.withSilent(true).withLogLevel(ChromeDriverLogLevel.DEBUG).usingPort(1).build();
69+
builderMock.withSilent(true).withLogLevel(ChromiumDriverLogLevel.DEBUG).usingPort(1).build();
6970
verify(builderMock).createDriverService(any(), anyInt(), any(), eq(silentFirst), any());
7071

7172
List<String> verboseLast = Arrays.asList("--port=1", "--log-level=ALL");
72-
builderMock.withLogLevel(ChromeDriverLogLevel.OFF).usingPort(1).withVerbose(true).build();
73+
builderMock.withLogLevel(ChromiumDriverLogLevel.OFF).usingPort(1).withVerbose(true).build();
7374
verify(builderMock).createDriverService(any(), anyInt(), any(), eq(verboseLast), any());
7475

7576
List<String> verboseFirst = Arrays.asList("--port=1", "--log-level=INFO");
76-
builderMock.withVerbose(true).withLogLevel(ChromeDriverLogLevel.INFO).usingPort(1).build();
77+
builderMock.withVerbose(true).withLogLevel(ChromiumDriverLogLevel.INFO).usingPort(1).build();
7778
verify(builderMock).createDriverService(any(), anyInt(), any(), eq(verboseFirst), any());
7879
}
7980

@@ -86,7 +87,7 @@ void ignoreFalseLogging() {
8687
doReturn(exe).when(builderMock).findDefaultExecutable();
8788

8889
List<String> falseSilent = Arrays.asList("--port=1", "--log-level=DEBUG");
89-
builderMock.withLogLevel(ChromeDriverLogLevel.DEBUG).usingPort(1).withSilent(false).build();
90+
builderMock.withLogLevel(ChromiumDriverLogLevel.DEBUG).usingPort(1).withSilent(false).build();
9091
verify(builderMock).createDriverService(any(), anyInt(), any(), eq(falseSilent), any());
9192
}
9293
}

0 commit comments

Comments
 (0)