19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.server.am;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.IntentFilter;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.PrintWriterPrinter;
211d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackbornimport android.util.Printer;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.PrintWriter;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass BroadcastFilter extends IntentFilter {
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Back-pointer to the list this filter is in.
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final ReceiverList receiverList;
286c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn    final String packageName;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final String requiredPermission;
30b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn    final int owningUid;
315ac72a29593ab9a20337a2225df52bdf4754be02Dianne Hackborn    final int owningUserId;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    BroadcastFilter(IntentFilter _filter, ReceiverList _receiverList,
3420e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn            String _packageName, String _requiredPermission, int _owningUid, int _userId) {
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(_filter);
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        receiverList = _receiverList;
376c418d585e0a91054b168fde3130188afd006c98Dianne Hackborn        packageName = _packageName;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        requiredPermission = _requiredPermission;
39b4163a6e12ee7100c758c6d3d062ade1f2843fceDianne Hackborn        owningUid = _owningUid;
4020e809870d8ac1e5b848f2daf51b2272ef89bdfcDianne Hackborn        owningUserId = _userId;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void dump(PrintWriter pw, String prefix) {
441d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        dumpInReceiverList(pw, new PrintWriterPrinter(pw), prefix);
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        receiverList.dumpLocal(pw, prefix);
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4812527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn    public void dumpBrief(PrintWriter pw, String prefix) {
4912527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        dumpBroadcastFilterState(pw, prefix);
5012527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn    }
5112527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn
521d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn    public void dumpInReceiverList(PrintWriter pw, Printer pr, String prefix) {
531d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        super.dump(pr, prefix);
5412527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        dumpBroadcastFilterState(pw, prefix);
5512527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn    }
5612527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn
5712527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn    void dumpBroadcastFilterState(PrintWriter pw, String prefix) {
581d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        if (requiredPermission != null) {
591d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn            pw.print(prefix); pw.print("requiredPermission="); pw.println(requiredPermission);
601d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        }
611d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn    }
621d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
641d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        StringBuilder sb = new StringBuilder();
651d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        sb.append("BroadcastFilter{");
661d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        sb.append(Integer.toHexString(System.identityHashCode(this)));
67b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn        sb.append(" u");
68b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn        sb.append(owningUserId);
691d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        sb.append(' ');
701d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        sb.append(receiverList);
711d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        sb.append('}');
721d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn        return sb.toString();
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
75