content: /*
   * 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.pm;
  
  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.util.Log;
  
  import java.io.IOException;
  
  class PreferredActivity extends IntentFilter implements PreferredComponent.Callbacks {
      private static final String TAG = "PreferredActivity";
  
      private static final boolean DEBUG_FILTERS = false;
  
      final PreferredComponent mPref;
  
      PreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity,
              boolean always) {
          super(filter);
          mPref = new PreferredComponent(this, match, set, activity, always);
      }
  
      PreferredActivity(XmlPullParser parser) throws XmlPullParserException, IOException {
          mPref = new PreferredComponent(this, parser);
      }
  
      public void writeToXml(XmlSerializer serializer, boolean full) throws IOException {
          mPref.writeToXml(serializer, full);
          serializer.startTag(null, "filter");
              super.writeToXml(serializer);
          serializer.endTag(null, "filter");
      }
  
      public boolean onReadTag(String tagName, XmlPullParser parser) throws XmlPullParserException,
              IOException {
          if (tagName.equals("filter")) {
              if (DEBUG_FILTERS) {
                  Log.i(TAG, "Starting to parse filter...");
              }
              readFromXml(parser);
              if (DEBUG_FILTERS) {
                  Log.i(TAG, "Finished filter: depth=" + parser.getDepth() + " tag="
                          + parser.getName());
              }
          } else {
              PackageManagerService.reportSettingsProblem(Log.WARN,
                      "Unknown element under <preferred-activities>: " + parser.getName());
              XmlUtils.skipCurrentTag(parser);
          }
          return true;
      }
  
      @Override
      public String toString() {
          return "PreferredActivity{0x" + Integer.toHexString(System.identityHashCode(this))
                  + " " + mPref.mComponent.flattenToShortString() + "}";
      }
  }
  