Home | History | Annotate | Download | only in targetprep
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.android.cts.tradefed.targetprep;
     17 
     18 import com.android.tradefed.device.DeviceNotAvailableException;
     19 import com.android.tradefed.device.ITestDevice;
     20 
     21 /**
     22  * {@link SettingsToggler} sets settings by using the "adb shell content" command.
     23  */
     24 public class SettingsToggler {
     25     private static final String GROUP_SECURE = "secure";
     26     private static final String GROUP_GLOBAL = "global";
     27 
     28     /** Sets a setting by deleting and then inserting the string value. */
     29     public static void setString(ITestDevice device, String group, String name, String value)
     30             throws DeviceNotAvailableException {
     31         deleteSetting(device, group, name);
     32         device.executeShellCommand(
     33                 "content insert"
     34                 + " --uri content://settings/" + group
     35                 + " --bind name:s:" + name
     36                 + " --bind value:s:" + value);
     37     }
     38 
     39     /** Sets a secure setting by deleting and then inserting the string value. */
     40     public static void setSecureString(ITestDevice device, String name, String value)
     41             throws DeviceNotAvailableException {
     42         setString(device, GROUP_SECURE, name, value);
     43     }
     44 
     45     /** Sets a global setting by deleting and then inserting the string value. */
     46     public static void setGlobalString(ITestDevice device, String name, String value)
     47             throws DeviceNotAvailableException {
     48         setString(device, GROUP_GLOBAL, name, value);
     49     }
     50 
     51     /** Sets a setting by deleting and then inserting the int value. */
     52     public static void setInt(ITestDevice device, String group, String name, int value)
     53             throws DeviceNotAvailableException {
     54         deleteSetting(device, group, name);
     55         device.executeShellCommand(
     56                 "content insert"
     57                 + " --uri content://settings/" + group
     58                 + " --bind name:s:" + name
     59                 + " --bind value:i:" + value);
     60     }
     61 
     62     /** Sets a secure setting by deleting and then inserting the int value. */
     63     public static void setSecureInt(ITestDevice device, String name, int value)
     64             throws DeviceNotAvailableException {
     65         setInt(device, GROUP_SECURE, name, value);
     66     }
     67 
     68     /** Sets a global setting by deleting and then inserting the int value. */
     69     public static void setGlobalInt(ITestDevice device, String name, int value)
     70             throws DeviceNotAvailableException {
     71         setInt(device, GROUP_GLOBAL, name, value);
     72     }
     73 
     74     public static void updateString(ITestDevice device, String group, String name, String value)
     75             throws DeviceNotAvailableException {
     76         device.executeShellCommand(
     77                 "content update"
     78                 + " --uri content://settings/" + group
     79                 + " --bind value:s:" + value
     80                 + " --where \"name='" + name + "'\"");
     81     }
     82 
     83     public static void updateSecureString(ITestDevice device, String name, String value)
     84             throws DeviceNotAvailableException {
     85         updateString(device, GROUP_SECURE, name, value);
     86     }
     87 
     88     public static void updateGlobalString(ITestDevice device, String name, String value)
     89             throws DeviceNotAvailableException {
     90         updateString(device, GROUP_GLOBAL, name, value);
     91     }
     92 
     93     public static void updateInt(ITestDevice device, String group, String name, int value)
     94             throws DeviceNotAvailableException {
     95         device.executeShellCommand(
     96                 "content update"
     97                 + " --uri content://settings/" + group
     98                 + " --bind value:i:" + value
     99                 + " --where \"name='" + name + "'\"");
    100     }
    101 
    102     public static void updateSecureInt(ITestDevice device, String name, int value)
    103             throws DeviceNotAvailableException {
    104         updateInt(device, GROUP_SECURE, name, value);
    105     }
    106 
    107     public static void updateGlobalInt(ITestDevice device, String name, int value)
    108             throws DeviceNotAvailableException {
    109         updateInt(device, GROUP_GLOBAL, name, value);
    110     }
    111 
    112     private static void deleteSetting(ITestDevice device, String group, String name)
    113             throws DeviceNotAvailableException {
    114         device.executeShellCommand(
    115                 "content delete"
    116                 + " --uri content://settings/" + group
    117                 + " --where \"name='" + name + "'\"");
    118     }
    119 }
    120