/*
 * Licensed 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.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.verifiedaccess.v2.model;

/**
 * The device signals as reported by Chrome. Unless otherwise specified, signals are available on
 * all platforms.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Chrome Verified Access API. For a detailed
 * explanation see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class DeviceSignals extends com.google.api.client.json.GenericJson {

  /**
   * Value of the AllowScreenLock policy on the device. See
   * https://chromeenterprise.google/policies/?policy=AllowScreenLock for more details. Available on
   * ChromeOS only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean allowScreenLock;

  /**
   * Current version of the Chrome browser which generated this set of signals. Example value:
   * "107.0.5286.0".
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String browserVersion;

  /**
   * Whether Chrome's built-in DNS client is used. The OS DNS client is otherwise used. This value
   * may be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean builtInDnsClientEnabled;

  /**
   * Whether access to the Chrome Remote Desktop application is blocked via a policy.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean chromeRemoteDesktopAppBlocked;

  /**
   * Crowdstrike agent properties installed on the device, if any. Available on Windows and MacOS
   * only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private CrowdStrikeAgent crowdStrikeAgent;

  /**
   * Affiliation IDs of the organizations that are affiliated with the organization that is
   * currently managing the device. When the sets of device and profile affiliation IDs overlap, it
   * means that the organizations managing the device and user are affiliated. To learn more about
   * user affiliation, visit https://support.google.com/chrome/a/answer/12801245?ref_topic=9027936.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> deviceAffiliationIds;

  /**
   * Enrollment domain of the customer which is currently managing the device.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String deviceEnrollmentDomain;

  /**
   * The name of the device's manufacturer.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String deviceManufacturer;

  /**
   * The name of the device's model.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String deviceModel;

  /**
   * The encryption state of the disk. On ChromeOS, the main disk is always ENCRYPTED.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String diskEncryption;

  /**
   * The display name of the device, as defined by the user.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String displayName;

  /**
   * Hostname of the device.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String hostname;

  /**
   * International Mobile Equipment Identity (IMEI) of the device. Available on ChromeOS only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> imei;

  /**
   * MAC addresses of the device.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> macAddresses;

  /**
   * Mobile Equipment Identifier (MEID) of the device. Available on ChromeOS only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> meid;

  /**
   * The type of the Operating System currently running on the device.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String operatingSystem;

  /**
   * The state of the OS level firewall. On ChromeOS, the value will always be ENABLED on regular
   * devices and UNKNOWN on devices in developer mode.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String osFirewall;

  /**
   * The current version of the Operating System. On Windows and linux, the value will also include
   * the security patch information.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String osVersion;

  /**
   * Whether the Password Protection Warning feature is enabled or not. Password protection alerts
   * users when they reuse their protected password on potentially suspicious sites. This setting is
   * controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger. Note that the
   * policy unset does not have the same effects as having the policy explicitly set to
   * `PASSWORD_PROTECTION_OFF`.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String passwordProtectionWarningTrigger;

  /**
   * Affiliation IDs of the organizations that are affiliated with the organization that is
   * currently managing the Chrome Profile’s user or ChromeOS user.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> profileAffiliationIds;

  /**
   * Whether Enterprise-grade (i.e. custom) unsafe URL scanning is enabled or not. This setting may
   * be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String realtimeUrlCheckMode;

  /**
   * Safe Browsing Protection Level. That setting may be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String safeBrowsingProtectionLevel;

  /**
   * The state of the Screen Lock password protection. On ChromeOS, this value will always be
   * ENABLED as there is not way to disable requiring a password or pin when unlocking the device.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String screenLockSecured;

  /**
   * Whether the device's startup software has its Secure Boot feature enabled. Available on Windows
   * only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String secureBootMode;

  /**
   * The serial number of the device. On Windows, this represents the BIOS's serial number. Not
   * available on most Linux distributions.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String serialNumber;

  /**
   * Whether the Site Isolation (a.k.a Site Per Process) setting is enabled. That setting may be
   * controlled by an enterprise policy: https://chromeenterprise.google/policies/#SitePerProcess
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean siteIsolationEnabled;

  /**
   * List of the addesses of all OS level DNS servers configured in the device's network settings.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> systemDnsServers;

  /**
   * Whether Chrome is blocking third-party software injection or not. This setting may be
   * controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/?policy=ThirdPartyBlockingEnabled. Available on
   * Windows only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean thirdPartyBlockingEnabled;

  /**
   * The trigger which generated this set of signals.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String trigger;

  /**
   * Windows domain that the current machine has joined. Available on Windows only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String windowsMachineDomain;

  /**
   * Windows domain for the current OS user. Available on Windows only.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String windowsUserDomain;

  /**
   * Value of the AllowScreenLock policy on the device. See
   * https://chromeenterprise.google/policies/?policy=AllowScreenLock for more details. Available on
   * ChromeOS only.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getAllowScreenLock() {
    return allowScreenLock;
  }

  /**
   * Value of the AllowScreenLock policy on the device. See
   * https://chromeenterprise.google/policies/?policy=AllowScreenLock for more details. Available on
   * ChromeOS only.
   * @param allowScreenLock allowScreenLock or {@code null} for none
   */
  public DeviceSignals setAllowScreenLock(java.lang.Boolean allowScreenLock) {
    this.allowScreenLock = allowScreenLock;
    return this;
  }

  /**
   * Current version of the Chrome browser which generated this set of signals. Example value:
   * "107.0.5286.0".
   * @return value or {@code null} for none
   */
  public java.lang.String getBrowserVersion() {
    return browserVersion;
  }

  /**
   * Current version of the Chrome browser which generated this set of signals. Example value:
   * "107.0.5286.0".
   * @param browserVersion browserVersion or {@code null} for none
   */
  public DeviceSignals setBrowserVersion(java.lang.String browserVersion) {
    this.browserVersion = browserVersion;
    return this;
  }

  /**
   * Whether Chrome's built-in DNS client is used. The OS DNS client is otherwise used. This value
   * may be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getBuiltInDnsClientEnabled() {
    return builtInDnsClientEnabled;
  }

  /**
   * Whether Chrome's built-in DNS client is used. The OS DNS client is otherwise used. This value
   * may be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled.
   * @param builtInDnsClientEnabled builtInDnsClientEnabled or {@code null} for none
   */
  public DeviceSignals setBuiltInDnsClientEnabled(java.lang.Boolean builtInDnsClientEnabled) {
    this.builtInDnsClientEnabled = builtInDnsClientEnabled;
    return this;
  }

  /**
   * Whether access to the Chrome Remote Desktop application is blocked via a policy.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getChromeRemoteDesktopAppBlocked() {
    return chromeRemoteDesktopAppBlocked;
  }

  /**
   * Whether access to the Chrome Remote Desktop application is blocked via a policy.
   * @param chromeRemoteDesktopAppBlocked chromeRemoteDesktopAppBlocked or {@code null} for none
   */
  public DeviceSignals setChromeRemoteDesktopAppBlocked(java.lang.Boolean chromeRemoteDesktopAppBlocked) {
    this.chromeRemoteDesktopAppBlocked = chromeRemoteDesktopAppBlocked;
    return this;
  }

  /**
   * Crowdstrike agent properties installed on the device, if any. Available on Windows and MacOS
   * only.
   * @return value or {@code null} for none
   */
  public CrowdStrikeAgent getCrowdStrikeAgent() {
    return crowdStrikeAgent;
  }

  /**
   * Crowdstrike agent properties installed on the device, if any. Available on Windows and MacOS
   * only.
   * @param crowdStrikeAgent crowdStrikeAgent or {@code null} for none
   */
  public DeviceSignals setCrowdStrikeAgent(CrowdStrikeAgent crowdStrikeAgent) {
    this.crowdStrikeAgent = crowdStrikeAgent;
    return this;
  }

  /**
   * Affiliation IDs of the organizations that are affiliated with the organization that is
   * currently managing the device. When the sets of device and profile affiliation IDs overlap, it
   * means that the organizations managing the device and user are affiliated. To learn more about
   * user affiliation, visit https://support.google.com/chrome/a/answer/12801245?ref_topic=9027936.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getDeviceAffiliationIds() {
    return deviceAffiliationIds;
  }

  /**
   * Affiliation IDs of the organizations that are affiliated with the organization that is
   * currently managing the device. When the sets of device and profile affiliation IDs overlap, it
   * means that the organizations managing the device and user are affiliated. To learn more about
   * user affiliation, visit https://support.google.com/chrome/a/answer/12801245?ref_topic=9027936.
   * @param deviceAffiliationIds deviceAffiliationIds or {@code null} for none
   */
  public DeviceSignals setDeviceAffiliationIds(java.util.List<java.lang.String> deviceAffiliationIds) {
    this.deviceAffiliationIds = deviceAffiliationIds;
    return this;
  }

  /**
   * Enrollment domain of the customer which is currently managing the device.
   * @return value or {@code null} for none
   */
  public java.lang.String getDeviceEnrollmentDomain() {
    return deviceEnrollmentDomain;
  }

  /**
   * Enrollment domain of the customer which is currently managing the device.
   * @param deviceEnrollmentDomain deviceEnrollmentDomain or {@code null} for none
   */
  public DeviceSignals setDeviceEnrollmentDomain(java.lang.String deviceEnrollmentDomain) {
    this.deviceEnrollmentDomain = deviceEnrollmentDomain;
    return this;
  }

  /**
   * The name of the device's manufacturer.
   * @return value or {@code null} for none
   */
  public java.lang.String getDeviceManufacturer() {
    return deviceManufacturer;
  }

  /**
   * The name of the device's manufacturer.
   * @param deviceManufacturer deviceManufacturer or {@code null} for none
   */
  public DeviceSignals setDeviceManufacturer(java.lang.String deviceManufacturer) {
    this.deviceManufacturer = deviceManufacturer;
    return this;
  }

  /**
   * The name of the device's model.
   * @return value or {@code null} for none
   */
  public java.lang.String getDeviceModel() {
    return deviceModel;
  }

  /**
   * The name of the device's model.
   * @param deviceModel deviceModel or {@code null} for none
   */
  public DeviceSignals setDeviceModel(java.lang.String deviceModel) {
    this.deviceModel = deviceModel;
    return this;
  }

  /**
   * The encryption state of the disk. On ChromeOS, the main disk is always ENCRYPTED.
   * @return value or {@code null} for none
   */
  public java.lang.String getDiskEncryption() {
    return diskEncryption;
  }

  /**
   * The encryption state of the disk. On ChromeOS, the main disk is always ENCRYPTED.
   * @param diskEncryption diskEncryption or {@code null} for none
   */
  public DeviceSignals setDiskEncryption(java.lang.String diskEncryption) {
    this.diskEncryption = diskEncryption;
    return this;
  }

  /**
   * The display name of the device, as defined by the user.
   * @return value or {@code null} for none
   */
  public java.lang.String getDisplayName() {
    return displayName;
  }

  /**
   * The display name of the device, as defined by the user.
   * @param displayName displayName or {@code null} for none
   */
  public DeviceSignals setDisplayName(java.lang.String displayName) {
    this.displayName = displayName;
    return this;
  }

  /**
   * Hostname of the device.
   * @return value or {@code null} for none
   */
  public java.lang.String getHostname() {
    return hostname;
  }

  /**
   * Hostname of the device.
   * @param hostname hostname or {@code null} for none
   */
  public DeviceSignals setHostname(java.lang.String hostname) {
    this.hostname = hostname;
    return this;
  }

  /**
   * International Mobile Equipment Identity (IMEI) of the device. Available on ChromeOS only.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getImei() {
    return imei;
  }

  /**
   * International Mobile Equipment Identity (IMEI) of the device. Available on ChromeOS only.
   * @param imei imei or {@code null} for none
   */
  public DeviceSignals setImei(java.util.List<java.lang.String> imei) {
    this.imei = imei;
    return this;
  }

  /**
   * MAC addresses of the device.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getMacAddresses() {
    return macAddresses;
  }

  /**
   * MAC addresses of the device.
   * @param macAddresses macAddresses or {@code null} for none
   */
  public DeviceSignals setMacAddresses(java.util.List<java.lang.String> macAddresses) {
    this.macAddresses = macAddresses;
    return this;
  }

  /**
   * Mobile Equipment Identifier (MEID) of the device. Available on ChromeOS only.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getMeid() {
    return meid;
  }

  /**
   * Mobile Equipment Identifier (MEID) of the device. Available on ChromeOS only.
   * @param meid meid or {@code null} for none
   */
  public DeviceSignals setMeid(java.util.List<java.lang.String> meid) {
    this.meid = meid;
    return this;
  }

  /**
   * The type of the Operating System currently running on the device.
   * @return value or {@code null} for none
   */
  public java.lang.String getOperatingSystem() {
    return operatingSystem;
  }

  /**
   * The type of the Operating System currently running on the device.
   * @param operatingSystem operatingSystem or {@code null} for none
   */
  public DeviceSignals setOperatingSystem(java.lang.String operatingSystem) {
    this.operatingSystem = operatingSystem;
    return this;
  }

  /**
   * The state of the OS level firewall. On ChromeOS, the value will always be ENABLED on regular
   * devices and UNKNOWN on devices in developer mode.
   * @return value or {@code null} for none
   */
  public java.lang.String getOsFirewall() {
    return osFirewall;
  }

  /**
   * The state of the OS level firewall. On ChromeOS, the value will always be ENABLED on regular
   * devices and UNKNOWN on devices in developer mode.
   * @param osFirewall osFirewall or {@code null} for none
   */
  public DeviceSignals setOsFirewall(java.lang.String osFirewall) {
    this.osFirewall = osFirewall;
    return this;
  }

  /**
   * The current version of the Operating System. On Windows and linux, the value will also include
   * the security patch information.
   * @return value or {@code null} for none
   */
  public java.lang.String getOsVersion() {
    return osVersion;
  }

  /**
   * The current version of the Operating System. On Windows and linux, the value will also include
   * the security patch information.
   * @param osVersion osVersion or {@code null} for none
   */
  public DeviceSignals setOsVersion(java.lang.String osVersion) {
    this.osVersion = osVersion;
    return this;
  }

  /**
   * Whether the Password Protection Warning feature is enabled or not. Password protection alerts
   * users when they reuse their protected password on potentially suspicious sites. This setting is
   * controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger. Note that the
   * policy unset does not have the same effects as having the policy explicitly set to
   * `PASSWORD_PROTECTION_OFF`.
   * @return value or {@code null} for none
   */
  public java.lang.String getPasswordProtectionWarningTrigger() {
    return passwordProtectionWarningTrigger;
  }

  /**
   * Whether the Password Protection Warning feature is enabled or not. Password protection alerts
   * users when they reuse their protected password on potentially suspicious sites. This setting is
   * controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger. Note that the
   * policy unset does not have the same effects as having the policy explicitly set to
   * `PASSWORD_PROTECTION_OFF`.
   * @param passwordProtectionWarningTrigger passwordProtectionWarningTrigger or {@code null} for none
   */
  public DeviceSignals setPasswordProtectionWarningTrigger(java.lang.String passwordProtectionWarningTrigger) {
    this.passwordProtectionWarningTrigger = passwordProtectionWarningTrigger;
    return this;
  }

  /**
   * Affiliation IDs of the organizations that are affiliated with the organization that is
   * currently managing the Chrome Profile’s user or ChromeOS user.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getProfileAffiliationIds() {
    return profileAffiliationIds;
  }

  /**
   * Affiliation IDs of the organizations that are affiliated with the organization that is
   * currently managing the Chrome Profile’s user or ChromeOS user.
   * @param profileAffiliationIds profileAffiliationIds or {@code null} for none
   */
  public DeviceSignals setProfileAffiliationIds(java.util.List<java.lang.String> profileAffiliationIds) {
    this.profileAffiliationIds = profileAffiliationIds;
    return this;
  }

  /**
   * Whether Enterprise-grade (i.e. custom) unsafe URL scanning is enabled or not. This setting may
   * be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode
   * @return value or {@code null} for none
   */
  public java.lang.String getRealtimeUrlCheckMode() {
    return realtimeUrlCheckMode;
  }

  /**
   * Whether Enterprise-grade (i.e. custom) unsafe URL scanning is enabled or not. This setting may
   * be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode
   * @param realtimeUrlCheckMode realtimeUrlCheckMode or {@code null} for none
   */
  public DeviceSignals setRealtimeUrlCheckMode(java.lang.String realtimeUrlCheckMode) {
    this.realtimeUrlCheckMode = realtimeUrlCheckMode;
    return this;
  }

  /**
   * Safe Browsing Protection Level. That setting may be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel.
   * @return value or {@code null} for none
   */
  public java.lang.String getSafeBrowsingProtectionLevel() {
    return safeBrowsingProtectionLevel;
  }

  /**
   * Safe Browsing Protection Level. That setting may be controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel.
   * @param safeBrowsingProtectionLevel safeBrowsingProtectionLevel or {@code null} for none
   */
  public DeviceSignals setSafeBrowsingProtectionLevel(java.lang.String safeBrowsingProtectionLevel) {
    this.safeBrowsingProtectionLevel = safeBrowsingProtectionLevel;
    return this;
  }

  /**
   * The state of the Screen Lock password protection. On ChromeOS, this value will always be
   * ENABLED as there is not way to disable requiring a password or pin when unlocking the device.
   * @return value or {@code null} for none
   */
  public java.lang.String getScreenLockSecured() {
    return screenLockSecured;
  }

  /**
   * The state of the Screen Lock password protection. On ChromeOS, this value will always be
   * ENABLED as there is not way to disable requiring a password or pin when unlocking the device.
   * @param screenLockSecured screenLockSecured or {@code null} for none
   */
  public DeviceSignals setScreenLockSecured(java.lang.String screenLockSecured) {
    this.screenLockSecured = screenLockSecured;
    return this;
  }

  /**
   * Whether the device's startup software has its Secure Boot feature enabled. Available on Windows
   * only.
   * @return value or {@code null} for none
   */
  public java.lang.String getSecureBootMode() {
    return secureBootMode;
  }

  /**
   * Whether the device's startup software has its Secure Boot feature enabled. Available on Windows
   * only.
   * @param secureBootMode secureBootMode or {@code null} for none
   */
  public DeviceSignals setSecureBootMode(java.lang.String secureBootMode) {
    this.secureBootMode = secureBootMode;
    return this;
  }

  /**
   * The serial number of the device. On Windows, this represents the BIOS's serial number. Not
   * available on most Linux distributions.
   * @return value or {@code null} for none
   */
  public java.lang.String getSerialNumber() {
    return serialNumber;
  }

  /**
   * The serial number of the device. On Windows, this represents the BIOS's serial number. Not
   * available on most Linux distributions.
   * @param serialNumber serialNumber or {@code null} for none
   */
  public DeviceSignals setSerialNumber(java.lang.String serialNumber) {
    this.serialNumber = serialNumber;
    return this;
  }

  /**
   * Whether the Site Isolation (a.k.a Site Per Process) setting is enabled. That setting may be
   * controlled by an enterprise policy: https://chromeenterprise.google/policies/#SitePerProcess
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getSiteIsolationEnabled() {
    return siteIsolationEnabled;
  }

  /**
   * Whether the Site Isolation (a.k.a Site Per Process) setting is enabled. That setting may be
   * controlled by an enterprise policy: https://chromeenterprise.google/policies/#SitePerProcess
   * @param siteIsolationEnabled siteIsolationEnabled or {@code null} for none
   */
  public DeviceSignals setSiteIsolationEnabled(java.lang.Boolean siteIsolationEnabled) {
    this.siteIsolationEnabled = siteIsolationEnabled;
    return this;
  }

  /**
   * List of the addesses of all OS level DNS servers configured in the device's network settings.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getSystemDnsServers() {
    return systemDnsServers;
  }

  /**
   * List of the addesses of all OS level DNS servers configured in the device's network settings.
   * @param systemDnsServers systemDnsServers or {@code null} for none
   */
  public DeviceSignals setSystemDnsServers(java.util.List<java.lang.String> systemDnsServers) {
    this.systemDnsServers = systemDnsServers;
    return this;
  }

  /**
   * Whether Chrome is blocking third-party software injection or not. This setting may be
   * controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/?policy=ThirdPartyBlockingEnabled. Available on
   * Windows only.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getThirdPartyBlockingEnabled() {
    return thirdPartyBlockingEnabled;
  }

  /**
   * Whether Chrome is blocking third-party software injection or not. This setting may be
   * controlled by an enterprise policy:
   * https://chromeenterprise.google/policies/?policy=ThirdPartyBlockingEnabled. Available on
   * Windows only.
   * @param thirdPartyBlockingEnabled thirdPartyBlockingEnabled or {@code null} for none
   */
  public DeviceSignals setThirdPartyBlockingEnabled(java.lang.Boolean thirdPartyBlockingEnabled) {
    this.thirdPartyBlockingEnabled = thirdPartyBlockingEnabled;
    return this;
  }

  /**
   * The trigger which generated this set of signals.
   * @return value or {@code null} for none
   */
  public java.lang.String getTrigger() {
    return trigger;
  }

  /**
   * The trigger which generated this set of signals.
   * @param trigger trigger or {@code null} for none
   */
  public DeviceSignals setTrigger(java.lang.String trigger) {
    this.trigger = trigger;
    return this;
  }

  /**
   * Windows domain that the current machine has joined. Available on Windows only.
   * @return value or {@code null} for none
   */
  public java.lang.String getWindowsMachineDomain() {
    return windowsMachineDomain;
  }

  /**
   * Windows domain that the current machine has joined. Available on Windows only.
   * @param windowsMachineDomain windowsMachineDomain or {@code null} for none
   */
  public DeviceSignals setWindowsMachineDomain(java.lang.String windowsMachineDomain) {
    this.windowsMachineDomain = windowsMachineDomain;
    return this;
  }

  /**
   * Windows domain for the current OS user. Available on Windows only.
   * @return value or {@code null} for none
   */
  public java.lang.String getWindowsUserDomain() {
    return windowsUserDomain;
  }

  /**
   * Windows domain for the current OS user. Available on Windows only.
   * @param windowsUserDomain windowsUserDomain or {@code null} for none
   */
  public DeviceSignals setWindowsUserDomain(java.lang.String windowsUserDomain) {
    this.windowsUserDomain = windowsUserDomain;
    return this;
  }

  @Override
  public DeviceSignals set(String fieldName, Object value) {
    return (DeviceSignals) super.set(fieldName, value);
  }

  @Override
  public DeviceSignals clone() {
    return (DeviceSignals) super.clone();
  }

}
