Skip to content

Commit

Permalink
Merge pull request #1957 from thc202/selenium-rm-webdrivers-provider
Browse files Browse the repository at this point in the history
selenium: quit WebDrivers when removing provider
  • Loading branch information
psiinon authored Mar 15, 2019
2 parents d210ead + 8f280ad commit 0ceff13
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
17 changes: 13 additions & 4 deletions src/org/zaproxy/zap/extension/selenium/ExtensionSelenium.java
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public class ExtensionSelenium extends ExtensionAdaptor {
* A list containing all of the proxied WebDrivers opened, so that they can
* be closed when ZAP is closed.
*/
private List<WebDriver> proxiedWebDrivers = new ArrayList<WebDriver>();
private Map<String, List<WebDriver>> proxiedWebDrivers = new HashMap<>();

private List<WeakReference<ProvidedBrowsersComboBoxModel>> providedBrowserComboBoxModels =
new ArrayList<WeakReference<ProvidedBrowsersComboBoxModel>>();
Expand Down Expand Up @@ -205,8 +205,16 @@ public boolean canUnload() {
@Override
public void stop() {
super.stop();
for (WebDriver wd : this.proxiedWebDrivers) {
// Just to make sure
this.proxiedWebDrivers.values().forEach(ExtensionSelenium::quitWebDrivers);
this.proxiedWebDrivers.clear();
}

private static void quitWebDrivers(List<WebDriver> drivers) {
if (drivers == null || drivers.isEmpty()) {
return;
}

for (WebDriver wd : drivers) {
try {
wd.quit();
} catch (Exception ex) {
Expand Down Expand Up @@ -290,6 +298,7 @@ private static void validateWebDriverProvider(SingleWebDriverProvider webDriverP
public void removeWebDriverProvider(SingleWebDriverProvider webDriverProvider) {
validateWebDriverProvider(webDriverProvider);

quitWebDrivers(proxiedWebDrivers.remove(webDriverProvider.getId()));
webDriverProviders.remove(webDriverProvider.getId());
providedBrowsers.remove(webDriverProvider.getProvidedBrowser().getId());
buildProvidedBrowserUIList();
Expand Down Expand Up @@ -567,7 +576,7 @@ public WebDriver getProxiedBrowser(final int requester, final String providedBro
Model.getSingleton().getOptionsParam().getProxyParam().getProxyPort());

if (webDriver != null) {
proxiedWebDrivers.add(webDriver);
proxiedWebDrivers.computeIfAbsent(providedBrowserId, k -> new ArrayList<>()).add(webDriver);
if (url != null) {
webDriver.get(url);
}
Expand Down
1 change: 1 addition & 0 deletions src/org/zaproxy/zap/extension/selenium/ZapAddOn.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<changes>
<![CDATA[
Remove support for Internet Explorer, does not support required capabilities.<br>
Quit corresponding WebDrivers when removing WebDriver provider.<br>
]]>
</changes>
<extensions>
Expand Down

0 comments on commit 0ceff13

Please sign in to comment.