Skip to content

Commit

Permalink
Merge branch 'trunk' into py_dl_files
Browse files Browse the repository at this point in the history
  • Loading branch information
titusfortner committed Oct 23, 2023
2 parents 24ab6e4 + fd9fbaa commit cb4269d
Show file tree
Hide file tree
Showing 21 changed files with 1,638 additions and 634 deletions.
99 changes: 70 additions & 29 deletions .github/workflows/build-selenium-manager.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,50 @@
name: Build selenium-manager

on: workflow_dispatch
on:
workflow_dispatch:
inputs:
debug:
description: 'Include debug symbols in binaries'
required: false
type: boolean

jobs:
win32:
name: "[Windows x32] Build selenium-manager"
runs-on: windows-latest
env:
RUSTFLAGS: '-Ctarget-feature=+crt-static'
steps:
- name: "Checkout project"
uses: actions/checkout@v4
- name: "Update Rust"
run: |
rustup update
rustup toolchain install stable-i686-pc-windows-msvc
rustup default stable-i686-pc-windows-msvc
rustup toolchain install stable-i686-pc-windows-gnu
rustup default stable-i686-pc-windows-gnu
rustc -vV
- name: "Build release"
- name: "Build release binary"
if: ${{ inputs.debug == false }}
run: |
cd rust
cargo build --release
- name: "Upload binary"
- name: "Upload release binary"
if: ${{ inputs.debug == false }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_windows-x32
path: rust/target/release/selenium-manager.exe
retention-days: 6
- name: "Build debug binary"
if: ${{ inputs.debug == true }}
run: |
cd rust
cargo build --profile dev
- name: "Upload debug binary"
if: ${{ inputs.debug == true }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_windows-x32-debug
path: rust/target/debug/selenium-manager.exe
retention-days: 6

linux64:
name: "[Linux x64] Build selenium-manager"
Expand All @@ -42,26 +60,38 @@ jobs:
run: |
cargo install cross --git https://github.com/cross-rs/cross
cross -V
- name: "Build release"
- name: "Build release binary"
if: ${{ inputs.debug == false }}
run: |
cd rust
cross build --target x86_64-unknown-linux-musl --release
- name: "Tar binary (to keep executable permission)"
run: |
cd rust/target/x86_64-unknown-linux-musl/release
cd target/x86_64-unknown-linux-musl/release
tar -cvf ../../../../selenium-manager.tar selenium-manager
- name: "Upload binary"
- name: "Upload release binary"
if: ${{ inputs.debug == false }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_linux-x64
path: selenium-manager.tar
retention-days: 6
- name: "Build debug binary"
if: ${{ inputs.debug == true }}
run: |
cd rust
cross build --target x86_64-unknown-linux-musl --profile dev
cd target/x86_64-unknown-linux-musl/debug
tar -cvf ../../../../selenium-manager.tar selenium-manager
- name: "Upload debug binary"
if: ${{ inputs.debug == true }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_linux-x64-debug
path: selenium-manager.tar
retention-days: 6

macos64:
name: "[macOS x64/arm64] Build selenium-manager"
runs-on: macos-latest
env:
RUSTFLAGS: '-Ctarget-feature=+crt-static'
steps:
- name: "Checkout project"
uses: actions/checkout@v4
Expand All @@ -70,28 +100,39 @@ jobs:
rustup update
rustup target add aarch64-apple-darwin
rustc -vV
- name: "Build x64"
run: |
cd rust
cargo build --release --target x86_64-apple-darwin
- name: "Build arm64"
- name: "Build release binary"
if: ${{ inputs.debug == false }}
run: |
cd rust
cargo build --release --target aarch64-apple-darwin
- name: "Build universal"
run: |
cd rust
lipo -create \
-output target/selenium-manager \
cargo build --target x86_64-apple-darwin --release
cargo build --target aarch64-apple-darwin --release
lipo -create -output target/selenium-manager \
target/aarch64-apple-darwin/release/selenium-manager \
target/x86_64-apple-darwin/release/selenium-manager
- name: "Tar binary (to keep executable permission)"
run: |
cd rust/target
cd target
tar -cvf ../../selenium-manager.tar selenium-manager
- name: "Upload binary"
- name: "Upload release binary"
if: ${{ inputs.debug == false }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_macos-universal
path: selenium-manager.tar
retention-days: 6
- name: "Build debug binary"
if: ${{ inputs.debug == true }}
run: |
cd rust
cargo build --target x86_64-apple-darwin --profile dev
cargo build --target aarch64-apple-darwin --profile dev
lipo -create -output target/selenium-manager \
target/aarch64-apple-darwin/debug/selenium-manager \
target/x86_64-apple-darwin/debug/selenium-manager
cd target
tar -cvf ../../selenium-manager.tar selenium-manager
- name: "Upload debug binary"
if: ${{ inputs.debug == true }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_macos-universal-debug
path: selenium-manager.tar
retention-days: 6
1 change: 1 addition & 0 deletions java/src/org/openqa/selenium/bidi/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ java_library(
"*.java",
"log/*.java",
"browsingcontext/*.java",
"network/*.java",
],
exclude = AUGMENTER_SRCS,
),
Expand Down
69 changes: 69 additions & 0 deletions java/src/org/openqa/selenium/bidi/Network.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

package org.openqa.selenium.bidi;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.bidi.network.BeforeRequestSent;
import org.openqa.selenium.internal.Require;

public class Network implements AutoCloseable {

private final Set<String> browsingContextIds;

private final BiDi bidi;

private final Event<BeforeRequestSent> beforeRequestSentEvent =
new Event<>("network.beforeRequestSent", BeforeRequestSent::fromJsonMap);

public Network(WebDriver driver) {
this(new HashSet<>(), driver);
}

public Network(String browsingContextId, WebDriver driver) {
this(Collections.singleton(Require.nonNull("Browsing context id", browsingContextId)), driver);
}

public Network(Set<String> browsingContextIds, WebDriver driver) {
Require.nonNull("WebDriver", driver);
Require.nonNull("Browsing context id list", browsingContextIds);

if (!(driver instanceof HasBiDi)) {
throw new IllegalArgumentException("WebDriver instance must support BiDi protocol");
}

this.bidi = ((HasBiDi) driver).getBiDi();
this.browsingContextIds = browsingContextIds;
}

public void onBeforeRequestSent(Consumer<BeforeRequestSent> consumer) {
if (browsingContextIds.isEmpty()) {
this.bidi.addListener(beforeRequestSentEvent, consumer);
} else {
this.bidi.addListener(browsingContextIds, beforeRequestSentEvent, consumer);
}
}

@Override
public void close() {
this.bidi.clearListener(beforeRequestSentEvent);
}
}
62 changes: 62 additions & 0 deletions java/src/org/openqa/selenium/bidi/network/AuthChallenge.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

package org.openqa.selenium.bidi.network;

import org.openqa.selenium.json.JsonInput;

public class AuthChallenge {

private final String scheme;
private final String realm;

private AuthChallenge(String scheme, String realm) {
this.scheme = scheme;
this.realm = realm;
}

public static AuthChallenge fromJson(JsonInput input) {
String scheme = null;
String realm = null;

input.beginObject();
while (input.hasNext()) {
switch (input.nextName()) {
case "scheme":
scheme = input.read(String.class);
break;
case "realm":
realm = input.read(String.class);
break;
default:
input.skipValue();
}
}

input.endObject();

return new AuthChallenge(scheme, realm);
}

public String getScheme() {
return scheme;
}

public String getRealm() {
return realm;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import org.openqa.selenium.json.JsonInput;
import org.openqa.selenium.json.TypeToken;

public class NetworkBaseParameters {
public class BaseParameters {

private final String browsingContextId;

Expand All @@ -38,7 +38,7 @@ public class NetworkBaseParameters {

private final List<String> intercepts;

private NetworkBaseParameters(
BaseParameters(
String browsingContextId,
boolean isBlocked,
String navigation,
Expand All @@ -55,7 +55,7 @@ private NetworkBaseParameters(
this.intercepts = intercepts;
}

public static NetworkBaseParameters fromJson(JsonInput input) {
public static BaseParameters fromJson(JsonInput input) {
String browsingContextId = null;

boolean isBlocked = false;
Expand All @@ -73,20 +73,35 @@ public static NetworkBaseParameters fromJson(JsonInput input) {
input.beginObject();
while (input.hasNext()) {
switch (input.nextName()) {
case "context" -> browsingContextId = input.read(String.class);
case "isBlocked" -> isBlocked = input.read(Boolean.class);
case "navigation" -> navigationId = input.read(String.class);
case "redirectCount" -> redirectCount = input.read(Long.class);
case "request" -> request = input.read(RequestData.class);
case "timestamp" -> timestamp = input.read(Long.class);
case "intercepts" -> intercepts = input.read(new TypeToken<List<String>>() {}.getType());
default -> input.skipValue();
case "context":
browsingContextId = input.read(String.class);
break;
case "isBlocked":
isBlocked = input.read(Boolean.class);
break;
case "navigation":
navigationId = input.read(String.class);
break;
case "redirectCount":
redirectCount = input.read(Long.class);
break;
case "request":
request = input.read(RequestData.class);
break;
case "timestamp":
timestamp = input.read(Long.class);
break;
case "intercepts":
intercepts = input.read(new TypeToken<List<String>>() {}.getType());
break;
default:
input.skipValue();
}
}

input.endObject();

return new NetworkBaseParameters(
return new BaseParameters(
browsingContextId, isBlocked, navigationId, redirectCount, request, timestamp, intercepts);
}

Expand Down
Loading

0 comments on commit cb4269d

Please sign in to comment.