Docs: Changes to

  - 154078436 Correct constraint on call_site_id's in DEX format by claym <>
  - 153880797 Attribution updates to the April public security bulletin by Android Partner Docs <>
  - 153847481 Updates to ASAN instructions by Android Partner Docs <>
  - 153776051 update to include LLVM Sanitizer information by Android Partner Docs <>
  - 153770085 Add Camera ITS to home by claym <>
  - 153751709 Change link to go to Android Issue Tracker instead of the... by Android Partner Docs <>
  - 153612674 Add redirect from source/download to initializing by claym <>
  - 153605118 Repalce SCS links to YIR with /reports links by daroberts <>
  - 153476630 Add Zer0 conf slides to Security reports by daroberts <>
  - 153208805 Add blog post note to Issue Tracker documentation by daroberts <>
  - 153202288 Docs: Add camera ITS-in-a-box, new camera section by hvm <>

PiperOrigin-RevId: 154078436
Change-Id: I008b9cb25646e7a4b1b154fe9f91cf2c42e9c0bc
diff --git a/en/_index.yaml b/en/_index.yaml
index c9bc417..5797200 100644
--- a/en/_index.yaml
+++ b/en/_index.yaml
@@ -55,6 +55,14 @@
       image_path: /images/android_stack.png
   - heading: News
+    - heading: Camera Image Test Suite (ITS) Test Automation
+      description: >
+        The Android Compatibility Test Suite (CTS) now supports ITS test
+        automation via Camera ITS-in-a-box, an assembly for testing
+        multiple devices at once with minimal intervention.
+      buttons:
+      - label: April 20th, 2017
+        path: /compatibility/cts/camera-its-box
     - heading: April Android Security Bulletin
       description: >
         The April 2017 Android Security Bulletin has been published along with
@@ -78,7 +86,7 @@
         users safe.
       - label: March 21st, 2017
-        path:
+        path: /security/reports/Google_Android_Security_2016_Report_Final.pdf
   - classname: devsite-landing-row-100 tf-row-centered
     - buttons:
diff --git a/en/compatibility/_toc-compatibility.yaml b/en/compatibility/_toc-compatibility.yaml
index be60f37..9e5c185 100644
--- a/en/compatibility/_toc-compatibility.yaml
+++ b/en/compatibility/_toc-compatibility.yaml
@@ -25,12 +25,18 @@
       path: /compatibility/cts/verifier
     - title: Audio Framework
       path: /compatibility/cts/audio-framework
-    - title: Camera HAL Testing
-      path: /compatibility/cts/camera-hal
     - title: Near Ultrasound Tests
       path: /compatibility/cts/near-ultrasound
     - title: Rotation Vector Crosscheck
       path: /compatibility/cts/rotation-vector
+  - title: Camera Testing
+    section:
+    - title: Camera HAL Testing
+      path: /compatibility/cts/camera-hal
+    - title: Camera ITS-in-a-Box
+      path: /compatibility/cts/camera-its-box
+    - title: Camera ITS-in-a-Box Assembly
+      path: /compatibility/cts/camera-its-box-assembly
   - title: Interpret Results
     path: /compatibility/cts/interpret
   - title: Develop CTS
diff --git a/en/compatibility/cts/camera-its-box-assembly.html b/en/compatibility/cts/camera-its-box-assembly.html
new file mode 100644
index 0000000..86518df
--- /dev/null
+++ b/en/compatibility/cts/camera-its-box-assembly.html
@@ -0,0 +1,270 @@
+<html devsite>
+  <head>
+    <title>ITS-in-a-Box Assembly</title>
+    <meta name="project_path" value="/_project.yaml" />
+    <meta name="book_path" value="/_book.yaml" />
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+<p>ITS-in-a-box consists of a plastic box that is laser cut from computer-aided
+design (CAD) drawings, a chart tablet, and a device under test (DUT). This page
+provides step-by-step instructions for assembling the ITS-in-a-box.</p>
+<p><img src=images/camera_iab_cad.png></p>
+<p class=caption><strong>Figure 1</strong>. CAD image for ITS-in-a-box.</p>
+<h2>Required tools</h2>
+<p>Before getting started, ensure you have
+<a href="">downloaded the technical
+drawings</a> for the ITS-in-a box and have the following tools available:</p>
+<li>Phillips head screwdriver</li>
+<li>Exacto knife</li>
+<li>Wire cutters or scissors (optional)</li>
+<h2 id=lighting>Step 1: Lighting</h2>
+<p>To assemble the ITS-in-a-box lighting component:</p>
+<li>Gather the lighting hardware shown in Figure 2:
+<br><img src=images/camera_iab_light_assembly_parts.png width="50%"><br>
+<strong>Figure 2</strong>. Light assembly parts.<br><br>
+Hardware includes LED light bars, plastic light baffles, plastic light mounts,
+metal light clips included in the LED lighting kit, and four 6-32 screws with
+acorn head nuts.</li>
+<li>Place LED light bars in the mounts with lights pointing down and towards
+the table, as shown in Figure 3 (left side):
+<br><img src=images/camera_iab_light_bar.png width="50%"><br>
+<strong>Figure 3</strong>. Close-up of light bars with lights facing down
+and screws threaded through clips.<br><br>
+Thread the screws through the light clips using a screwdriver and while holding
+the metal clip. The screw head should be be on the inside of the C shape of the
+light clip as shown in Figure 3 (right side). Threading the screws requires
+pressure as the fit is tight.</li>
+<li>Bolt the clips to the plastic baffles as shown in Figure 4:
+<br><img src=images/camera_iab_light_baffles.png width="50%"><br>
+<strong>Figure 4</strong>. Light baffles with clips attached (acorn nuts are on
+the side of the plastic not shown).</li>
+<li>Assemble the lights by snapping the baffles to the LED light backs with the
+<br><img src=images/camera_iab_light_assembled.png width="50%"><br>
+<strong>Figure 5</strong>. Assembled lights.<br><br>
+The LED lights should point down and the plastic should form a back to the light
+to block the shiny, reflective back of the LED light bar.</li>
+<h2 id=phone-mount>Step 2: Phone mounts</h2>
+<p>To assemble phone mounts:</p>
+<li>Gather the phone mount hardware shown in Figure 6:
+<br><img src=images/camera_iab_phone_mount_parts.png width="50%"><br>
+<strong>Figure 6</strong>. Phone mount assembly parts.<br><br>
+Hardware includes two aluminum phone trays, two plungers, two rubber tips, and
+four 8-32 pan-head screws.</li>
+<li>Cut the rubber tips short enough to not interfere with plunger operation
+(roughly in half), then use the rubber tips to cover the plungers.</li>
+<li>Assemble the phone mounts using pan-head screws to attach the plunger
+mechanisms to the aluminum trays.
+<br><img src=images/camera_iab_phone_mount_assembled.png width="50%"><br>
+<strong>Figure 7</strong>. Assembled phone mounts.<br><br>
+Ensure the screws do not protrude beyond the plunger in the retracted or
+extended plunger position.</li>
+<h2 id=phone-mount>Step 3: Aperture plate</h2>
+<p>To assemble the front aperture plate:</p>
+<li>Gather the front aperture plate hardware shown in Figure 8:
+<br><img src=images/camera_iab_front_plate_parts.png width="50%"><br>
+<strong>Figure 8</strong>. Front aperture plate assembly parts (front plate
+top has the narrower space from slots for tabs to edge).<br><br>
+Hardware includes four short nylon screws (provided in the ITS-in-a-box kit) and
+eight washers (required to keep the screws from protruding through the back of
+the plastic plate).</li>
+<li>Add phone mounts to the front square aperture plate as shown in Figure 9:
+<br><img src=images/camera_iab_front_plate_assembled.jpg width="50%"><br>
+<strong>Figure 9</strong>. Assembled front plate, phone mounts in middle
+<h2 id=tablet-holder>Step 4: Tablet holder</h2>
+<p>To assemble the tablet holder:</p>
+<li>Gather the tablet holder parts shown in Figure 10:
+<br><img src=images/camera_iab_tab_holder_parts.png width="50%"><br>
+<strong>Figure 10</strong>. Tablet holder space assembly parts.</li>
+<li>Attach the spacer bars to the back of the tablet holder by threading a
+nylon screw into the hole at the bottom-left or bottom-right of the tablet
+holder (the screw threads properly in only one direction).</li>
+<li>Mount the spacers on the opposite side of the nylon screw as shown in Figure
+<br><img src=images/camera_iab_tablet_spacer_detail.jpg  width="50%"><br>
+<strong>Figure 11</strong>. Tablet holder, location of plastic spacers and
+nylon screw.</li>
+<li>Assemble the tablet holder with the screw head in the counter-drilled
+plastic, then assemble the remaining pieces as shown in Figure 12.
+<br><img src=images/camera_iab_tab_holder_spacer.png  width="50%"><br>
+<strong>Figure 12</strong>. Assembled tablet holder spacer (washers account for
+thickness variations in the plastic).</li>
+<li>Gather the tablet plunger parts as shown in Figure 13:
+<br><img src=images/camera_iab_plunger_parts.png  width="50%"><br>
+<strong>Figure 13</strong>. Tablet plunger parts with plastic tips cut
+(later designs have only one plunger in the center).</li>
+<li>Cut the plastic tips to correct length and use the tips to cover the
+plunger heads.</li>
+<li>Attach plungers to the plastic, placing the acorn nuts on the outside to
+ensure minimum clearance on the inside for the tablet (and to prevent
+interference with plunger operation.</li>
+<li>Connect the plunger(s) with the screw heads facing the box as shown in
+Figure 14:
+<br><img src=images/camera_iab_tabholder_assembled.png width="50%"><br>
+<strong>Figure 14</strong>. Assembled tablet holder (acorn nuts face away
+from back panel of box).<br><br>
+All acorn nuts are on the same side of the tablet holder to maximize clearance
+for the tablet.</li>
+<h2 id=box-assembly>Step 5: Assemble box</h2>
+<p>To assemble the box:</p>
+<li>Place the front panel with the circular aperture flat on the table, inside
+facing up.</li>
+<li>Connect the front and back walls by inserting tabs into slots as shown in
+Figure 15:
+<br><img src=images/camera_iab_top_bottom_placed.png width="50%"><br>
+<strong>Figure 15</strong>. Top and bottom attached to front (as seen from
+right side).<br><br>
+Position the front so the chamfered side of the circular aperture is on the
+inside of the box. The front of the bottom can be identified by the small hole
+for the power cord box exit (out of the field of view). The plastic hooks for
+the sides should be pointed in the same direction.</li>
+<li>Attach the back to the top and bottom as shown in Figure 16:
+<br><img src=images/camera_iab_back_no_sides.jpg width="50%"><br>
+<strong>Figure 16</strong>. Back attached, no sides.<br><br>
+Push the back onto the tabs, then slide the back to the right (when facing the
+back of the box) to fit under the hooked tabs.</li></ol>
+<h2 id=light-install>Step 6: Install lights</h2>
+<p>To install the lights:</p>
+<li>Place lights in the assembled box as shown in Figure 17:
+<br><img src=images/camera_iab_light_installed.jpg width="50%"><br>
+<strong>Figure 17</strong>. Proper light placement (back removed).<br><br>
+Ensure lights are pointed in the right direction (towards the top and bottom and
+towards the front of the box).</li>
+<li>Secure lights by squeezing the pin into the small hole on the rectangular
+tab that extends through the slot in the top/bottom, as shown in Figure 18:
+<br><img src=images/camera_iab_pin_led_mount_details.png width="50%"><br>
+<strong>Figure 18</strong>. Detail of inserted pin in LED mount tab on outside
+of box.<br><br>
+Squeezing of the pins is best done with a pair of pliers using gentle pressure;
+you should feel a little give in the plastic as the pins are squeezed in place.
+Insert the pins for both the bottom and top light sets. As the pins are small
+and easy to drop, it is easiest to insert them to the bottom with the box
+upside down.</li>
+<li>Attach the power cord to the lower light bar as shown in Figure 19:
+<br><img src=images/camera_iab_light_cord.jpg width="50%"><br>
+<strong>Figure 19</strong>. Detail of lighting power cord.<br><br>
+Thread the power cord through the hole in lower-front-right. The power cord has
+different connectors at each end: The narrow connector fits to the LED light bar
+and the larger connector fits to the power adaptor.</li>
+<li>To prevent the power cord from pulling on the light assembly, use a zip tie
+to secure the power cord to bottom of box as shown in Figure 20:
+<br><img src=images/camera_iab_light_cord_secured.jpg width="50%"><br>
+<strong>Figure 20</strong>. Power cord zip tie attachment on bottom of box
+(shown on its side); trim ties as necessary.</li>
+<li>Wire the top lights to the bottom lights on the left side and secure the
+cable to the front of the box. Some drawings show the cable secured on side of
+box, but it is easier to wire them to front corner as shown in Figure 21:
+<br><img src=images/camera_iab_light_cord_zip.jpg width="50%"><br>
+<strong>Figure 21</strong>. Detail of light cord anchored out of field of
+<h2 id=sides-holder>Step 7: Attach sides, tablet holder, and handles</h2>
+<p>To attach the box sides, tablet holder, and handles with locking mechanism:</p>
+<li>Snap the right panel into place by pushing and sliding it upwards. The
+bottom of the panel should be flush with the bottom of the front and back panels
+as shown in Figure 22:
+<br><img src=images/camera_iab_right_side_placed.jpg width="50%"><br>
+<strong>Figure 22</strong>. Right side panel in place (viewed from back).</li>
+<li>Place assembled tablet holder in right tabs as shown in Figure 23:
+<br><img src=images/camera_iab_tabholder_inserted.jpg width="50%"><br>
+<strong>Figure 23</strong>. Right side, tablet holder inserted in slots (viewed
+from back of box so it appears on the left).<br><br>
+If the tabs are too tight to allow the tablet holder to move up and down, sand
+the tabs with 100 grit sandpaper to thin them and create a better fit.</li>
+<li>Snap the left panel into place by pushing and sliding it upwards, as shown
+in figure 24:
+<br><img src=images/camera_iab_left_side_placed.jpg width="50%"><br>
+<strong>Figure 24</strong>. Left side panel in place.</li>
+<li>Gather the handle parts shown in Figure 25:
+<br><img src=images/camera_iab_handle_parts.png width="50%"><br>
+<strong>Figure 25</strong>. Handle and box lock parts.<br><br>
+Hardware includes four wide plastic pieces (for outside the box) and two narrow
+pieces (for top of the box). Screw holes are not placed symmetrically on the
+plastic strips.</li>
+<li>Assemble the handle as shown in figure 26:
+<br><img src=images/camera_iab_handle_assembled.png width="50%"><br>
+<strong>Figure 26</strong>. Assembled handle.<br><br>
+Acorn nuts are usually placed on the top of the box. While this is not strictly
+necessary, it makes the outer part of the handle as flat as possible. If the
+handle is loose, insert washers to allow the acorn nuts to tighten effectively.
+<h2 id=final-assembly>Step 8: Final assembly</h2>
+<p>To perform final assembly of the ITS-in-a-box:</p>
+<li>Using two nylon screws (short or long), attach the square aperture panel
+with phone mounts to the front of the box as shown in Figure 27:
+<br><img src=images/camera_iab_front_attached.jpg width="50%"><br>
+<strong>Figure 27</strong>. Attached front panel.<br><br>
+Place one screw on the top of the box and one screw on the bottom of the box.</li>
+<li>Test the 4"x4” gatorboard aperture blank to ensure it fits in the square
+opening, as shown in Figure 28:
+<br><img src=images/camera_iab_gater_no_aperture.jpg width="50%"><br>
+<strong>Figure 28</strong>. Gatorboard installed, no aperture cut.<br><br>
+The fit should be snug. If the blank is too tight, shave it; if too loose, make
+<li>Cut apertures for cameras. You can cut a single aperture (for testing a
+single phone) or two apertures (for testing two phones). Apertures for the Pixel
+and Pixel XL front and rear cameras are shown in Figure 29:
+<br><img src=images/camera_iab_front_apertures.jpg width="50%"><br>
+<strong>Figure 29</strong>. Front of ITS-in-a-box with front and rear camera
+aperture cuts.<br><br>
+The front camera is a circular aperture since there is no flash or laser, while
+the rear camera is a rectangular aperture that allows the flash and laser to
+operate without being blocked.</li></ol>
+  </body>
diff --git a/en/compatibility/cts/camera-its-box.html b/en/compatibility/cts/camera-its-box.html
new file mode 100644
index 0000000..b88b0b7
--- /dev/null
+++ b/en/compatibility/cts/camera-its-box.html
@@ -0,0 +1,222 @@
+<html devsite>
+  <head>
+    <title>Camera ITS-in-a-Box</title>
+    <meta name="project_path" value="/_project.yaml" />
+    <meta name="book_path" value="/_book.yaml" />
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+<p>Android Camera Image Test Suite (ITS) is part of Android Compatibility Test
+Suite (CTS) Verifier and includes tests that verify image content. As of CTS
+7.0_r8, CTS Verifier supports ITS test automation via Camera ITS-in-a-box;
+support for manual tests continues to ensure coverage for all Android device
+form factors.</p>
+<p>ITS-in-a-box brings the following benefits:</p>
+<li><strong>Automation</strong>. No human intervention is needed during the
+<li><strong>Reduced testing time</strong>. Parallel testing of front/back camera
+testing cycle time by 50%.</li>
+<li><strong>Easier troubleshooting</strong>. Consistency of test environment
+leads to fewer setup errors and increases reproducibility.</li>
+<li><strong>Efficiency</strong>. Ability to retry for individual Camera/Scene
+improves test execution efficiency.</li>
+<h2 id=get-started>Getting started</h2>
+<p>ITS-in-a-box consists of a plastic box that is laser cut from computer-aided
+design (CAD) drawings, a chart tablet, and a device under test (DUT). To get
+started with the Camera ITS-in-a-box:</p>
+<li><a href="">Download the technical
+<li><a href="camera-its-box-assembly.html">Build the box</a>.</li>
+<li><a href="#configure-tablet">Configure a tablet</a> with Camera ITS
+<li><a href="#run-tests">Run tests</a>.</li>
+<li><a href="#get-results">Get results</a> from the DUT.</li>
+<h2 id=configure-tablet>Configuring the tablet</h2>
+<p>This section provides step-by-step instructions for setting up a Pixel C
+tablet for use with the CameraITS software.</p>
+<p class="note"><strong>Note:</strong> The CameraITS python scripts
+automatically set the following options on the tablet for you:
+<br><em>Settings > Display > Sleep > After 30 minutes of inactivity</em>
+<br><em>Adaptive brightness > OFF</em>
+<li>Charge the tablet and power it on. If prompted to set up an account, skip it
+(CameraITS does not require any account paired with the tablet).</li>
+<li>Update the tablet to Android 7.0 or later (Android 6.x and earlier versions
+do not support CameraITS).</li>
+<li>Enable developer mode by going to <em>Settings > About tablet</em> and
+tapping <strong>Build number</strong> five times.</li>
+<li>Return to <em>Settings</em> and select <strong>Developer options</strong>.
+<th>Enable options</th>
+<li>Stay awake</li>
+<li>USB debugging (This allows the host to run the tablet in debug mode. When you
+connect the tablet to the host for the first time, the tablet prompts you to
+"Allow USB debugging?" If the tablet does not display the debug prompt,
+disconnect then reconnect tablet.)</li>
+<th>Disable options</th>
+<li>Automatic system updates</li>
+<li>Verify apps over USB</li>
+<li>Determine DUT and chart IDs by running <code>$ adb devices</code> to list
+available devices. To determine <code>device_id</code> and
+<code>chart_id</code>, plug and unplug devices and observe the devices that
+connect and disconnect.</li>
+<li>Perform three test runs to suppress hints and user prompts that can obscure
+charts on the tablet screen.
+<ol style=list-style-lower-alpha>
+<li>Position the tablet face-up on a table (do not attach the tablet to the back
+panel of the box)</li>
+<li>Run the following command:
+<pre>$ python tools/ device=$device_id camera=0 chart=$chart_id scenes=2,3</pre>
+Scenes 2 and 3 require the tablet to display an image, so the tablet prompts you
+to "Allow Drive to access photos, media, and files on your device?". Clear this
+prompt (and prevent future prompts) by pressing <strong>Allow</strong>.</li>
+<li>Run the command again. The tablet prompts you to "Keep a copy of this file?"
+and suggests Google Drive. Clear this prompt (and prevent future prompts) by
+pressing the Drive icon then <strong>Cancel</strong> for upload to drive.</li>
+<li>Finally, run <code>tools/</code> and confirm that scenes
+change automatically as script cycles through different scenes. While most
+tests will FAIL (as the camera is not pointed at the chart), you can verify the
+tablet correctly cycles through the scenes without displaying any prompts or
+other pop-ups on the screen.</li></ol></li></ol>
+<h2 id=run-tests>Running tests</h2>
+<p>Before running the ITS-in-a-box, ensure your test setup includes the following
+hardware and software:</p>
+<li>One (1) ITS-in-a-box</li>
+<li>One (1) Pixel C for displaying Scenes, S/N: 5811000011</li>
+<li>Two (2) DUTs that use the same build fingerprint and have the CTS Verifier
+7.0_8+ application installed. Example DUTs:
+<li>One (1) Pixel NOF26W for the back camera(0) testing, S/N: FA6BM0305016. To
+install the CTS Verifier app, unzip then run
+<pre>$ adb -s FA6BM0305016 install -r android-cts-verifier/CtsVerifier.apk</pre></li>
+<li>One (1) Pixel NOF26W for the front camera(1) testing, S/N: FA6BM0305439. To
+install the CTS Verifier app, unzip then run
+<pre>$ adb -s FA6BM0305439 install -r android-cts-verifier/CtsVerifier.apk</pre></li>
+<h3 id=scenes-0-4>Running scenes 0-4</h3>
+<p>To run scenes 0-4 on the front and back camera in parallel:</p>
+<pre>$ cd android-cts-verifier/CameraITS
+$ . build/
+$ python tools/ device0=FA6BM0305016 device1=FA6BM0305439 chart=5811000011
+<td ><img src=images/camera_its_cam0.png align="center"></td>
+<td align="center"><img src=images/camera_its_cam0.png></td>
+<td align="center"><p class=caption><strong>Figure 1</strong>. Camera 0 S/N:
+<td align="center"><p class=caption><strong>Figure 2</strong>. Camera 1 S/N:
+<h3 id=retry-scenes>Retrying scenes</h3>
+<p>You can retry scenes for both front and back cameras or a single camera:
+<li>To retry scenes on front and back cameras in parallel:
+<pre>$ python tools/ device0=FA6BM0305016 device1=FA6BM0305439 chart=5811000011 scenes=3,4</pre></li>
+<li>To retry scenes on a single camera:
+<pre>$ python tools/ device=FA6BM0305016 chart=5811000011 camera=1 scenes=3,4</pre></li>
+<h3 id=scenes-0-4>Running scene 5</h3>
+<p>Scene 5 requires special setup with specific lighting (for details, refer to
+CameraITS.pdf in the CTS Verifier download). You can run Scene 5 separately
+(outside of the box) to test two devices in parallel.</p>
+<li>To run Scene 5 on front and back cameras on two devices in parallel:
+<pre>$ python tools/ device0=FA6BM0305016 device1=FA6BM0305439 chart=5811000011 scenes=5</pre>
+<br><img src=images/camera_its_scene5.png width="50%"><br>
+<strong>Figure 3</strong>. Camera scene 5.</li>
+<li>To run Scene 5 for front and back cameras on a single device:
+<pre>$ python tools/ device=FA6BM0305016 camera=0 scenes=5
+$ python tools/ device=FA6BM0305016 camera=1 scenes=5
+<h2 id=get-results>Getting results</h2>
+<p>You can view results during testing and save the completed results as a report.
+<li><strong>View progress of running tests</strong>. The command
+<code>run_parallel_tests</code> prints results only after Camera-Scene tests
+have finished, so to view results during test execution you must use Android
+Device Monitor or <code>adb logcat</code> to verify progress and/or view
+<br>Example adb command:
+<pre>$ adb -s FA6BM0305016 logcat -v time</pre>
+Example screenshots command:
+<pre>$ adb -s FA6BM0305016 shell screencap -p /sdcard/screencap.png
+$ adb -s FA6BM0305016 pull /sdcard/screencap.png
+$ display ./screencap.png
+<li><strong>View results</strong>. To save Camera ITS results as a report:
+<li>Press <strong>Pass</strong> and save the report:
+<br><img src=images/camera_its_results.png width="50%"><br>
+<strong>Figure 4</strong>. Camera ITS report.</li>
+<li>Pull reports from the device:
+<pre>$ adb -s FA6BM0305016 pull /sdcard/verifierReports</pre></li>
+<li>Unzip the report file and view the test_result.xml.
+<br><img src=images/camera_its_reports.png><br>
+<strong>Figure 5</strong>. Camera ITS reports.<br></li>
+  </body>
diff --git a/en/compatibility/cts/ b/en/compatibility/cts/
new file mode 100644
index 0000000..ddf25da
--- /dev/null
+++ b/en/compatibility/cts/
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_back_no_sides.jpg b/en/compatibility/cts/images/camera_iab_back_no_sides.jpg
new file mode 100644
index 0000000..621db6c
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_back_no_sides.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_cad.png b/en/compatibility/cts/images/camera_iab_cad.png
new file mode 100644
index 0000000..ecee914
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_cad.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_front_apertures.jpg b/en/compatibility/cts/images/camera_iab_front_apertures.jpg
new file mode 100644
index 0000000..06f82bc
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_front_apertures.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_front_attached.jpg b/en/compatibility/cts/images/camera_iab_front_attached.jpg
new file mode 100644
index 0000000..c2276be
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_front_attached.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_front_plate_assembled.jpg b/en/compatibility/cts/images/camera_iab_front_plate_assembled.jpg
new file mode 100644
index 0000000..1092b10
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_front_plate_assembled.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_front_plate_parts.png b/en/compatibility/cts/images/camera_iab_front_plate_parts.png
new file mode 100644
index 0000000..9f4ae41
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_front_plate_parts.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_gater_no_aperture.jpg b/en/compatibility/cts/images/camera_iab_gater_no_aperture.jpg
new file mode 100644
index 0000000..abc534b
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_gater_no_aperture.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_handle_assembled.png b/en/compatibility/cts/images/camera_iab_handle_assembled.png
new file mode 100644
index 0000000..769e244
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_handle_assembled.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_handle_parts.png b/en/compatibility/cts/images/camera_iab_handle_parts.png
new file mode 100644
index 0000000..e5a3c10
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_handle_parts.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_left_side_placed.jpg b/en/compatibility/cts/images/camera_iab_left_side_placed.jpg
new file mode 100644
index 0000000..8b2ab67
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_left_side_placed.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_assembled.png b/en/compatibility/cts/images/camera_iab_light_assembled.png
new file mode 100644
index 0000000..e9df6ce
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_assembled.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_assembly_parts.png b/en/compatibility/cts/images/camera_iab_light_assembly_parts.png
new file mode 100644
index 0000000..6882ccc
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_assembly_parts.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_baffles.png b/en/compatibility/cts/images/camera_iab_light_baffles.png
new file mode 100644
index 0000000..130592a
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_baffles.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_bar.png b/en/compatibility/cts/images/camera_iab_light_bar.png
new file mode 100644
index 0000000..971bdc4
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_bar.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_cord.jpg b/en/compatibility/cts/images/camera_iab_light_cord.jpg
new file mode 100644
index 0000000..2dc760b
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_cord.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_cord_secured.jpg b/en/compatibility/cts/images/camera_iab_light_cord_secured.jpg
new file mode 100644
index 0000000..c17a94e
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_cord_secured.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_cord_zip.jpg b/en/compatibility/cts/images/camera_iab_light_cord_zip.jpg
new file mode 100644
index 0000000..0cac090
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_cord_zip.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_light_installed.jpg b/en/compatibility/cts/images/camera_iab_light_installed.jpg
new file mode 100644
index 0000000..90f704d
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_light_installed.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_phone_mount_assembled.png b/en/compatibility/cts/images/camera_iab_phone_mount_assembled.png
new file mode 100644
index 0000000..0756f7a
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_phone_mount_assembled.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_phone_mount_parts.png b/en/compatibility/cts/images/camera_iab_phone_mount_parts.png
new file mode 100644
index 0000000..53b7c89
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_phone_mount_parts.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_pin_led_mount_details.png b/en/compatibility/cts/images/camera_iab_pin_led_mount_details.png
new file mode 100644
index 0000000..a7e0748
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_pin_led_mount_details.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_plunger_parts.png b/en/compatibility/cts/images/camera_iab_plunger_parts.png
new file mode 100644
index 0000000..7b7fd08
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_plunger_parts.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_right_side_placed.jpg b/en/compatibility/cts/images/camera_iab_right_side_placed.jpg
new file mode 100644
index 0000000..6e775c0
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_right_side_placed.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_tab_holder_parts.png b/en/compatibility/cts/images/camera_iab_tab_holder_parts.png
new file mode 100644
index 0000000..dbe05b9
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_tab_holder_parts.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_tab_holder_spacer.png b/en/compatibility/cts/images/camera_iab_tab_holder_spacer.png
new file mode 100644
index 0000000..3c6aa81
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_tab_holder_spacer.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_tabholder_assembled.png b/en/compatibility/cts/images/camera_iab_tabholder_assembled.png
new file mode 100644
index 0000000..826564f
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_tabholder_assembled.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_tabholder_inserted.jpg b/en/compatibility/cts/images/camera_iab_tabholder_inserted.jpg
new file mode 100644
index 0000000..e4a8651
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_tabholder_inserted.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_tablet_spacer_detail.jpg b/en/compatibility/cts/images/camera_iab_tablet_spacer_detail.jpg
new file mode 100644
index 0000000..a104445
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_tablet_spacer_detail.jpg
Binary files differ
diff --git a/en/compatibility/cts/images/camera_iab_top_bottom_placed.png b/en/compatibility/cts/images/camera_iab_top_bottom_placed.png
new file mode 100644
index 0000000..d4eb895
--- /dev/null
+++ b/en/compatibility/cts/images/camera_iab_top_bottom_placed.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_its_cam0.png b/en/compatibility/cts/images/camera_its_cam0.png
new file mode 100644
index 0000000..85af468
--- /dev/null
+++ b/en/compatibility/cts/images/camera_its_cam0.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_its_cam1.png b/en/compatibility/cts/images/camera_its_cam1.png
new file mode 100644
index 0000000..06e482e
--- /dev/null
+++ b/en/compatibility/cts/images/camera_its_cam1.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_its_reports.png b/en/compatibility/cts/images/camera_its_reports.png
new file mode 100644
index 0000000..66bd486
--- /dev/null
+++ b/en/compatibility/cts/images/camera_its_reports.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_its_results.png b/en/compatibility/cts/images/camera_its_results.png
new file mode 100644
index 0000000..af4d86d
--- /dev/null
+++ b/en/compatibility/cts/images/camera_its_results.png
Binary files differ
diff --git a/en/compatibility/cts/images/camera_its_scene5.png b/en/compatibility/cts/images/camera_its_scene5.png
new file mode 100644
index 0000000..0237815
--- /dev/null
+++ b/en/compatibility/cts/images/camera_its_scene5.png
Binary files differ
diff --git a/en/devices/tech/dalvik/dex-format.html b/en/devices/tech/dalvik/dex-format.html
index 7ddcc12..3ff22c0 100644
--- a/en/devices/tech/dalvik/dex-format.html
+++ b/en/devices/tech/dalvik/dex-format.html
@@ -247,8 +247,7 @@
   <td>call site identifiers list. These are identifiers for all call sites
     referred to by this file, whether defined in the file or not. This list
-    must be sorted in ascending order of <code>call_site_off</code>. This
-    list must not contain any duplicate entries.
+    must be sorted in ascending order of <code>call_site_off</code>.
diff --git a/en/devices/tech/debug/asan.html b/en/devices/tech/debug/asan.html
index e93a878..e510a05 100644
--- a/en/devices/tech/debug/asan.html
+++ b/en/devices/tech/debug/asan.html
@@ -54,16 +54,17 @@
 <h2 id=building_with_clang>Building with Clang</h2>
 <p>As a first step to building an ASan-instrumented binary, make sure that your
-code builds with Clang. This is done by adding <code>LOCAL_CLANG:=true</code>
+code builds with Clang. This is done by default on the master branch, so there should be nothing
+you need to do. If you believe that the module you'd like to test is being built with GCC,
+you can switch to Clang by adding <code>LOCAL_CLANG:=true</code>
 to the build rules. Clang may find bugs in your code that GCC missed.</p>
 <h2 id=building_executables_with_addresssanitizer>Building executables with AddressSanitizer</h2>
 <p>Add <code>LOCAL_SANITIZE:=address</code> to the build rule of the
-executable. This requires: <code>LOCAL_CLANG:=true</code></p>
@@ -85,7 +86,6 @@
 for the module in question:</p>
@@ -161,7 +161,7 @@
 enable ASan in all apps on the device at the same time, which is a
 bit stressful, but nothing that a 2GB RAM device cannot handle.</p>
-<p>Add the usual <code>LOCAL_CLANG:=true, LOCAL_SANITIZE:=address</code> to
+<p>Add the usual <code>LOCAL_SANITIZE:=address</code> to
 the app_process build rule in <code>frameworks/base/cmds/app_process</code>. Ignore
 the <code>app_process__asan</code> target in the same file for now (if it is
 still there at the time you read
@@ -213,7 +213,7 @@
 $ make -j42
+$ SANITIZE_TARGET=address make -j42
 <p>In this mode, <code>userdata.img</code> contains extra libraries and must be
@@ -223,15 +223,14 @@
 $ fastboot flash userdata && fastboot flashall
-<p>At the moment of this writing, hammerhead-userdebug and shamu-userdebug boot to
-the UI in this mode.</p>
+<p>At the moment of this writing, modern Nexus and Pixel devices boot to the UI in this mode.</p>
 <p>This works by building two sets of shared libraries: normal in
 <code>/system/lib</code> (the first make invocation), ASan-instrumented in
-<code>/data/lib</code> (the second make invocation). Executables from the
+<code>/data/asan/lib</code> (the second make invocation). Executables from the
 second build overwrite the ones from the first build. ASan-instrumented
 executables get a different library search path that includes
-<code>/data/lib</code> before <code>/system/lib</code> through the use of
+<code>/data/asan/lib</code> before <code>/system/lib</code> through the use of
 "/system/bin/linker_asan" in PT_INTERP.</p>
 <p>The build system clobbers intermediate object directories when the
@@ -243,7 +242,7 @@
   <li>Statically linked executables.
   <li><code>LOCAL_CLANG:=false</code> targets
-  <li><code>LOCAL_SANITIZE:=undefined</code>; will not be ASan'd for <code>SANITIZE_TARGET=address</code>
+  <li><code>LOCAL_SANITIZE:=false</code> will not be ASan'd for <code>SANITIZE_TARGET=address</code>
 <p>Executables like these are skipped in the SANITIZE_TARGET build, and the
diff --git a/en/security/bulletin/2017-04-01.html b/en/security/bulletin/2017-04-01.html
index 4498d7d..7d25193 100644
--- a/en/security/bulletin/2017-04-01.html
+++ b/en/security/bulletin/2017-04-01.html
@@ -20,7 +20,7 @@
       See the License for the specific language governing permissions and
       limitations under the License.
-<p><em>Published April 03, 2017 | Updated April 05, 2017</em></p>
+<p><em>Published April 03, 2017 | Updated April 21, 2017</em></p>
 <p>The Android Security Bulletin contains details of security vulnerabilities
 affecting Android devices. Alongside the bulletin, we have released a security
 update to Nexus devices through an over-the-air (OTA) update. The Google device
@@ -140,14 +140,14 @@
   <li>Pengfei Ding (丁鹏飞), Chenfu Bao (包沉浮), and Lenx Wei (韦韬) of Baidu X-Lab
   (百度安全实验室): CVE-2016-10236</li>
   <li>Qidan He (何淇丹 - <a href="">@flanker_hqd</a>)
-  of KeenLab, Tencent: CVE-2017-0544, CVE-2016-10231, CVE-2017-0325</li>
+  of KeenLab, Tencent: CVE-2017-0544, CVE-2017-0325</li>
   <li>Roee Hay (<a href="">@roeehay</a>) of Aleph
   Research, HCL Technologies: CVE-2017-0582, CVE-2017-0563</li>
   <li><a href="">Scott Bauer</a> (<a
   href="">@ScottyBauer1</a>): CVE-2017-0562,
   <li>Seven Shen (<a href="">@lingtongshen</a>) of
-  TrendMicro Mobile Threat Research Team: CVE-2017-0578</li>
+  TrendMicro Mobile Threat Research Team: CVE-2016-10231, CVE-2017-0578, CVE-2017-0586</li>
   <li>Tim Becker: CVE-2017-0546</li>
   <li>Uma Sankar Pradhan (<a
   href="">@umasankar_iitd</a>): CVE-2017-0560</li>
@@ -161,8 +161,6 @@
   <li>Wenlin Yang (<a href="">@wenlin_yang</a>),
   Guang Gong (<a href="">@oldfresher</a>), and Hao
   Chen of Alpha Team, Qihoo 360 Technology Co. Ltd.: CVE-2017-0580, CVE-2017-0577</li>
-  <li>Yonggang Guo (<a href="">@guoygang</a>) of
-  IceSword Lab, Qihoo 360 Technology Co. Ltd.: CVE-2017-0586</li>
   <li><a href="">Zinuo Han</a> from Chengdu Security
   Response Center of Qihoo 360 Technology Co. Ltd.: CVE-2017-0548</li>
   <li>Zubin Mithra of Google: CVE-2017-0462</li>
@@ -2690,6 +2688,7 @@
   <li>April 03, 2017: Bulletin published.</li>
   <li>April 05, 2017: Bulletin revised to include AOSP links.</li>
+  <li>April 21, 2017: Attribution for CVE-2016-10231 and CVE-2017-0586 corrected.</li>
diff --git a/en/security/index.html b/en/security/index.html
index 8521b8b..5d62e5d 100644
--- a/en/security/index.html
+++ b/en/security/index.html
@@ -158,7 +158,7 @@
 Services</a>. While these services are not part of the Android Open Source
 Project, they are included on many Android devices. For more information on
 some of these services, see Android Security’s
-<a href="">2015
+<a href="/security/reports/Google_Android_Security_2015_Report_Final.pdf">2015
 Year in Review</a>.
diff --git a/en/security/overview/implement.html b/en/security/overview/implement.html
index bbe1967..7233a34 100644
--- a/en/security/overview/implement.html
+++ b/en/security/overview/implement.html
@@ -56,6 +56,9 @@
 application code using the Android SDK and correct any identified issues.</li>
 <li>Native code should be analyzed using an automated tool that can detect
 memory management issues such as buffer overflows and off-by-one errors.</li>
+<li>The Android build system has support for many of the LLVM sanitizers,
+such as AddressSanitizer and UndefinedBehaviorSanitizer which can be used
+for this purpose.</li>
 <h3 id="auto-test">Using automated testing</h3>
diff --git a/en/security/overview/updates-resources.html b/en/security/overview/updates-resources.html
index c524b5f..fcf199f 100644
--- a/en/security/overview/updates-resources.html
+++ b/en/security/overview/updates-resources.html
@@ -275,40 +275,40 @@
 <p>Security information exists throughout the Android Open Source and Developer
 sites. Good places to start:<br>
-<a href=""></a><br>
+<a href="/security/index.html"></a><br>
 <a href=""></a></p>
 <h3 id=reports>Reports</h3>
 <p>Sometimes the Android Security team publishes reports or whitepapers. Here are some of the most recent.</p>
-  <li><a href="">
+  <li><a href="/security/reports/Google_Android_Security_2016_Report_Final.pdf">
       Android Security 2016 Year In Review</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Google_Android_Security_2015_Report_Final.pdf">
       Android Security 2015 Year In Review</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Google_Android_Security_2014_Report_Final.pdf">
       Android Security 2014 Year In Review</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Android_WhitePaper_Final_02092016.pdf">
       Android Security white paper</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">
       Classifications for Potentially Harmful Applications</a></li>
-<h3 id=slides>Android Bootcamp 2016 slides</h3>
-<p>The Android Security team has published their Android Bootcamp 2016 slides that cover new security features.</p>
+<h3 id=slides>Presentations</h3>
+<p>The Android Security team presents at various conferences and talks. Here are some of their slides:</p>
-  <li><a href="">
+  <li><a href="/security/reports/Android-Bootcamp-2016-Verified-Boot-and-Encryption.pdf">
       Verified boot and encryption</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Android-Bootcamp-2016-SafetyNet.pdf">
-  <li><a href="">
+  <li><a href="/security/reports/Android-Bootcamp-2016-New-App-Lifecycle-for-Encryption.pdf">
       New app life cycle for encryption</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Android-Bootcamp-2016-Keeping-Google-Play-safe.pdf">
       Keeping Google Play safe</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Android-Bootcamp-2016-Defense-in-depth-efforts.pdf">
       Defense in depth efforts</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Android-Bootcamp-2016-Android-Keystore-Attestation.pdf">
       Keystore attestation</a></li>
-  <li><a href="">
+  <li><a href="/security/reports/Android-Bootcamp-2016-Android-Attack-Team.pdf">
       Android attack team</a></li>
diff --git a/en/source/report-bugs.html b/en/source/report-bugs.html
index 8c7e55f..581dc78 100644
--- a/en/source/report-bugs.html
+++ b/en/source/report-bugs.html
@@ -22,13 +22,16 @@
 Thank you for your interest in Android! You can help improve Android by
-reporting issues and feature requests in
-<a href="">Issue
+reporting issues and feature requests in the
+<a href="">Android Issue
 Tracker</a>. The Android Issue Tracker contains a list of pending technical
 tasks across a variety of topics, information relevant to those tasks, and
 information about progress on those tasks, including which ones might get worked
 on in the short term.
+<p class="note">For more information about why we switched to Issue Tracker, see <a
+blog post</a>.</p>
 Issue Tracker is not a customer support forum. For support information, see the
 <a href="">Nexus</a> and