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

<!--
 * Copyright (C) 2014 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.
 -->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="android.appwidget.cts"
    android:targetSandboxVersion="2">

  <application>
      <uses-library android:name="android.test.runner"/>

      <receiver android:name="android.appwidget.cts.provider.FirstAppWidgetProvider" >
          <intent-filter>
              <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
          </intent-filter>
          <meta-data android:name="android.appwidget.provider"
              android:resource="@xml/first_appwidget_info" />
      </receiver>

      <receiver android:name="android.appwidget.cts.provider.SecondAppWidgetProvider" >
          <intent-filter>
              <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
          </intent-filter>
          <meta-data android:name="android.appwidget.provider"
              android:resource="@xml/second_appwidget_info" />
      </receiver>

      <receiver android:name="android.appwidget.cts.provider.AppWidgetProviderWithFeatures$Provider1" >
          <intent-filter>
              <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
          </intent-filter>
          <meta-data android:name="android.appwidget.provider"
              android:resource="@xml/appwidget_info_with_feature1" />
      </receiver>

      <receiver android:name="android.appwidget.cts.provider.AppWidgetProviderWithFeatures$Provider2" >
          <intent-filter>
              <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
          </intent-filter>
          <meta-data android:name="android.appwidget.provider"
              android:resource="@xml/appwidget_info_with_feature2" />
      </receiver>

      <receiver android:name="android.appwidget.cts.provider.AppWidgetProviderWithFeatures$Provider3" >
          <intent-filter>
              <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
          </intent-filter>
          <meta-data android:name="android.appwidget.provider"
              android:resource="@xml/appwidget_info_with_feature3" />
      </receiver>

      <service android:name="android.appwidget.cts.service.MyAppWidgetService"
          android:permission="android.permission.BIND_REMOTEVIEWS">
      </service>

  </application>

  <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
      android:targetPackage="android.appwidget.cts"
      android:label="Tests for the app widget APIs.">
      <meta-data android:name="listener"
          android:value="com.android.cts.runner.CtsTestRunListener" />
  </instrumentation>

</manifest>
