<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:oval-def="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:android-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#android" xmlns:sch="http://purl.oclc.org/dsdl/schematron" targetNamespace="http://oval.mitre.org/XMLSchema/oval-definitions-5#android" elementFormDefault="qualified" version="5.11">
  <xsd:import namespace="http://oval.mitre.org/XMLSchema/oval-definitions-5" schemaLocation="oval-definitions-schema.xsd"/>
  <xsd:import namespace="http://oval.mitre.org/XMLSchema/oval-common-5" schemaLocation="oval-common-schema.xsd"/>
  <xsd:annotation>
    <xsd:documentation>The following is a description of the elements, types, and attributes that compose the Android specific tests found in Open Vulnerability and Assessment Language (OVAL). Each test is an extension of the standard test element defined in the Core Definition Schema. Through extension, each test inherits a set of elements and attributes that are shared amongst all OVAL tests. Each test is described in detail and should provide the information necessary to understand what each element and attribute represents. This document is intended for developers and assumes some familiarity with XML. A high level description of the interaction between the different tests and their relationship to the Core Definition Schema is not outlined here.</xsd:documentation>
    <xsd:documentation>The OVAL Schema is maintained by The MITRE Corporation and developed by the public OVAL Community. For more information, including how to get involved in the project and how to submit change requests, please visit the OVAL website at http://oval.mitre.org.</xsd:documentation>
    <xsd:appinfo>
      <schema>Android Definition</schema>
      <version>5.11:5.11</version>
      <date>12/18/2014 09:00:00 AM</date>
      <terms_of_use>Copyright (c) 2002-2014, The MITRE Corporation. All rights reserved. The contents of this file are subject to the terms of the OVAL License located at http://oval.mitre.org/oval/about/termsofuse.html. See the OVAL License for the specific language governing permissions and limitations for use of this schema. When distributing copies of the OVAL Schema, this license header must be included.</terms_of_use>
      <sch:ns prefix="oval-def" uri="http://oval.mitre.org/XMLSchema/oval-definitions-5"/>
      <sch:ns prefix="android-def" uri="http://oval.mitre.org/XMLSchema/oval-definitions-5#android"/>
      <sch:ns prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance"/>
    </xsd:appinfo>
  </xsd:annotation>
  <!-- =============================================================================== -->
  <!-- =============================== APPLICATION MANAGER TEST  ===================== -->
  <!-- =============================================================================== -->
  <xsd:element name="appmanager_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The appmanager_test is used to verify the applications installed on the device. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a appmanager_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>appmanager_test</oval:test>
          <oval:object>appmanager_object</oval:object>
          <oval:state>appmanager_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">appmanager_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_appmanager_test">
          <sch:rule context="android-def:appmanager_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:appmanager_object/@id"><sch:value-of select="../@id"/> - the object child element of an appmanager_test must reference an appmanager_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:appmanager_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:appmanager_state/@id"><sch:value-of select="../@id"/> - the state child element of an appmanager_test must reference an appmanager_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="appmanager_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The appmanager_object element is used by a appmanager_test to define the required application properties to verify. Each object extends the standard ObjectType as defined in the oval-definitions-schema and one should refer to the ObjectType description for more information.</xsd:documentation>
      <xsd:appinfo>
        <sch:pattern id="android-def_appmanager_object_verify_filter_state">
          <sch:rule context="android-def:appmanager_object//oval-def:filter">
            <sch:let name="parent_object" value="ancestor::android-def:appmanager_object"/>
            <sch:let name="parent_object_id" value="$parent_object/@id"/>
            <sch:let name="state_ref" value="."/>
            <sch:let name="reffed_state" value="ancestor::oval-def:oval_definitions/oval-def:states/*[@id=$state_ref]"/>
            <sch:let name="state_name" value="local-name($reffed_state)"/>
            <sch:let name="state_namespace" value="namespace-uri($reffed_state)"/>
            <sch:assert test="(($state_namespace='http://oval.mitre.org/XMLSchema/oval-definitions-5#android') and ($state_name='appmanager_state'))">State referenced in filter for <sch:value-of select="name($parent_object)"/> '<sch:value-of select="$parent_object_id"/>' is of the wrong type. </sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType">
          <xsd:sequence>
            <xsd:choice>
              <xsd:element ref="oval-def:set"/>
              <xsd:sequence>
                <xsd:element name="package_name" type="oval-def:EntityObjectStringType">
                  <xsd:annotation>
                    <xsd:documentation>Name of the package.</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element name="signing_certificate" type="oval-def:EntityObjectBinaryType">
                  <xsd:annotation>
                    <xsd:documentation>Hexadecimal string of the signing certificate corresponding with the key used to sign the application package. Only the actual signing certificate should be included, not CA certificates in the chain (if applicable).</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element ref="oval-def:filter" minOccurs="0" maxOccurs="unbounded"/>
              </xsd:sequence>
            </xsd:choice>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="appmanager_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The appmanager_state element defines the application settings.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="application_name" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Name of the application.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="uid" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Linux userid assigned to the application. (In some cases multiple applications can share a userid.)</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="gid" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>One element for each group id that the application belongs to.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="package_name" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Name of the package.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="data_directory" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Data directory assigned to the application.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="version" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Application version.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="current_status" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if the application is enabled.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="permission" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>One element for each permission granted to the application.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="native_lib_dir" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Directory where the application's native libraries (if any) have been installed.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="signing_certificate" type="oval-def:EntityStateBinaryType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>Hexadecimal string of the signing certificate corresponding with the key used to sign the application package. Only the actual signing certificate should be included, not CA certificates in the chain (if applicable).</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="first_install_time" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Time at which the app was first installed, expressed in milliseconds since January 1, 1970 00:00:00 UTC.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="last_update_time" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Time at which the app was last updated, expressed in milliseconds since January 1, 1970 00:00:00 UTC.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="package_file_location" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>From ApplicationInfo.sourceDir, the full path to the location of the publicly available parts of the application package.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- =============================== BLUETOOTH TEST  =============================== -->
  <!-- =============================================================================== -->
  <xsd:element name="bluetooth_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The bluetooth_test is used to check the status of bluetooth settings on the device. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a bluetooth_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>bluetooth_test</oval:test>
          <oval:object>bluetooth_object</oval:object>
          <oval:state>bluetooth_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">bluetooth_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_bluetooth_test">
          <sch:rule context="android-def:bluetooth_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:bluetooth_object/@id"><sch:value-of select="../@id"/> - the object child element of an bluetooth_test must reference an bluetooth_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:bluetooth_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:bluetooth_state/@id"><sch:value-of select="../@id"/> - the state child element of an bluetooth_test must reference an bluetooth_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="bluetooth_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The bluetooth_object element is used by a bluetooth test to define those objects to be evaluated based on a specified state. Any OVAL Test written to check bluetooth settings status will reference the same bluetooth_object which is basically an empty object element.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="bluetooth_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The bluetooth_state element defines the bluetooth general settings status.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="discoverable" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if device Bluetooth is currently in discoverable mode.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="current_status" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if device Bluetooth is currently enabled.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- ================================  CAMERA TEST  ================================ -->
  <!-- =============================================================================== -->
  <xsd:element name="camera_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The camera_test is used to check camera-related information.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>camera_test</oval:test>
          <oval:object>camera_object</oval:object>
          <oval:state>camera_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">camera_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_cmrtst">
          <sch:rule context="android-def:camera_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:camera_object/@id"><sch:value-of select="../@id"/> - the object child element of a camera_test must reference a camera_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:camera_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:camera_state/@id"><sch:value-of select="../@id"/> - the state child element of a camera_test must reference a camera_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="camera_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The camera_object element is used by a camera test to define those objects to evaluate based on a camera state.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="camera_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The camera_state element contains a single entity that is used to check the status of the camera. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="camera_disabled_policy" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>If true, then a policy is being enforced disabling use of the camera. The policy is only available in Android 4.0 and up (and potentially on older Android devices if specifically added by the device vendor).</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- ================================  CERTIFICATE TEST  =========================== -->
  <!-- =============================================================================== -->
  <xsd:element name="certificate_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The certificate_test is used to check the certificates installed on the device.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5">
          <oval:test>certificate_test</oval:test>
          <oval:object>certificate_object</oval:object>
          <oval:state>certificate_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">certificate_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern xmlns:sch="http://purl.oclc.org/dsdl/schematron" id="android-def_certtst">
          <sch:rule context="android-def:certificate_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:certificate_object/@id"><sch:value-of select="../@id"/> - the object child element of a certificate_test must reference a certificate_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:certificate_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:certificate_state/@id"><sch:value-of select="../@id"/> - the state child element of a certificate_test must reference a certificate_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="certificate_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The certificate_object element is used by a certificate test to define those objects to evaluate based on a certificate state.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="certificate_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The certificate_state element contains a single entity that is used to check the status of the certificates.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="trusted_certificate" type="oval-def:EntityStateBinaryType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>Hexadecimal string of each certificate in the OS's trusted certificate store, including both certificates installed by the system and by users. System trusted certificates that were disabled by the user are not included here.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- =============================== DEVICE SETTINGS TEST  ========================= -->
  <!-- =============================================================================== -->
  <xsd:element name="devicesettings_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The devicesettings_test is used to check the status of various settings on the device. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a devicesettings_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>devicesettings_test</oval:test>
          <oval:object>devicesettings_object</oval:object>
          <oval:state>devicesettings_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">devicesettings_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_devicesettings_test">
          <sch:rule context="android-def:devicesettings_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:devicesettings_object/@id"><sch:value-of select="../@id"/> - the object child element of an devicesettings_test must reference an devicesettings_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:devicesettings_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:devicesettings_state/@id"><sch:value-of select="../@id"/> - the state child element of an devicesettings_test must reference an devicesettings_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="devicesettings_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The devicesettings_object element is used by a device settings test to define those objects to be evaluated based on a specified state. Any OVAL Test written to check device settings will reference the same devicesettings_object which is basically an empty object element.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="devicesettings_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The devicesettings_state element defines the device settings.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="adb_enabled" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if Android Debug Bridge (USB debugging) is enabled.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="allow_mock_location" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if mock locations and location provider status can be injected into Android's Location Manager.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="install_non_market_apps" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if applications can be installed from "unknown sources".</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="device_admin" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>One element per application that holds device administrator access. Contains the application's package name.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="auto_time" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if the user prefers the date and time to be automatically fetched from the network.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="auto_time_zone" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if the user prefers the time zone to be automatically fetched from the network.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="usb_mass_storage_enabled" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if USB mass storage is enabled on the device, otherwise false.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- ===============================  ENCRYPTION SETTING TEST  ===================== -->
  <!-- =============================================================================== -->
  <xsd:element name="encryption_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The encryption_test is used to check the encryption status on the device. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a encryption_object and the optional state element references a encryption_state that specifies the information to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>encryption_test</oval:test>
          <oval:object>encryption_object</oval:object>
          <oval:state>encryption_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">encryption_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_encryptiontst">
          <sch:rule context="android-def:encryption_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:encryption_object/@id"><sch:value-of select="../@id"/> - the object child element of a encryption_test must reference a encryption_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:encryption_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:encryption_state/@id"><sch:value-of select="../@id"/> - the state child element of a encryption_test must reference a encryption_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="encryption_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The encryption_object element is used by a encryption test to define those objects to evaluated based on a specified state. Any OVAL Test written to check encryption settings will reference the same encryption_object which is basically an empty object element.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="encryption_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The encryption_state element defines the encryption settings configured on the device.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="encryption_policy_enabled" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if a policy is in place requiring the device storage to be encrypted. (android.app.admin.DevicePolicyManager.getStorageEncryption())</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="encryption_status" type="android-def:EntityStateEncryptionStatusType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The current status of device encryption. (android.app.admin.DevicePolicyManager.getStorageEncryptionStatus()) Either ENCRYPTION_STATUS_UNSUPPORTED, ENCRYPTION_STATUS_INACTIVE, ENCRYPTION_STATUS_ACTIVATING, or ENCRYPTION_STATUS_ACTIVE as documented in the Android SDK's DevicePolicyManager class.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- ===============================  LOCATION SERVICE TEST  ======================= -->
  <!-- =============================================================================== -->
  <xsd:element name="locationservice_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The locationservice_test is used to check the status of location based services. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a locationservice_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>locationservice_test</oval:test>
          <oval:object>locationservice_object</oval:object>
          <oval:state>locationservice_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">locationservice_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_locationservice_test">
          <sch:rule context="android-def:locationservice_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:locationservice_object/@id"><sch:value-of select="../@id"/> - the object child element of an locationservice_test must reference an locationservice_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:locationservice_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:locationservice_state/@id"><sch:value-of select="../@id"/> - the state child element of an locationservice_test must reference an locationservice_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="locationservice_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The locationservice_object element is used by a location service test to define those objects to evaluated based on a specified state. Any OVAL Test written to check location based services status will reference the same locationservice_object which is basically an empty object element.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="locationservice_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The locationservice_state element defines the location based services status.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="gps_enabled" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>A boolean value indicating whether the GPS location provider is enabled.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="network_enabled" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>A boolean value indicating whether the network location provider is enabled.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- =============================== NETWORK TEST  ================================= -->
  <!-- =============================================================================== -->
  <xsd:element name="network_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The network_test is used to check the status of network preferences on the device. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a network_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>network_test</oval:test>
          <oval:object>network_object</oval:object>
          <oval:state>network_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">network_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_network_test">
          <sch:rule context="android-def:network_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:network_object/@id"><sch:value-of select="../@id"/> - the object child element of an network_test must reference an network_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:network_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:network_state/@id"><sch:value-of select="../@id"/> - the state child element of an network_test must reference an network_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="network_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The network_object element is used by a network test to define those objects to be evaluated based on a specified state. Any OVAL Test written to check network preference will reference the same network_object which is basically an empty object element.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="network_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The network_state element defines the network preferences.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="airplane_mode" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if airplane mode is enabled on the device.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="nfc_enabled" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if NFC is enabled on the device.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- =============================  PASSWORD TEST  ================================= -->
  <!-- =============================================================================== -->
  <xsd:element name="password_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The password test is used to check specific policy associated with passwords and the device screen lock. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a password_object and the optional state element specifies the metadata to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>password_test</oval:test>
          <oval:object>password_object</oval:object>
          <oval:state>password_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">password_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_ptst">
          <sch:rule context="android-def:password_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:password_object/@id"><sch:value-of select="../@id"/> - the object child element of a password_test must reference a password_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:password_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:password_state/@id"><sch:value-of select="../@id"/> - the state child element of a password_test must reference a password_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="password_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The password_object element is used by a password test to define those objects to evaluated based on a specified state. Any OVAL Test written to check password policy will reference the same password_object which is basically an empty object element.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="password_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The password_state element specifies the various policies associated with passwords and the device screen lock. A password test will reference a specific instance of this state that defines the exact settings that need to be evaluated.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="max_num_failed_user_auth" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Maximum number of failed user authentications before device wipe. Zero means there is no policy in place.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_hist" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Specifies the length of password history maintained (passwords in the history cannot be reused). Zero means there is no policy in place.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_quality" type="android-def:EntityStatePasswordQualityType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The current minimum required password quality required by device policy. Represented as a string corresponding with a valid Android password quality, currently one of: PASSWORD_QUALITY_ALPHABETIC PASSWORD_QUALITY_ALPHANUMERIC PASSWORD_QUALITY_BIOMETRIC_WEAK PASSWORD_QUALITY_COMPLEX PASSWORD_QUALITY_NUMERIC PASSWORD_QUALITY_SOMETHING PASSWORD_QUALITY_UNSPECIFIED</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_min_length" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Minimum length of characters password must have. This constraint is only imposed if the password quality is one of PASSWORD_QUALITY_NUMERIC, PASSWORD_QUALITY_ALPHABETIC, PASSWORD_QUALITY_ALPHANUMERIC, or PASSWORD_QUALITY_COMPLEX.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_min_letters" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Minimum number of letters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_min_lower_case_letters" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Minimum number of lower case letters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_min_non_letters" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Minimum number of non-letter characters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_min_numeric" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Minimum number of numeric characters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_min_symbols" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Minimum number of symbol characters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_min_upper_case_letters" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Minimum number of upper case letters password must have. This constraint is only imposed if the password quality is PASSWORD_QUALITY_COMPLEX.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_expiration_timeout" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Gets the current password expiration timeout policy, in milliseconds. Zero means there is no policy in place.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="password_visible" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>When true, the most recently keyed in password character is shown to the user on the screen (the previously entered characters are masked out). When false, all keyed in password characters are immediately masked out. This setting is manageable by the device user through the device settings.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="active_password_sufficient" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>When true, the current device password is compliant with the password policy. (If the policy was recently established, it is possible that a password compliant with the policy may not yet be in place.)</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="current_failed_password_attempts" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The number of times the user has failed at entering a password since the last successful password entry.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="screen_lock_timeout" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The current policy for the highest screen lock timeout the user is allowed to specify. 0 indicates no restriction. (The user may still specify lower values in the device settings.)</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="keyguard_disabled_features" type="android-def:EntityStateKeyguardDisabledFeaturesType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The current policy for lockscreen widgets as retrieved by DevicePolicyManager.getKeyguardDisabledFeatures. May be set to one of KEYGUARD_DISABLE_FEATURES_ALL, KEYGUARD_DISABLED_FEATURES_NONE, KEYGUARD_DISABLE_SECURE_CAMERA, or KEYGUARD_DISABLE_WIDGETS_ALL. Only available in Android 4.2 and up.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- ==============================  SYSTEM DETAILS TEST =========================== -->
  <!-- =============================================================================== -->
  <xsd:element name="systemdetails_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The syste_details test is used to get system hardware and operating system information. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a systemdetails_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>systemdetails_test</oval:test>
          <oval:object>systemdetails_object</oval:object>
          <oval:state>systemdetails_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">systemdetails_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_systemdetails_test">
          <sch:rule context="android-def:systemdetails_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:systemdetails_object/@id"><sch:value-of select="../@id"/> - the object child element of systemdetails_test must reference systemdetails_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:systemdetails_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:systemdetails_state/@id"><sch:value-of select="../@id"/> - the state child element of an systemdetails_test must reference an systemdetails_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="systemdetails_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The systemdetails_object element is used by a systemdetails test to define the object to be evaluated. Each object extends the standard ObjectType as defined in the oval-definitions-schema and one should refer to the ObjectType description for more information.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="systemdetails_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The systemdetails_state element defines the information about the hardware and the operating system. Please refer to the individual elements in the schema for more details about what each represents.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="hardware" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The hardware model, as provided by android.os.Build.HARDWARE using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="manufacturer" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The device manufacturer, as provided by android.os.Build.MANUFACTURER using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="model" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The device model identifier, as provided by android.os.Build.MODEL using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="product" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The product name, as provided by android.os.Build.PRODUCT using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="cpu_abi" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The name of the instruction set of native code, as provided by android.os.Build.CPU_ABI using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="cpu_abi2" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The name of the second instruction set of native code, as provided by android.os.Build.CPU_ABI2 using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>            
            <xsd:element name="build_fingerprint" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Build fingerprint, as provided by android.os.Build.FINGERPRINT using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="os_version_code_name" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Operating system version code, as provided by android.os.Build.VERSION.CODENAME using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="os_version_build_number" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Operating system build number, as provided by android.os.Build.VERSION.INCREMENTAL using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="os_version_release_name" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Operating system release name, as provided by android.os.Build.VERSION.RELEASE using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="os_version_sdk_number" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Operating system SDK number, as provided by android.os.Build.VERSION.SDK_INT using the Android SDK.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="hardware_keystore" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if the device provides a hardware backed cryptographic keystore (a hardware keystore prevents exporting private keys or directly exposing private keys to the OS), otherwise false.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- =============================== WIFI TEST  ==================================== -->
  <!-- =============================================================================== -->
  <xsd:element name="wifi_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The wifi_test is used to check the status of general Wi-Fi settings on the device. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a wifi_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>wifi_test</oval:test>
          <oval:object>wifi_object</oval:object>
          <oval:state>wifi_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">wifi_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_wifi_test">
          <sch:rule context="android-def:wifi_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:wifi_object/@id"><sch:value-of select="../@id"/> - the object child element of an wifi_test must reference an wifi_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:wifi_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:wifi_state/@id"><sch:value-of select="../@id"/> - the state child element of an wifi_test must reference an wifi_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="wifi_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The wifi_object element is used by a wifi test to define those objects to evaluated based on a specified state. Any OVAL Test written to check wifi settings status will reference the same wifi_object which is basically an empty object element.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="wifi_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The wifi_state element defines the wifi general settings status.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="wifi_status" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if Wi-Fi is currently enabled on the device.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="network_availability_notification" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>True if the Wi-Fi network availability notification setting is currently enabled on the device.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- =============================== WIFI SECURITY TEST  =========================== -->
  <!-- =============================================================================== -->
  <xsd:element name="wifinetwork_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The wifinetwork_test is used to check information about the configured Wi-Fi networks on the device. It extends the standard TestType as defined in the oval-definitions-schema and one should refer to the TestType description for more information. The required object element references a wifinetwork_object and the optional state element specifies the data to check.</xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>wifinetwork_test</oval:test>
          <oval:object>wifinetwork_object</oval:object>
          <oval:state>wifinetwork_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">wifinetwork_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_wifinetwork_test">
          <sch:rule context="android-def:wifinetwork_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:wifinetwork_object/@id"><sch:value-of select="../@id"/> - the object child element of an wifinetwork_test must reference an wifinetwork_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:wifinetwork_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:wifinetwork_state/@id"><sch:value-of select="../@id"/> - the state child element of an wifinetwork_test must reference an wifinetwork_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="wifinetwork_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The wifinetwork_object element is used by a wifinetwork_test to define the SSID of the Wi-Fi to verify security settings. Each object extends the standard ObjectType as defined in the oval-definitions-schema and one should refer to the ObjectType description for more information.</xsd:documentation>
      <xsd:appinfo>
        <sch:pattern id="android-def_wifinetwork_object_verify_filter_state">
          <sch:rule context="android-def:wifinetwork_object//oval-def:filter">
            <sch:let name="parent_object" value="ancestor::android-def:wifinetwork_object"/>
            <sch:let name="parent_object_id" value="$parent_object/@id"/>
            <sch:let name="state_ref" value="."/>
            <sch:let name="reffed_state" value="ancestor::oval-def:oval_definitions/oval-def:states/*[@id=$state_ref]"/>
            <sch:let name="state_name" value="local-name($reffed_state)"/>
            <sch:let name="state_namespace" value="namespace-uri($reffed_state)"/>
            <sch:assert test="(($state_namespace='http://oval.mitre.org/XMLSchema/oval-definitions-5#android') and ($state_name='wifinetwork_state'))">State referenced in filter for <sch:value-of select="name($parent_object)"/> '<sch:value-of select="$parent_object_id"/>' is of the wrong type. </sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType">
          <xsd:sequence>
            <xsd:choice>
              <xsd:element ref="oval-def:set"/>
              <xsd:sequence>
                <xsd:element name="ssid" type="oval-def:EntityObjectStringType">
                  <xsd:annotation>
                    <xsd:documentation>The network's SSID to check.</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element ref="oval-def:filter" minOccurs="0" maxOccurs="unbounded"/>
              </xsd:sequence>
            </xsd:choice>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="wifinetwork_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The wifinetwork_state element defines the Wi-Fi network settings status.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="ssid" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The network's SSID.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="bssid" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>BSSID. The value is a string in the format of an Ethernet MAC address.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="auth_algorithms" type="android-def:EntityStateWifiAuthAlgorithmType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The set of authentication protocols supported by this configuration.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="group_ciphers" type="android-def:EntityStateWifiGroupCipherType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The set of group ciphers supported by this configuration.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="key_management" type="android-def:EntityStateWifiKeyMgmtType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The set of key management protocols supported by this configuration.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="pairwise_ciphers" type="android-def:EntityStateWifiPairwiseCipherType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The set of pairwise ciphers for WPA supported by this configuration.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="protocols" type="android-def:EntityStateWifiProtocolType" minOccurs="0" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation>The set of security protocols supported by this configuration.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="hidden_ssid" type="oval-def:EntityStateBoolType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>This is a network that does not broadcast its SSID.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="network_id" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The ID number that the supplicant uses to identify this network configuration entry.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="priority" type="oval-def:EntityStateIntType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Priority determines the preference given to a network by wpa_supplicant when choosing an access point with which to associate.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="current_status" type="android-def:EntityStateWifiCurrentStatusType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The current status of this network configuration entry.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- ============================================================================== -->
  <!-- =============================  TELEPHONY TEST  =============================== -->
  <!-- ============================================================================== -->
  <xsd:element name="telephony_test" substitutionGroup="oval-def:test">
    <xsd:annotation>
      <xsd:documentation>The telephony_test is used to check Telephony characteristics of system. </xsd:documentation>
      <xsd:appinfo>
        <oval:element_mapping>
          <oval:test>telephony_test</oval:test>
          <oval:object>telephony_object</oval:object>
          <oval:state>telephony_state</oval:state>
          <oval:item target_namespace="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#android">telephony_item</oval:item>
        </oval:element_mapping>
      </xsd:appinfo>
      <xsd:appinfo>
        <sch:pattern id="android-def_teltst">
          <sch:rule context="android-def:telephony_test/android-def:object">
            <sch:assert test="@object_ref=ancestor::oval-def:oval_definitions/oval-def:objects/android-def:telephony_object/@id"><sch:value-of select="../@id"/> - the object child element of a telephony_test must reference a telephony_object</sch:assert>
          </sch:rule>
          <sch:rule context="android-def:telephony_test/android-def:state">
            <sch:assert test="@state_ref=ancestor::oval-def:oval_definitions/oval-def:states/android-def:telephony_state/@id"><sch:value-of select="../@id"/> - the state child element of a telephony_test must reference a telephony_state</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:TestType">
          <xsd:sequence>
            <xsd:element name="object" type="oval-def:ObjectRefType"/>
            <xsd:element name="state" type="oval-def:StateRefType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="telephony_object" substitutionGroup="oval-def:object">
    <xsd:annotation>
      <xsd:documentation>The telephony_object element is used by a telephony test to define those objects to evaluate based on a telephony manager state.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:ObjectType"/>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="telephony_state" substitutionGroup="oval-def:state">
    <xsd:annotation>
      <xsd:documentation>The telephony_state element contains a single entity that is used to check the status of the telephony manager state. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="oval-def:StateType">
          <xsd:sequence>
            <xsd:element name="network_type" type="android-def:EntityStateNetworkType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>Value indicates the radio technology(network type) currently in use, for data transmission.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="sim_country_iso" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The ISO country code equivalent for the SIM provider's country code.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="sim_operator_code" type="oval-def:EntityStateStringType" minOccurs="0" maxOccurs="1">
              <xsd:annotation>
                <xsd:documentation>The MCC+MNC(mobile country code + mobile network code) of the provider of the SIM. It contains 5 or 6 decimal digits.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:element>
  <!-- =============================================================================== -->
  <!-- ===============================  ENTITY TYPES  ================================ -->
  <!-- =============================================================================== -->
  <xsd:complexType name="EntityStateEncryptionStatusType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateEncryptionStatusType complex type restricts a string value to a specific set of values. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="ENCRYPTION_STATUS_UNSUPPORTED">
          <xsd:annotation>
            <xsd:documentation>Encryption is not supported</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="ENCRYPTION_STATUS_ACTIVE">
          <xsd:annotation>
            <xsd:documentation>Encryption is active.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="ENCRYPTION_STATUS_INACTIVE">
          <xsd:annotation>
            <xsd:documentation>Encryption is supported but is not currently active.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="ENCRYPTION_STATUS_ACTIVATING">
          <xsd:annotation>
            <xsd:documentation>Encryption is not currently active, but is currently being activated.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateKeyguardDisabledFeaturesType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateKeyguardDisabledFeaturesType complex type restricts a string value to a specific set of values. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="KEYGUARD_DISABLE_FEATURES_NONE">
          <xsd:annotation>
            <xsd:documentation>Widgets are enabled in keyguard</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="KEYGUARD_DISABLE_WIDGETS_ALL">
          <xsd:annotation>
            <xsd:documentation>Disable all keyguard widgets</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="KEYGUARD_DISABLE_SECURE_CAMERA">
          <xsd:annotation>
            <xsd:documentation>Disable the camera on secure keyguard screens (e.g. PIN/Pattern/Password)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="KEYGUARD_DISABLE_FEATURES_ALL">
          <xsd:annotation>
            <xsd:documentation>Disable all current and future keyguard customizations</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateNetworkType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateNetworkType complex type restricts a string value to a specific set of values. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="UNKNOWN">
          <xsd:annotation>
            <xsd:documentation>The network type is unknown</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="GPRS">
          <xsd:annotation>
            <xsd:documentation>Current network is GPRS </xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="EDGE">
          <xsd:annotation>
            <xsd:documentation>Current network is EDGE </xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="UMTS">
          <xsd:annotation>
            <xsd:documentation>Current network is UMTS </xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="CDMA">
          <xsd:annotation>
            <xsd:documentation>Current network is CDMA</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="EVDO-0">
          <xsd:annotation>
            <xsd:documentation>Current network is EVDO-0</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="EVDO-A">
          <xsd:annotation>
            <xsd:documentation>Current network is EVDO-A</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="1xRTT">
          <xsd:annotation>
            <xsd:documentation>Current network is 1xRTT</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="HSDPA">
          <xsd:annotation>
            <xsd:documentation>Current network is HSDPA</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="HSUPA">
          <xsd:annotation>
            <xsd:documentation>Current network is HSUPA</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="HSPA">
          <xsd:annotation>
            <xsd:documentation>Current network is HSPA</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="IDEN">
          <xsd:annotation>
            <xsd:documentation>Current network is IDEN</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="EVDO-B">
          <xsd:annotation>
            <xsd:documentation>Current network is EVDO-B</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="LTE">
          <xsd:annotation>
            <xsd:documentation>Current network is LTE</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="EHRPD">
          <xsd:annotation>
            <xsd:documentation>Current network is EHRPD</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="HSPAP">
          <xsd:annotation>
            <xsd:documentation>Current network is HSPAP</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStatePasswordQualityType">
    <xsd:annotation>
      <xsd:documentation>The EntityStatePasswordQualityType complex type restricts a string value to a specific set of values. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="PASSWORD_QUALITY_ALPHABETIC">
          <xsd:annotation>
            <xsd:documentation>The password must contain alphabetic (or other symbol) characters</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="PASSWORD_QUALITY_ALPHANUMERIC">
          <xsd:annotation>
            <xsd:documentation>The password must contain both numeric and alphabetic (or other symbol) characters</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="PASSWORD_QUALITY_BIOMETRIC_WEAK">
          <xsd:annotation>
            <xsd:documentation>This policy allows for low-security biometric recognition technology</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="PASSWORD_QUALITY_COMPLEX">
          <xsd:annotation>
            <xsd:documentation>The password must contain at least a letter, a numerical digit, and a special symbol</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="PASSWORD_QUALITY_NUMERIC">
          <xsd:annotation>
            <xsd:documentation>The password must contain at least numeric characters</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="PASSWORD_QUALITY_SOMETHING">
          <xsd:annotation>
            <xsd:documentation>This policy requires some kind of password, but doesn't care what it is</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="PASSWORD_QUALITY_UNSPECIFIED">
          <xsd:annotation>
            <xsd:documentation>There are no password policy requirements</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateWifiAuthAlgorithmType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateWifiAuthAlgorithmType complex type restricts a string value to a specific set of values that name WiFi authentication algorithms. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="LEAP">
          <xsd:annotation>
            <xsd:documentation>LEAP/Network EAP (only used with LEAP)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="OPEN">
          <xsd:annotation>
            <xsd:documentation>Open System authentication (required for WPA/WPA2)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="SHARED">
          <xsd:annotation>
            <xsd:documentation>Shared Key authentication (requires static WEP keys)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateWifiCurrentStatusType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateWifiCurrentStatusType complex type restricts a string value to a specific set of values. The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="CURRENT">
          <xsd:annotation>
            <xsd:documentation>The network we are currently connected to</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="ENABLED">
          <xsd:annotation>
            <xsd:documentation>Supplicant will not attempt to use this network</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="DISABLED">
          <xsd:annotation>
            <xsd:documentation>Supplicant will consider this network available for association</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateWifiGroupCipherType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateWifiGroupCipherType complex type restricts a string value to a specific set of values that name Wi-Fi group ciphers (android.net.wifi.WifiConfiguration.GroupCipher). The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="CCMP">
          <xsd:annotation>
            <xsd:documentation>AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]; Constant Value: 3 (0x00000003)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="TKIP">
          <xsd:annotation>
            <xsd:documentation>Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]; Constant Value: 2 (0x00000002)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="WEP104">
          <xsd:annotation>
            <xsd:documentation>WEP (Wired Equivalent Privacy) with 104-bit key; Constant Value: 1 (0x00000001)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="WEP40">
          <xsd:annotation>
            <xsd:documentation>WEP (Wired Equivalent Privacy) with 40-bit key (original 802.11); Constant Value: 0 (0x00000000)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateWifiKeyMgmtType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateWifiKeyMgmtType complex type restricts a string value to a specific set of values that name Wi-Fi key management schemes (from android.net.wifi.WifiConfiguration.KeyMgmt). The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="IEEE8021X">
          <xsd:annotation>
            <xsd:documentation>IEEE 802.1X using EAP authentication and (optionally) dynamically generated WEP keys.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="NONE">
          <xsd:annotation>
            <xsd:documentation>WPA is not used; plaintext or static WEP could be used.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="WPA_EAP">
          <xsd:annotation>
            <xsd:documentation>WPA using EAP authentication.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="WPA_PSK">
          <xsd:annotation>
            <xsd:documentation>WPA pre-shared key.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateWifiPairwiseCipherType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateWifiPairwiseCipherType complex type restricts a string value to a specific set of values that name Wi-Fi recognized pairwise ciphers for WPA (from android.net.wifi.WifiConfiguration.PairwiseCipher). The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="CCMP">
          <xsd:annotation>
            <xsd:documentation>AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="NONE">
          <xsd:annotation>
            <xsd:documentation>Use only Group keys (deprecated)</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="TKIP">
          <xsd:annotation>
            <xsd:documentation>Temporal Key Integrity Protocol [IEEE802.11i/D7.0]</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="EntityStateWifiProtocolType">
    <xsd:annotation>
      <xsd:documentation>The EntityStateWifiProtocolType complex type restricts a string value to a specific set of values that name Wi-Fi recognized security protocols (from android.net.wifi.WifiConfiguration.Protocol). The empty string is also allowed to support empty element associated with variable references. Note that when using pattern matches and variables care must be taken to ensure that the regular expression and variable values align with the enumerated values.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="oval-def:EntityStateStringType">
        <xsd:enumeration value="RSN">
          <xsd:annotation>
            <xsd:documentation>WPA2/IEEE 802.11i</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="WPA">
          <xsd:annotation>
            <xsd:documentation>WPA/IEEE 802.11i/D3.0</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="">
          <xsd:annotation>
            <xsd:documentation>The empty string value is permitted here to allow for empty elements associated with variable references.</xsd:documentation>
          </xsd:annotation>
        </xsd:enumeration>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>
</xsd:schema>
