summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/PreferredComponent.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/PreferredComponent.java')
-rw-r--r--services/java/com/android/server/PreferredComponent.java234
1 files changed, 0 insertions, 234 deletions
diff --git a/services/java/com/android/server/PreferredComponent.java b/services/java/com/android/server/PreferredComponent.java
deleted file mode 100644
index a7af252..0000000
--- a/services/java/com/android/server/PreferredComponent.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.server;
-
-import com.android.internal.util.XmlUtils;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlSerializer;
-
-import android.content.ComponentName;
-import android.content.IntentFilter;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ResolveInfo;
-import android.util.Slog;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.List;
-
-public class PreferredComponent {
- private static final String TAG_SET = "set";
- private static final String ATTR_ALWAYS = "always"; // boolean
- private static final String ATTR_MATCH = "match"; // number
- private static final String ATTR_NAME = "name"; // component name
- private static final String ATTR_SET = "set"; // number
-
- public final int mMatch;
- public final ComponentName mComponent;
- // Whether this is to be the one that's always chosen. If false, it's the most recently chosen.
- public boolean mAlways;
-
- private final String[] mSetPackages;
- private final String[] mSetClasses;
- private final String[] mSetComponents;
- private final String mShortComponent;
- private String mParseError;
-
- private final Callbacks mCallbacks;
-
- public interface Callbacks {
- public boolean onReadTag(String tagName, XmlPullParser parser)
- throws XmlPullParserException, IOException;
- }
-
- public PreferredComponent(Callbacks callbacks, int match, ComponentName[] set,
- ComponentName component, boolean always) {
- mCallbacks = callbacks;
- mMatch = match&IntentFilter.MATCH_CATEGORY_MASK;
- mComponent = component;
- mAlways = always;
- mShortComponent = component.flattenToShortString();
- mParseError = null;
- if (set != null) {
- final int N = set.length;
- String[] myPackages = new String[N];
- String[] myClasses = new String[N];
- String[] myComponents = new String[N];
- for (int i=0; i<N; i++) {
- ComponentName cn = set[i];
- if (cn == null) {
- mSetPackages = null;
- mSetClasses = null;
- mSetComponents = null;
- return;
- }
- myPackages[i] = cn.getPackageName().intern();
- myClasses[i] = cn.getClassName().intern();
- myComponents[i] = cn.flattenToShortString();
- }
- mSetPackages = myPackages;
- mSetClasses = myClasses;
- mSetComponents = myComponents;
- } else {
- mSetPackages = null;
- mSetClasses = null;
- mSetComponents = null;
- }
- }
-
- public PreferredComponent(Callbacks callbacks, XmlPullParser parser)
- throws XmlPullParserException, IOException {
- mCallbacks = callbacks;
- mShortComponent = parser.getAttributeValue(null, ATTR_NAME);
- mComponent = ComponentName.unflattenFromString(mShortComponent);
- if (mComponent == null) {
- mParseError = "Bad activity name " + mShortComponent;
- }
- String matchStr = parser.getAttributeValue(null, ATTR_MATCH);
- mMatch = matchStr != null ? Integer.parseInt(matchStr, 16) : 0;
- String setCountStr = parser.getAttributeValue(null, ATTR_SET);
- int setCount = setCountStr != null ? Integer.parseInt(setCountStr) : 0;
- String alwaysStr = parser.getAttributeValue(null, ATTR_ALWAYS);
- mAlways = alwaysStr != null ? Boolean.parseBoolean(alwaysStr) : true;
-
- String[] myPackages = setCount > 0 ? new String[setCount] : null;
- String[] myClasses = setCount > 0 ? new String[setCount] : null;
- String[] myComponents = setCount > 0 ? new String[setCount] : null;
-
- int setPos = 0;
-
- int outerDepth = parser.getDepth();
- int type;
- while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
- && (type != XmlPullParser.END_TAG
- || parser.getDepth() > outerDepth)) {
- if (type == XmlPullParser.END_TAG
- || type == XmlPullParser.TEXT) {
- continue;
- }
-
- String tagName = parser.getName();
- //Log.i(TAG, "Parse outerDepth=" + outerDepth + " depth="
- // + parser.getDepth() + " tag=" + tagName);
- if (tagName.equals(TAG_SET)) {
- String name = parser.getAttributeValue(null, ATTR_NAME);
- if (name == null) {
- if (mParseError == null) {
- mParseError = "No name in set tag in preferred activity "
- + mShortComponent;
- }
- } else if (setPos >= setCount) {
- if (mParseError == null) {
- mParseError = "Too many set tags in preferred activity "
- + mShortComponent;
- }
- } else {
- ComponentName cn = ComponentName.unflattenFromString(name);
- if (cn == null) {
- if (mParseError == null) {
- mParseError = "Bad set name " + name + " in preferred activity "
- + mShortComponent;
- }
- } else {
- myPackages[setPos] = cn.getPackageName();
- myClasses[setPos] = cn.getClassName();
- myComponents[setPos] = name;
- setPos++;
- }
- }
- XmlUtils.skipCurrentTag(parser);
- } else if (!mCallbacks.onReadTag(tagName, parser)) {
- Slog.w("PreferredComponent", "Unknown element: " + parser.getName());
- XmlUtils.skipCurrentTag(parser);
- }
- }
-
- if (setPos != setCount) {
- if (mParseError == null) {
- mParseError = "Not enough set tags (expected " + setCount
- + " but found " + setPos + ") in " + mShortComponent;
- }
- }
-
- mSetPackages = myPackages;
- mSetClasses = myClasses;
- mSetComponents = myComponents;
- }
-
- public String getParseError() {
- return mParseError;
- }
-
- public void writeToXml(XmlSerializer serializer, boolean full) throws IOException {
- final int NS = mSetClasses != null ? mSetClasses.length : 0;
- serializer.attribute(null, ATTR_NAME, mShortComponent);
- if (full) {
- if (mMatch != 0) {
- serializer.attribute(null, ATTR_MATCH, Integer.toHexString(mMatch));
- }
- serializer.attribute(null, ATTR_ALWAYS, Boolean.toString(mAlways));
- serializer.attribute(null, ATTR_SET, Integer.toString(NS));
- for (int s=0; s<NS; s++) {
- serializer.startTag(null, TAG_SET);
- serializer.attribute(null, ATTR_NAME, mSetComponents[s]);
- serializer.endTag(null, TAG_SET);
- }
- }
- }
-
- public boolean sameSet(List<ResolveInfo> query, int priority) {
- if (mSetPackages == null) return false;
- final int NQ = query.size();
- final int NS = mSetPackages.length;
- int numMatch = 0;
- for (int i=0; i<NQ; i++) {
- ResolveInfo ri = query.get(i);
- if (ri.priority != priority) continue;
- ActivityInfo ai = ri.activityInfo;
- boolean good = false;
- for (int j=0; j<NS; j++) {
- if (mSetPackages[j].equals(ai.packageName)
- && mSetClasses[j].equals(ai.name)) {
- numMatch++;
- good = true;
- break;
- }
- }
- if (!good) return false;
- }
- return numMatch == NS;
- }
-
- public void dump(PrintWriter out, String prefix, Object ident) {
- out.print(prefix); out.print(
- Integer.toHexString(System.identityHashCode(ident)));
- out.print(' ');
- out.println(mShortComponent);
- out.print(prefix); out.print(" mMatch=0x");
- out.print(Integer.toHexString(mMatch));
- out.print(" mAlways="); out.println(mAlways);
- if (mSetComponents != null) {
- out.print(prefix); out.println(" Selected from:");
- for (int i=0; i<mSetComponents.length; i++) {
- out.print(prefix); out.print(" ");
- out.println(mSetComponents[i]);
- }
- }
- }
-}