Merge "Docs: Adding new cover image and current date" into mnc-dev
diff --git a/src/compatibility/android-cdd.html b/src/compatibility/android-cdd.html
index 3fa1868..78cee1d 100644
--- a/src/compatibility/android-cdd.html
+++ b/src/compatibility/android-cdd.html
@@ -107,6 +107,14 @@
 
 <p class="toc_h2"><a href="#3_12_tv_input_framework">3.12. TV Input Framework</a></p>
 
+<p class="toc_h3"><a href="#3_12_1_tv_app">3.12.1. TV App</a></p>
+
+<p class="toc_h4"><a href="#3_12_1_1_electronic_program_guide">3.12.1.1. Electronic Program Guide</a></p>
+
+<p class="toc_h4"><a href="#3_12_1_2_navigation">3.12.1.2. Navigation</a></p>
+
+<p class="toc_h4"><a href="#3_12_1_3_tv_input_app_linking">3.12.1.3. TV input app linking</a></p>
+
 <p class="toc_h1"><a href="#4_application_packaging_compatibility">4. Application Packaging Compatibility</a></p>
 
 <p class="toc_h1"><a href="#5_multimedia_compatibility">5. Multimedia Compatibility</a></p>
@@ -281,7 +289,7 @@
 
 <p class="toc_h2"><a href="#8_1_user_experience_consistency">8.1. User Experience Consistency</a></p>
 
-<p class="toc_h2"><a href="#8_2_memory_performance">8.2. Memory Performance</a></p>
+<p class="toc_h2"><a href="#8_2_file_i_o_access_performance">8.2. File I/O Access Performance</a></p>
 
 </div>
 
@@ -313,6 +321,8 @@
 
 <p class="toc_h2"><a href="#9_11_keys_and_credentials">9.11. Keys and Credentials</a></p>
 
+<p class="toc_h2"><a href="#9_12_data_deletion">9.12. Data Deletion</a></p>
+
 <p class="toc_h1"><a href="#10_software_compatibility_testing">10. Software Compatibility Testing</a></p>
 
 <p class="toc_h2"><a href="#10_1_compatibility_test_suite">10.1. Compatibility Test Suite</a></p>
@@ -668,7 +678,7 @@
  <tr>
     <td>FINGERPRINT</td>
     <td>A string that uniquely identifies this build. It SHOULD be reasonably
-human-readable. It MUST follow this template:</p>
+human-readable. It MUST follow this template:
 <p class="small">$(BRAND)/$(PRODUCT)/<br>
 	&nbsp;&nbsp;&nbsp;&nbsp;$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)</p>
 <p>For example:</p>
@@ -678,7 +688,7 @@
 included in the template above have whitespace characters, they MUST be
 replaced in the build fingerprint with another character, such as the
 underscore ("_") character. The value of this field MUST be encodable as 7-bit
-ASCII.</td>
+ASCII.</p></td>
  </tr>
  <tr>
     <td>HARDWARE</td>
@@ -1661,7 +1671,7 @@
   <li>Ensure the default dialer can look up caller information from the managed
 profile (if one exists) alongside those from the primary profile</li>
   <li>Ensure that all the security requirements for multi user (see
-<a href="#9_5_multi-user_support">section 9.5<a/>) apply to
+<a href="#9_5_multi-user_support">section 9.5</a>) apply to
 managed profiles.</li>
 </ul>
 
@@ -1737,11 +1747,72 @@
 <p>The Android Television Input Framework (TIF) simplifies the delivery of live
 content to Android Television devices. TIF provides a standard API to create
 input modules that control Android Television devices. Android Television
-device implementations MUST support Television Input Framework [<a href="http://source.android.com/devices/tv/index.html">Resources, 46</a>].</p>
+device implementations MUST support TV Input Framework
+[<a href="http://source.android.com/devices/tv/index.html">Resources, 46</a>].</p>
 
 <p>Device implementations that support TIF MUST declare the platform feature
 android.software.live_tv.</p>
 
+<h3 id="3_12_1_tv_app">3.12.1. TV App</h3>
+
+<p>Any device implementation that declares support for Live TV MUST have an
+installed TV application (TV App). The Android Open Source Project provides an implementation of the TV
+App.</p>
+
+<p>The TV App MUST provide facilities to install and use TV Channels
+[<a href="http://developer.android.com/reference/android/media/tv/TvContract.Channels.html">Resources, XX</a>]
+ and meet the following requirements:</p>
+
+<ul>
+  <li>Device implementations MUST allow third-party TIF-based inputs (third-party inputs)
+[<a href="https://source.android.com/devices/tv/index.html#third-party_input_example">Resources, XX</a>]
+ to be installed and managed.
+  <li>Device implementations MAY provide visual separation between pre-installed
+ TIF-based inputs (installed inputs)
+[<a href="https://source.android.com/devices/tv/index.html#tv_inputs">Resources, XX</a>]
+ and third-party inputs.
+  <li>The device implementations MUST NOT display the third-party inputs more than a
+single navigation action away from the TV App (i.e. expanding a list of
+third-party inputs from the TV App).
+</ul>
+
+<h4 id="3_12_1_1_electronic_program_guide">3.12.1.1. Electronic Program Guide</h4>
+
+<p>Android Television device implementations MUST show an informational and
+interactive overlay, which MUST include an electronic program guide (EPG)
+generated from the values in the TvContract.Programs fields
+[<a href="https://developer.android.com/reference/android/media/tv/TvContract.Programs.html">Resources, XX</a>].
+ The EPG MUST meet the following requirements:</p>
+
+<ul>
+  <li>The EPG MUST display information from all installed inputs and third-party
+inputs.
+  <li>The EPG MAY provide visual separation between the installed inputs and
+third-party inputs.
+  <li>The EPG is STRONGLY RECOMMENDED to display installed inputs and third-party
+inputs with equal prominence. The EPG MUST NOT display the third-party inputs
+more than a single navigation action away from the installed inputs on the EPG.
+  <li>On channel change, device implementations MUST display EPG data for the
+currently playing program.
+</ul>
+
+<h4 id="3_12_1_2_navigation">3.12.1.2. Navigation</h4>
+
+<p>Android Television device input devices (i.e. remote control, remote control
+application, or game controller) MUST allow navigation to all actionable
+sections of the screen via the D-pad. D-pad up and down MUST be used to change
+live TV channels when there is no actionable section on the screen.</p>
+
+<p>The TV App SHOULD pass key events to HDMI inputs through CEC.</p>
+
+<h4 id="3_12_1_3_tv_input_app_linking">3.12.1.3. TV input app linking</h4>
+
+<p>Android Television device implementations MUST support TV input app linking,
+which allows all inputs to provide activity links from the current activity to
+another activity (i.e. a link from live programming to related content)
+[<a href="http://developer.android.com/reference/android/media/tv/TvContract.Channels.html#COLUMN_APP_LINK_INTENT_URI">Resources, XX</a>].
+ The TV App MUST show TV input app linking when it is provided.</p>
+
 <h1 id="4_application_packaging_compatibility">4. Application Packaging Compatibility</h1>
 
 
@@ -1758,13 +1829,14 @@
 
 
 <p>Device implementations MUST support the core media formats specified in the
-Android SDK documentation [<a href="http://developer.android.com/guide/appendix/media-formats.html">Resources, 50</a>] except where explicitly permitted in this document. Specifically, device
+Android SDK documentation [<a href="http://developer.android.com/guide/appendix/media-formats.html">Resources, 50</a>]
+except where explicitly permitted in this document. Specifically, device
 implementations MUST support the media formats, encoders, decoders, file types,
 and container formats defined in the tables below and reported via MediaCodecList
 [<a href="http://developer.android.com/reference/android/media/MediaCodecList.html">Resources,112</a>].
 Device implementations MUST also be able to decode all profiles reported in its CamcorderProfile
 [<a href="http://developer.android.com/reference/android/media/CamcorderProfile.html">Resources,
-113</a>].
+113</a>] and MUST be able to decode all formats it can encode.
 
 All of these codecs are
 provided as software implementations in the preferred Android implementation
@@ -1787,9 +1859,9 @@
     <th>Supported File Types/Container Formats</th>
  </tr>
  <tr>
-    <td>MPEG-4 AAC Profile</p>
+    <td>MPEG-4 AAC Profile<br />
 
-<p>(AAC LC)</td>
+(AAC LC)</td>
     <td>REQUIRED<sup>1</sup></td>
     <td>REQUIRED</td>
     <td>Support for mono/stereo/5.0/5.1<sup>2</sup> content with standard sampling rates from 8 to
@@ -1811,9 +1883,9 @@
     <td></td>
  </tr>
  <tr>
-    <td>MPEG-4 HE AACv2</p>
+    <td>MPEG-4 HE AACv2<br />
 
-<p>Profile (enhanced AAC+)</td>
+Profile (enhanced AAC+)</td>
     <td> </td>
     <td>REQUIRED</td>
     <td>Support for mono/stereo/5.0/5.1<sup>2</sup> content with standard sampling rates from 16
@@ -1822,12 +1894,12 @@
  </tr>
  <tr>
     <td>AAC ELD (enhanced low delay AAC)</td>
-    <td>REQUIRED<sup>1</sup> </p>
+    <td>REQUIRED<sup>1</sup> <br />
 
-<p>(Android 4.1+)</td>
-    <td>REQUIRED</p>
+(Android 4.1+)</td>
+    <td>REQUIRED<br />
 
-<p>(Android 4.1+)</td>
+(Android 4.1+)</td>
     <td>Support for mono/stereo content with standard sampling rates from 16 to 48 kHz.</td>
     <td></td>
  </tr>
@@ -2013,12 +2085,12 @@
  </tr>
  <tr>
     <td>VP8<sup>3</sup></td>
-    <td>REQUIRED<sup>2</sup></p>
+    <td>REQUIRED<sup>2</sup><br />
 
-<p>(Android 4.3+)</td>
-    <td>REQUIRED<sup>2</sup></p>
+(Android 4.3+)</td>
+    <td>REQUIRED<sup>2</sup><br />
 
-<p>(Android 2.3.3+)</td>
+(Android 2.3.3+)</td>
     <td>See <a href="#5_2_video_encoding">section 5.2</a> and <a href="#5_3_video_decoding">5.3</a> for details</td>
     <td><ul>
     <li class="table_list">WebM (.webm) [<a href="http://www.webmproject.org/">Resources, 110</a></li>
@@ -2289,9 +2361,9 @@
     <th></th>
     <th>SD (Low quality)</th>
     <th>SD (High quality)</th>
-    <th>HD 720p<sup>1</sup></td>
-    <th>HD 1080p<sup>1</sup></td>
-    <th>UHD<sup>2</sup></td>
+    <th>HD 720p<sup>1</sup></th>
+    <th>HD 1080p<sup>1</sup></th>
+    <th>UHD<sup>2</sup></th>
  </tr>
  <tr>
     <th>Video resolution</th>
@@ -2500,7 +2572,7 @@
 <p>If a device implementation meets the requirements of this section after any
 initial calibration when using the OpenSL ES PCM buffer queue API, for
 continuous output latency and cold output latency over at least one supported
-audio output device, it MAY report support for low-latency audio, by reporting
+audio output device, it is STRONGLY RECOMMENDED to report support for low-latency audio, by reporting
 the feature android.hardware.audio.low_latency via the
 android.content.pm.PackageManager class [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53</a>]. Conversely, if the device implementation does not meet these requirements it
 MUST NOT report support for low-latency audio.</p>
@@ -2548,7 +2620,7 @@
 If a device implementation supports the inter-app MIDI software transport
 (virtual MIDI devices), and it supports MIDI over
 <em>all</em> of the following MIDI-capable hardware transports
-for which it provides generic non-MIDI connectivity, it MAY report
+for which it provides generic non-MIDI connectivity, it is STRONGLY RECOMMENDED to report
 support for feature android.software.midi via the
 android.content.pm.PackageManager class
 [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53</a>].
@@ -2577,7 +2649,7 @@
 
 <p>
 If a device implementation meets <em>all</em> of the following requirements,
-it MAY report support for feature android.hardware.audio.pro via the
+it is STRONGLY RECOMMENDED to report support for feature android.hardware.audio.pro via the
 android.content.pm.PackageManager class
 [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53</a>].
 </p>
@@ -3200,7 +3272,7 @@
 <table>
  <tr>
     <th>Button</th>
-    <th>HID Usage</strong><sup>2</sup></td>
+    <th>HID Usage<sup>2</sup></th>
     <th>Android Button</th>
  </tr>
  <tr>
@@ -3224,16 +3296,16 @@
     <td>KEYCODE_BUTTON_Y (100)</td>
  </tr>
  <tr>
-    <td><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_UP">D-pad up</a><sup>1</sup></p>
+    <td><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_UP">D-pad up</a><sup>1</sup><br />
 
-<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_DOWN">D-pad down</a><sup>1</sup></td>
+<a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_DOWN">D-pad down</a><sup>1</sup></td>
     <td>0x01 0x0039<sup>3</sup></td>
     <td><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_Y">AXIS_HAT_Y</a><sup>4</sup></td>
  </tr>
  <tr>
-    <td><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_LEFT">D-pad left</a>1</p>
+    <td><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_LEFT">D-pad left</a>1<br />
 
-<p><a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_RIGHT">D-pad right</a><sup>1</sup></td>
+<a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_RIGHT">D-pad right</a><sup>1</sup></td>
     <td>0x01 0x0039<sup>3</sup></td>
     <td><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_X">AXIS_HAT_X</a><sup>4</sup></td>
  </tr>
@@ -3285,7 +3357,7 @@
 
 <table>
  <tr>
-    <th>Analog Controls</strong><sup>1</sup></td>
+    <th>Analog Controls<sup>1</sup></th>
     <th>HID Usage</th>
     <th>Android Button</th>
  </tr>
@@ -3301,21 +3373,21 @@
  </tr>
  <tr>
     <td><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Y">Left Joystick</a></td>
-    <td>0x01 0x0030</p>
+    <td>0x01 0x0030<br />
 
-<p>0x01 0x0031</td>
-    <td>AXIS_X</p>
+0x01 0x0031</td>
+    <td>AXIS_X<br />
 
-<p>AXIS_Y</td>
+AXIS_Y</td>
  </tr>
  <tr>
     <td><a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Z">Right Joystick</a></td>
-    <td>0x01 0x0032</p>
+    <td>0x01 0x0032<br />
 
-<p>0x01 0x0035</td>
-    <td>AXIS_Z</p>
+0x01 0x0035</td>
+    <td>AXIS_Z<br />
 
-<p>AXIS_RZ</td>
+AXIS_RZ</td>
  </tr>
 </table>
 
@@ -3858,7 +3930,7 @@
       <li>NFC Forum Tag Types 1, 2, 3, 4 (defined by the NFC Forum)</li>
     </ul>
   <li>MUST be capable of reading and writing NDEF messages as well as raw
-      data via the following NFC standards:</li>
+      data via the following NFC standards:
   <ul>
     <li>NfcV (ISO 15693)</li>
   </ul></li>
@@ -4818,6 +4890,16 @@
   not implemented a trusted operating system on the secure hardware, such a device cannot meet
   the above TEE-related requirements through a system software update and thus is exempted from these TEE-related requirements.</p>
 
+<h2 id="9_12_data_deletion">9.12. Data Deletion</h2>
+
+<p>Devices MUST provide users with a mechanism to perform a "Factory Data Reset"
+that allows logical and physical deletion of all data. This MUST satisfy relevant
+industry standards for data deletion such as NIST SP800-88. This MUST be used for
+the implementation of the wipeData() API (part of the Android Device Administration API)
+described in <a href="#3_9_device_administration">section 3.9 Device Administration.</p>
+
+<p>Devices MAY provide a fast data wipe that conducts a logical data erase.</p>
+
 <h1 id="10_software_compatibility_testing">10. Software Compatibility Testing</h1>
 
 
@@ -4921,7 +5003,7 @@
 <h1 id="12_document_changelog">12. Document Changelog</h1>
 
 <p>The following table contains a summary of the changes to the Compatibility
-Definition in this release. </p>
+Definition in this release.</p>
 <table>
  <tr>
     <th>Section</th>
@@ -4944,6 +5026,10 @@
     <td>Change for the user agent string reported by the WebView</td>
  </tr>
  <tr>
+    <td>3.7. Runtime Compatibility</td>
+    <td>Updates to memory allocation table</td>
+ </tr>
+ <tr>
     <td>3.8.6. Themes</td>
     <td>Added requirement to support black system icons when requested by the SYSTEM_UI_FLAG_LIGHT_STATUS_BAR flag</td>
  </tr>
@@ -4976,7 +5062,7 @@
     <td>General updates for professional audio support; updates for mobile device (jack) specifications, USB audio host mode, and other updates</td>
  </tr>
  <tr>
-    <td>5.9 Musical Instrument Digital Interface (MIDI)</td>
+    <td>5.9. Musical Instrument Digital Interface (MIDI)</td>
     <td>Added new section on optional Musical Instrument Digital Interface (MIDI) support</td>
  </tr>
 <tr>
@@ -4984,6 +5070,22 @@
     <td>Update for drivers supporting Windows 10</td>
  </tr>
  <tr>
+    <td>7.1.1.3. Screen Density</td>
+    <td>Updates for screen density, for example related to an Android watch</td>
+ </tr>
+ <tr>
+    <td>7.3. Sensors (and subsections)</td>
+    <td>New requirements for some sensor types</td>
+ </tr>
+ <tr>
+    <td>7.3.9. High Fidelity Sensors</td>
+    <td>New section with requirements for devices supporting high fidelity sensors</td>
+ </tr>
+ <tr>
+    <td>7.3.10. Fingerprint Sensor</td>
+    <td>New section on requirements related to fingerprint sensors</td>
+ </tr>
+ <tr>
     <td>7.4.3. Bluetooth</td>
     <td>Addition related to Resolvable Private Address (RPA) for Bluetooth Low Energy (BLE)</td>
  </tr>
@@ -5000,10 +5102,14 @@
     <td>Additions related to near-ultrasound recording, playback, and audio</td>
  </tr>
  <tr>
-    <td>9.1 Permissions</td>
+    <td>9.1. Permissions</td>
     <td>Addition to Permissions requirements</td>
  </tr>
 <tr>
+    <td>9.7. Kernel Security Features</td>
+    <td>SE Linux updates</td>
+ </tr>
+<tr>
     <td>9.8. Privacy</td>
     <td>Addition regarding user's consent for access to shared storage over a USB port</td>
  </tr>
@@ -5016,6 +5122,10 @@
     <td>Additional requirement for verified boot</td>
  </tr>
  <tr>
+    <td>9.11. Keys and Credentials</td>
+    <td>New section of requirements related to keys and credentials</td>
+ </tr>
+ <tr>
     <td>11. Updatable Software</td>
     <td>Requirement related to the system update policy set by the device owner</td>
  </tr>