Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 849d51fa authored by Brint E. Kriebel's avatar Brint E. Kriebel
Browse files

Merge branch 'cm-11.0' into stable/cm-11.0

parents 63d0b47a 2658ff83
Loading
Loading
Loading
Loading
+84 −51
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -56,13 +57,21 @@ public class ThemeManager {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    Iterator<ThemeChangeListener> iterator = mChangeListeners.iterator();
                    while(iterator.hasNext()) {
                    synchronized (mChangeListeners) {
                        List<ThemeChangeListener> listenersToRemove = new ArrayList
                                <ThemeChangeListener>();
                        for (ThemeChangeListener listener : mChangeListeners) {
                            try {
                            iterator.next().onProgress(progress);
                                listener.onProgress(progress);
                            } catch (Throwable e) {
                                Log.w(TAG, "Unable to update theme change progress", e);
                            iterator.remove();
                                listenersToRemove.add(listener);
                            }
                        }
                        if (listenersToRemove.size() > 0) {
                            for (ThemeChangeListener listener : listenersToRemove) {
                                mChangeListeners.remove(listener);
                            }
                        }
                    }
                }
@@ -74,13 +83,21 @@ public class ThemeManager {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    Iterator<ThemeChangeListener> iterator = mChangeListeners.iterator();
                    while(iterator.hasNext()) {
                    synchronized (mChangeListeners) {
                        List<ThemeChangeListener> listenersToRemove = new ArrayList
                                <ThemeChangeListener>();
                        for (ThemeChangeListener listener : mChangeListeners) {
                            try {
                            iterator.next().onFinish(isSuccess);
                                listener.onFinish(isSuccess);
                            } catch (Throwable e) {
                                Log.w(TAG, "Unable to update theme change listener", e);
                            iterator.remove();
                                listenersToRemove.add(listener);
                            }
                        }
                        if (listenersToRemove.size() > 0) {
                            for (ThemeChangeListener listener : listenersToRemove) {
                                mChangeListeners.remove(listener);
                            }
                        }
                    }
                }
@@ -95,13 +112,21 @@ public class ThemeManager {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    Iterator<ThemeProcessingListener> iterator = mProcessingListeners.iterator();
                    while(iterator.hasNext()) {
                    synchronized (mProcessingListeners) {
                        List<ThemeProcessingListener> listenersToRemove = new ArrayList
                                <ThemeProcessingListener>();
                        for (ThemeProcessingListener listener : mProcessingListeners) {
                            try {
                            iterator.next().onFinishedProcessing(pkgName);
                                listener.onFinishedProcessing(pkgName);
                            } catch (Throwable e) {
                                Log.w(TAG, "Unable to update theme change progress", e);
                            iterator.remove();
                                listenersToRemove.add(listener);
                            }
                        }
                        if (listenersToRemove.size() > 0) {
                            for (ThemeProcessingListener listener : listenersToRemove) {
                                mProcessingListeners.remove(listener);
                            }
                        }
                    }
                }
@@ -111,6 +136,7 @@ public class ThemeManager {


    public void addClient(ThemeChangeListener listener) {
        synchronized (mChangeListeners) {
            if (mChangeListeners.contains(listener)) {
                throw new IllegalArgumentException("Client was already added ");
            }
@@ -123,8 +149,10 @@ public class ThemeManager {
            }
            mChangeListeners.add(listener);
        }
    }

    public void removeClient(ThemeChangeListener listener) {
        synchronized (mChangeListeners) {
            mChangeListeners.remove(listener);
            if (mChangeListeners.size() == 0) {
                try {
@@ -134,6 +162,7 @@ public class ThemeManager {
                }
            }
        }
    }

    public void onClientPaused(ThemeChangeListener listener) {
        removeClient(listener);
@@ -152,6 +181,7 @@ public class ThemeManager {
     * @param listener ThemeChangeListener to register
     */
    public void registerProcessingListener(ThemeProcessingListener listener) {
        synchronized (mProcessingListeners) {
            if (mProcessingListeners.contains(listener)) {
                throw new IllegalArgumentException("Listener was already added ");
            }
@@ -164,12 +194,14 @@ public class ThemeManager {
            }
            mProcessingListeners.add(listener);
        }
    }

    /**
     * Unregister a ThemeChangeListener.
     * @param listener ThemeChangeListener to unregister
     */
    public void unregisterProcessingListener(ThemeChangeListener listener) {
        synchronized (mProcessingListeners) {
            mProcessingListeners.remove(listener);
            if (mProcessingListeners.size() == 0) {
                try {
@@ -179,6 +211,7 @@ public class ThemeManager {
                }
            }
        }
    }

    /**
     * Convenience method. Applies the entire theme.
+42 −2
Original line number Diff line number Diff line
@@ -348,8 +348,10 @@ public class RecoverySystem {
     *
     * @throws IOException  if writing the recovery command file
     * fails, or if the reboot itself fails.
     *
     * @hide
     */
    public static void rebootWipeUserData(Context context) throws IOException {
    private static void doRebootWipeUserData(Context context, boolean wipeMedia) throws IOException {
        final ConditionVariable condition = new ConditionVariable();

        Intent intent = new Intent("android.intent.action.MASTER_CLEAR_NOTIFICATION");
@@ -365,7 +367,45 @@ public class RecoverySystem {
        // Block until the ordered broadcast has completed.
        condition.block();

        bootCommand(context, "--wipe_data\n--locale=" + Locale.getDefault().toString());
        String cmd = "--wipe_data\n";
        if (wipeMedia) {
            cmd += "--wipe_media\n";
        }
        cmd += "--locale=" + Locale.getDefault().toString();

        bootCommand(context, cmd);
    }

    /**
     * Reboots the device and wipes the user data partition.  This is
     * sometimes called a "factory reset", which is something of a
     * misnomer because the system partition is not restored to its
     * factory state.
     * Requires the {@link android.Manifest.permission#REBOOT} permission.
     *
     * @param context  the Context to use
     *
     * @throws IOException  if writing the recovery command file
     * fails, or if the reboot itself fails.
     */
    public static void rebootWipeUserData(Context context) throws IOException {
        doRebootWipeUserData(context, false);
    }

    /**
     * Reboots the device and formats the user data partition.  This is
     * like rebootWipeUserData except that it forces the data partition
     * to be formatted on datamedia devices.
     * Requires the {@link android.Manifest.permission#REBOOT} permission.
     *
     * @param context  the Context to use
     *
     * @throws IOException  if writing the recovery command file
     * fails, or if the reboot itself fails.
     * @hide
     */
    public static void rebootFormatUserData(Context context) throws IOException {
        doRebootWipeUserData(context, true);
    }

    /**
+17 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.net.TrafficStats.MB_IN_BYTES;

import android.content.ContentResolver;
import android.content.Context;
import android.hardware.usb.UsbManager;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
@@ -380,6 +381,22 @@ public class StorageManager {
       }
    }

    /**
     * Switch USB Mass Storage (UMS) on the device.
     *
     * @hide
     */
    public void setUsbMassStorageEnabled(boolean enable) {
        UsbManager manager = new UsbManager(null, null);
        if (enable && manager.isFunctionEnabled(UsbManager.USB_FUNCTION_MASS_STORAGE)) {
            if(!isUsbMassStorageEnabled()) {
                enableUsbMassStorage();
            }
        } else if (isUsbMassStorageEnabled()) {
            disableUsbMassStorage();
        }
    }

    /**
     * Enables USB Mass Storage (UMS) on the device.
     *
+41 −0
Original line number Diff line number Diff line
@@ -58,8 +58,10 @@ import android.util.Log;
import com.android.internal.widget.ILockSettings;

import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;

/**
@@ -2462,6 +2464,15 @@ public final class Settings {
        public static final String HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY =
                "hide_rotation_lock_toggle_for_accessibility";

        /**
         * Call recording format value
         * 0: AMR_WB
         * 1: MPEG_4
         * Default: 0
         * @hide
         */
        public static final String CALL_RECORDING_FORMAT = "call_recording_format";

        /**
         * Whether the phone vibrates when it is ringing due to an incoming call. This will
         * be used by Phone and Setting apps; it shouldn't affect other apps.
@@ -4241,6 +4252,30 @@ public final class Settings {
            return sNameValueCache.getStringForUser(resolver, name, userHandle);
        }

        /**
         * Get a delimited string returned as a list
         * @param resolver to access the database with
         * @param name to store
         * @param delimiter to split the list with
         * @return list of strings for a specific Settings.Secure item
         * @hide
         */
        public static List<String> getDelimitedStringAsList(ContentResolver resolver, String name,
                String delimiter) {
            String baseString = Settings.Secure.getString(resolver, name);
            List<String> list = new ArrayList<String>();
            if (!TextUtils.isEmpty(baseString)) {
                final String[] array = TextUtils.split(baseString, delimiter);
                for (String item : array) {
                    if (TextUtils.isEmpty(item)) {
                        continue;
                    }
                    list.add(item);
                }
            }
            return list;
        }

        /**
         * Store a name/value pair into the database.
         * @param resolver to access the database with
@@ -4873,6 +4908,12 @@ public final class Settings {
         */
        public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url";

        /**
         * Known good originating source sms addresses
         * @hide
         */
        public static final String PROTECTED_SMS_ADDRESSES = "protected_sms_addresses";

        /**
         * Settings classname to launch when Settings is clicked from All
         * Applications.  Needed because of user testing between the old
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ public class QSConstants {
        public static final String TILE_NETWORKADB = "toggleNetworkAdb";
        public static final String TILE_COMPASS = "toggleCompass";
        public static final String TILE_HEADS_UP = "toggleHeadsUp";
        public static final String TILE_THEMES = "toggleThemes";

        public static final String TILE_DELIMITER = "|";
        public static ArrayList<String> TILES_DEFAULT = new ArrayList<String>();
Loading