All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openqa.selenium.mobile.NetworkConnection Maven / Gradle / Ivy

Go to download

Selenium automates browsers. That's it! What you do with that power is entirely up to you.

There is a newer version: 4.19.1
Show newest version
// 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.mobile;


/**
 * Control a device's network connection 

Example usage: * *

 * NetworkConnection mobileDriver = (NetworkConnection) driver;
 * if (mobileDriver.getNetworkConnection() != ConnectionType.AIRPLANE_MODE) {
 *   // enabling Airplane mode
 *   mobileDriver.setNetworkConnection(ConnectionType.AIRPLANE_MODE);
 * }
 * 
*/ public interface NetworkConnection { /** * ConnectionType is a bitmask to represent a device's network connection *
   * Data  | WIFI | Airplane
   * 0       0      1         == 1
   * 1       1      0         == 6
   * 1       0      0         == 4
   * 0       1      0         == 2
   * 0       0      0         == 0
   * 
* *

Giving "Data" the first bit positions in order to give room for the future of enabling * specific types of data (Edge / 2G, 3G, 4G, LTE, etc) if the device allows it. */ class ConnectionType { public static final ConnectionType WIFI = new ConnectionType(2); public static final ConnectionType DATA = new ConnectionType(4); public static final ConnectionType AIRPLANE_MODE = new ConnectionType(1); public static final ConnectionType ALL = new ConnectionType(6); public static final ConnectionType NONE = new ConnectionType(0); /* Future for Network Data types. With a new constructor accepting this enum. public enum DataType { _2G, _3G, _4G, LTE } */ private int mask = 0; public ConnectionType(Boolean wifi, Boolean data, Boolean airplaneMode) { if (wifi) { mask += WIFI.mask; } if (data) { mask += DATA.mask; } if (airplaneMode) { mask += AIRPLANE_MODE.mask; } } public ConnectionType(int mask) { // must be a positive number this.mask = Math.max(mask, 0); } public Boolean isAirplaneMode() { return mask % 2 == 1; } public Boolean isWifiEnabled() { // shift right 1 bit, check last bit return (mask / 2) % 2 == 1; } public Boolean isDataEnabled() { // shift right 2 bits, check if any bits set return (mask / 4) > 0; } @Override public boolean equals(Object type) { return type instanceof ConnectionType && this.mask == ((ConnectionType) type).mask; } @Override public int hashCode() { return mask; } @Override public String toString() { return Integer.toString(mask); } public Integer toJson() { return mask; } } /** * Query the driver for the Airplane Mode setting state * * @return {@link org.openqa.selenium.mobile.NetworkConnection.ConnectionType} indicating if the * device is in Airplane Mode */ ConnectionType getNetworkConnection(); /** * Set the Connection type Not all connection type combinations are valid for an individual type * of device and the remote endpoint will make a best effort to set the type as requested * * @param type ConnectionType of what the network connection should be * @return {@link org.openqa.selenium.mobile.NetworkConnection.ConnectionType} of what the * device's network connection is */ ConnectionType setNetworkConnection(ConnectionType type); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy