Helper.java revision 6dc0177fe4212bc59e54260fdcbf779e0ee883c7
1436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme/*
2436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * Copyright (C) 2017 The Android Open Source Project
3436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme *
4436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * Licensed under the Apache License, Version 2.0 (the "License");
5436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * you may not use this file except in compliance with the License.
6436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * You may obtain a copy of the License at
7436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme *
8436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme *      http://www.apache.org/licenses/LICENSE-2.0
9436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme *
10436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * Unless required by applicable law or agreed to in writing, software
11436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * distributed under the License is distributed on an "AS IS" BASIS,
12436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * See the License for the specific language governing permissions and
14436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme * limitations under the License.
15436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme */
16436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme
17436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Lemepackage com.android.server.autofill;
18436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme
19436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Lemeimport android.os.Bundle;
20436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme
21436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Lemeimport java.util.Arrays;
22436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Lemeimport java.util.Objects;
23436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Lemeimport java.util.Set;
24436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme
259f9ee25515591ef33281708c0ab911962f4364a6Felipe Lemepublic final class Helper {
26436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme
279f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme    /**
289f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme     * Defines a logging flag that can be dynamically changed at runtime using
296dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme     * {@code cmd autofill set log_level debug}.
309f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme     */
319f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme    public static boolean sDebug = false;
329f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme
339f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme    /**
349f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme     * Defines a logging flag that can be dynamically changed at runtime using
356dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme     * {@code cmd autofill set log_level verbose}.
369f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme     */
379f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme    public static boolean sVerbose = false;
38436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme
396dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme    /**
406dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme     * Maximum number of partitions that can be allowed in a session.
416dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme     *
426dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme     * <p>Can be modified using {@code cmd autofill set max_partitions}.
436dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme     */
446dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme    static int sPartitionMaxCount = 10;
456dc0177fe4212bc59e54260fdcbf779e0ee883c7Felipe Leme
469a2e6058df51e94417dcedd4c7dd2a0cc380dcb1Felipe Leme    private Helper() {
479a2e6058df51e94417dcedd4c7dd2a0cc380dcb1Felipe Leme        throw new UnsupportedOperationException("contains static members only");
489a2e6058df51e94417dcedd4c7dd2a0cc380dcb1Felipe Leme    }
499a2e6058df51e94417dcedd4c7dd2a0cc380dcb1Felipe Leme
50436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme    static void append(StringBuilder builder, Bundle bundle) {
519f9ee25515591ef33281708c0ab911962f4364a6Felipe Leme        if (bundle == null || !sVerbose) {
5224d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme            builder.append("null");
5324d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme            return;
5424d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme        }
5524d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme        final Set<String> keySet = bundle.keySet();
5624d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme        builder.append("[Bundle with ").append(keySet.size()).append(" extras:");
5724d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme        for (String key : keySet) {
5824d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme            final Object value = bundle.get(key);
5924d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme            builder.append(' ').append(key).append('=');
6024d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme            builder.append((value instanceof Object[])
6124d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme                    ? Arrays.toString((Objects[]) value) : value);
62436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme        }
6324d5893b25ce62b7bc9ed9f35fa72b9d47f23cddFelipe Leme        builder.append(']');
64436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme    }
65436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme
66436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme    static String bundleToString(Bundle bundle) {
67436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme        final StringBuilder builder = new StringBuilder();
68436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme        append(builder, bundle);
69436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme        return builder.toString();
70436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme    }
71436ab6a91d64ef6036c67bb361d807e398fb2c4cFelipe Leme}
72