Skip to content

Commit 60480b0

Browse files
committed
Move Session and ActiveSession closer
The two classes are basically doing the same thing, but for an old and new world. Doing a classic refactoring to try and get the two to be congruent. In this case, almost all users simply converted Capabilities to a Map. Might as well do that in one place, and one place alone.
1 parent d834a30 commit 60480b0

File tree

7 files changed

+22
-18
lines changed

7 files changed

+22
-18
lines changed

java/server/src/org/openqa/selenium/remote/server/DefaultSession.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.openqa.selenium.remote.SessionId;
3939
import org.openqa.selenium.support.events.EventFiringWebDriver;
4040

41+
import java.util.Map;
4142
import java.util.UUID;
4243
import java.util.concurrent.Callable;
4344

@@ -63,7 +64,7 @@ public class DefaultSession implements Session {
6364
* Happens-before the exexutor and is thereafter thread-confined to the executor thread.
6465
*/
6566
private final KnownElements knownElements;
66-
private final Capabilities capabilities; // todo: Investigate memory model implications of map
67+
private final Map<String, Object> capabilities;
6768
// elements inside capabilities.
6869
private volatile String base64EncodedImage;
6970
private TemporaryFilesystem tempFs;
@@ -142,7 +143,7 @@ public KnownElements getKnownElements() {
142143
return knownElements;
143144
}
144145

145-
public Capabilities getCapabilities() {
146+
public Map<String, Object> getCapabilities() {
146147
return capabilities;
147148
}
148149

@@ -160,7 +161,7 @@ private class BrowserCreator implements Callable<EventFiringWebDriver> {
160161

161162
private final DriverFactory factory;
162163
private final Capabilities capabilities;
163-
private volatile Capabilities describedCapabilities;
164+
private volatile Map<String, Object> describedCapabilities;
164165
private volatile SessionId sessionId;
165166
private volatile boolean isAndroid = false;
166167

@@ -185,7 +186,7 @@ public EventFiringWebDriver call() throws Exception {
185186
return new EventFiringWebDriver(rawDriver);
186187
}
187188

188-
public Capabilities getCapabilityDescription() {
189+
public Map<String, Object> getCapabilityDescription() {
189190
return describedCapabilities;
190191
}
191192

@@ -197,7 +198,7 @@ public boolean isAndroid() {
197198
return isAndroid;
198199
}
199200

200-
private DesiredCapabilities getDescription(WebDriver instance, Capabilities capabilities) {
201+
private Map<String, Object> getDescription(WebDriver instance, Capabilities capabilities) {
201202
DesiredCapabilities caps = new DesiredCapabilities(capabilities.asMap());
202203
caps.setJavascriptEnabled(instance instanceof JavascriptExecutor);
203204
if (instance instanceof TakesScreenshot) {
@@ -224,7 +225,8 @@ private DesiredCapabilities getDescription(WebDriver instance, Capabilities capa
224225
if (instance instanceof HasTouchScreen) {
225226
caps.setCapability(CapabilityType.HAS_TOUCHSCREEN, true);
226227
}
227-
return caps;
228+
//noinspection unchecked
229+
return (Map<String, Object>) caps.asMap();
228230
}
229231
}
230232

java/server/src/org/openqa/selenium/remote/server/InMemorySession.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ public KnownElements getKnownElements() {
234234
}
235235

236236
@Override
237-
public Capabilities getCapabilities() {
238-
return new ImmutableCapabilities(capabilities);
237+
public Map<String, Object> getCapabilities() {
238+
return capabilities;
239239
}
240240

241241
@Override

java/server/src/org/openqa/selenium/remote/server/Session.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717

1818
package org.openqa.selenium.remote.server;
1919

20-
import org.openqa.selenium.Capabilities;
2120
import org.openqa.selenium.WebDriver;
2221
import org.openqa.selenium.io.TemporaryFilesystem;
2322
import org.openqa.selenium.remote.SessionId;
2423

24+
import java.util.Map;
25+
2526
public interface Session {
2627

2728
void close();
@@ -30,7 +31,7 @@ public interface Session {
3031

3132
KnownElements getKnownElements();
3233

33-
Capabilities getCapabilities();
34+
Map<String, Object> getCapabilities();
3435

3536
void attachScreenshot(String base64EncodedImage);
3637

java/server/src/org/openqa/selenium/remote/server/handler/GetAllSessions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public Response getResponse() {
5353
private Function<SessionId, SessionInfo> toSessionInfo() {
5454
return new Function<SessionId, SessionInfo>() {
5555
public SessionInfo apply(SessionId id) {
56-
Map<String, ?> capabilities = allSessions.get(id).getCapabilities().asMap();
56+
Map<String, ?> capabilities = allSessions.get(id).getCapabilities();
5757
return new SessionInfo(id, capabilities);
5858
}
5959
};

java/server/src/org/openqa/selenium/remote/server/handler/GetSessionCapabilities.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public GetSessionCapabilities(Session session) {
3232
@Override
3333
public Map<String, Object> call() {
3434
Session session = getSession();
35-
Map<String, Object> capabilities = (Map<String, Object>) session.getCapabilities().asMap();
35+
Map<String, Object> capabilities = session.getCapabilities();
3636
capabilities = Maps.newHashMap(capabilities);
3737

3838
// Only servers implementing the server-side webdriver-backed selenium need

java/server/src/org/openqa/selenium/remote/server/handler/NewSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public Response handle() throws Exception {
6363
sessionId = allSessions.newSession(Stream.of(desired));
6464

6565
Map<String, Object> capabilities =
66-
Maps.newHashMap(allSessions.get(sessionId).getCapabilities().asMap());
66+
Maps.newHashMap(allSessions.get(sessionId).getCapabilities());
6767

6868
// Only servers implementing the server-side webdriver-backed selenium need
6969
// to return this particular value

java/server/test/org/openqa/testing/TestSession.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.openqa.selenium.remote.server.KnownElements;
2525
import org.openqa.selenium.remote.server.Session;
2626

27+
import java.util.Map;
2728
import java.util.concurrent.ExecutorService;
2829
import java.util.concurrent.FutureTask;
2930
import java.util.concurrent.LinkedBlockingQueue;
@@ -34,19 +35,19 @@ public class TestSession implements Session {
3435

3536
private final SessionId sessionId;
3637
private final WebDriver driver;
37-
private final Capabilities capabilities;
38+
private final Map<String, Object> capabilities;
3839
private final KnownElements knownElements;
3940
private final ExecutorService executor;
4041
private volatile Thread inUseWithThread = null;
4142

4243

4344
private long lastAccess;
4445

45-
public TestSession(SessionId sessionId, WebDriver driver,
46-
Capabilities capabilities) {
46+
public TestSession(SessionId sessionId, WebDriver driver, Capabilities capabilities) {
4747
this.sessionId = sessionId;
4848
this.driver = driver;
49-
this.capabilities = capabilities;
49+
//noinspection unchecked
50+
this.capabilities = (Map<String, Object>) capabilities.asMap();
5051
this.knownElements = new KnownElements();
5152
this.executor = new ThreadPoolExecutor(1, 1, 600L, TimeUnit.SECONDS,
5253
new LinkedBlockingQueue<Runnable>());
@@ -81,7 +82,7 @@ public KnownElements getKnownElements() {
8182
return knownElements;
8283
}
8384

84-
public Capabilities getCapabilities() {
85+
public Map<String, Object> getCapabilities() {
8586
return capabilities;
8687
}
8788

0 commit comments

Comments
 (0)