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

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

    <string name="app_name">UiAutomator Test App</string>
    <string name="test1_description">This helps verify entering text into a pre-populated field. The pop-up dialog will echo the text entered after clicking submit. The initial value in the field must first be deleted.</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_item1_detail">Item1DetailActivity</string>
    <string name="buttonSubmit">Submit</string>
    <string name="item1_dialog_title">Text submitted</string>
    <string name="OK">OK</string>
    <string name="title_test_list">UiAutomator Tests</string>
    <string name="title_test_detail">Details</string>
    <string name="hello_world">Hello world!</string>
    <string name="title_activity_test2_detail">Test2DetailActivity</string>
    <string name="test2_description">This helps test selection of button using Instance, Text and Content Description. Once clicked, a dialog pops up to verify the properties of button clicked.</string>
    <string name="test2_description_2">This tests a Button text changing dynamically after a click. The test should attempt to find the button after it has changed using its new text.</string>
    <string name="test3_description">The tests should read the clock, then write the clock back into the EditText then press submit. A dialog will display the time it took from reading the clock until submit is press. This can be used to get an idea of performance differences.</string>
    <string name="button1">Button 1</string>
    <string name="button1long">Longclick Button 1</string>
    <string name="button2">Button 2</string>
    <string name="button2long">Longclick Button 2</string>
    <string name="button3">Button 3</string>
    <string name="button3long">Longclick Button 3</string>
    <string name="buttonBefore">Before</string>
    <string name="buttonAfter">After</string>
    <string name="dialog_title_result">Action results</string>
    <string name="now_displaying_results_for">Verifying scroll into view and list item selection. Now displaying results for:</string>
    <string name="title_activity_test3_detail">Performance test</string>
    <string name="test3ClockDescription">Performance clock</string>
    <string name="test3InitialClock">0000000000</string>
    <string name="test3_dialog_title">Time difference in ms</string>
    <string name="test5_CheckBox">CheckBox</string>
    <string name="test5_ToggleButton">ToggleButton</string>
    <string name="test5_Button">Button</string>
    <string name="test5_Button_Description">Description for Button</string>
    <string name="test5_Button_Disabled">Button D</string>
    <string name="title_section4">Section 4</string>
    <string name="title_section3">Section 3</string>
    <string name="title_section2">Section 2</string>
    <string name="title_section1">Section 1</string>
    <string name="title_activity_test4_detail">Test4DetailActivity</string>
    <string name="title_activity_test5_detail">Test5DetailActivity</string>
    <string name="title_activity_test6_detail">Test6DetailActivity</string>
    <string name="test_5_Widgets_collection">Widgets Collection</string>

</resources>
