<?xml version="1.0" encoding="utf-8"?>

<!-- Copyright (C) 2009 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
  
          http://www.apache.org/licenses/LICENSE-2.0
  
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!--Defines the list of test code coverage targets for core android platform 
    Intent is to list all modules that are present in a typical 'user' build
    
    TODO: auto-generate this file from build 

  Expected syntax in this file is 
  <coverage_targets>
    <coverage_target name type build_path
      [<src path=""/>] (0..*)  
    >/coverage_target>
    
   Where
     name - unique name of Android target
     type - one of JAVA_LIBRARIES,APPS 
     build_path - path to build directory for this module, relative to android
       source tree root
     src - optional sub-elements. Contains complete set of source code locations
       for target, relative to build_path. If not present, assumes valeu of "src"
      
       
-->

<coverage_targets>
   <!-- Java libs -->
    <coverage_target name="framework" type="JAVA_LIBRARIES" 
        build_path="frameworks/base">
        <src path="core/java" />
        <src path="graphics/java" />
        <src path="im/java" />
        <src path="location/java" />
        <src path="media/java" />
        <src path="opengl/java" />
        <src path="sax/java" />
        <src path="telephony/java" />
        <src path="wifi/java" />
    </coverage_target>
    <coverage_target name="android.test.runner"
        build_path="frameworks/base/test-runner" type="JAVA_LIBRARIES">
        <src path="." />
    </coverage_target>
   
   <!-- apps -->
    <coverage_target name="AlarmClock" build_path="packages/apps/AlarmClock"
        type="APPS" />
    <coverage_target name="ApiDemos" build_path="development/samples/ApiDemos"
        type="APPS" />
    <coverage_target name="Browser" build_path="packages/apps/Browser"
        type="APPS" />
    <coverage_target name="Calculator" build_path="packages/apps/Calculator"
        type="APPS" />
    <coverage_target name="Calendar" build_path="packages/apps/Calendar"
        type="APPS" />
    <coverage_target name="Camera" build_path="packages/apps/Camera"
        type="APPS" />
    <coverage_target name="Contacts" build_path="packages/apps/Contacts"
        type="APPS" />
    <coverage_target name="Email" build_path="packages/apps/Email"
        type="APPS" />
    <coverage_target name="Settings" build_path="packages/apps/Settings"
        type="APPS" />
    <coverage_target name="Phone" build_path="packages/apps/Phone"
        type="APPS" />
    <coverage_target name="Launcher" build_path="packages/apps/Home"
        type="APPS" />
    <coverage_target name="IM" build_path="packages/apps/IM" type="APPS" />
    <coverage_target name="Mms" build_path="packages/apps/Mms" type="APPS" />
    <coverage_target name="Music" build_path="packages/apps/Music"
        type="APPS" />
    <coverage_target name="VoiceDialer" build_path="packages/apps/VoiceDialer"
        type="APPS" />

   <!-- content providers -->
    <coverage_target name="CalendarProvider"
        build_path="packages/providers/calendar" type="APPS" />
    <coverage_target name="ContactsProvider"
        build_path="packages/providers/ContactsProvider" type="APPS" />
    <coverage_target name="GoogleContactsProvider"
        build_path="packages/providers/GoogleContactsProvider" type="APPS" />
    <coverage_target name="DownloadProvider"
        build_path="packages/providers/DownloadProvider" type="APPS" />
    <coverage_target name="DrmProvider" build_path="packages/providers/drm"
        type="APPS" />
    <coverage_target name="GmailProvider"
        build_path="partner/google/providers/gmail" type="APPS" />
    <coverage_target name="ImProvider"
        build_path="packages/providers/ImProvider" type="APPS" />
    <coverage_target name="MediaProvider"
        build_path="packages/providers/MediaProvider" type="APPS" />
    <coverage_target name="SettingsProvider"
        build_path="frameworks/base/packages/SettingsProvider" type="APPS" />
    <coverage_target name="TelephonyProvider"
        build_path="packages/providers/telephony" type="APPS" />

    <!-- input methods -->
    <coverage_target name="LatinIME" build_path="packages/inputmethods/LatinIME"
        type="APPS" />

</coverage_targets>
