Loading core/java/com/android/internal/statusbar/IStatusBarService.aidl +3 −1 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.internal.statusbar; import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; /** @hide */ /** @hide */ interface IStatusBarService interface IStatusBarService Loading @@ -31,7 +32,8 @@ interface IStatusBarService void removeIcon(String slot); void removeIcon(String slot); // ---- Methods below are for use by the status bar policy services ---- // ---- Methods below are for use by the status bar policy services ---- void registerStatusBar(IStatusBar callbacks, out StatusBarIconList state); void registerStatusBar(IStatusBar callbacks, out StatusBarIconList iconList, out List<IBinder> notificationKeys, out List<StatusBarNotification> notifications); void visibilityChanged(boolean visible); void visibilityChanged(boolean visible); void onNotificationClick(String pkg, String tag, int id); void onNotificationClick(String pkg, String tag, int id); void onClearAllNotifications(); void onClearAllNotifications(); Loading core/java/com/android/internal/statusbar/StatusBarNotificationList.javadeleted 100644 → 0 +0 −163 Original line number Original line Diff line number Diff line /* * Copyright (C) 2010 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.internal.statusbar; import android.os.Binder; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import java.io.PrintWriter; import java.util.ArrayList; /** * Contains a list of status bar notifications and IBinder keys in no particular order. */ public class StatusBarNotificationList implements Parcelable { private class Entry { IBinder key; public StatusBarNotification notification; void writeToParcel(Parcel out, int flags) { out.writeStrongBinder(key); notification.writeToParcel(out, flags); } void readFromParcel(Parcel in) { key = in.readStrongBinder(); notification = new StatusBarNotification(in); } public Entry clone() { Entry that = new Entry(); that.key = this.key; that.notification = this.notification.clone(); return that; } } private ArrayList<Entry> mEntries = new ArrayList<Entry>(); public StatusBarNotificationList() { } public StatusBarNotificationList(Parcel in) { readFromParcel(in); } public void readFromParcel(Parcel in) { final int N = in.readInt(); for (int i=0; i<N; i++) { Entry e = new Entry(); e.readFromParcel(in); mEntries.add(e); } } public void writeToParcel(Parcel out, int flags) { final int N = mEntries.size(); out.writeInt(N); for (int i=0; i<N; i++) { mEntries.get(i).writeToParcel(out, flags); } } public int describeContents() { return 0; } /** * Parcelable.Creator that instantiates StatusBarNotificationList objects */ public static final Parcelable.Creator<StatusBarNotificationList> CREATOR = new Parcelable.Creator<StatusBarNotificationList>() { public StatusBarNotificationList createFromParcel(Parcel parcel) { return new StatusBarNotificationList(parcel); } public StatusBarNotificationList[] newArray(int size) { return new StatusBarNotificationList[size]; } }; public void copyFrom(StatusBarNotificationList that) { mEntries.clear(); final int N = that.mEntries.size(); for (int i=0; i<N; i++) { mEntries.add(that.mEntries.get(i).clone()); } } public void dump(PrintWriter pw) { final int N = mEntries.size(); pw.println("Notification list:"); for (int i=0; i<N; i++) { Entry e = mEntries.get(i); pw.printf(" %2d: %s\n", i, e.notification.toString()); } } public int size() { return mEntries.size(); } public void add(IBinder key, StatusBarNotification notification) { if (notification == null) throw new NullPointerException(); Entry entry = new Entry(); entry.key = key; entry.notification = notification.clone(); mEntries.add(entry); } public void update(IBinder key, StatusBarNotification notification) { final int index = getIndex(key); if (index < 0) { throw new IllegalArgumentException("got invalid key: " + key); } mEntries.get(index).notification = notification.clone(); } public void remove(IBinder key) { final int index = getIndex(key); if (index < 0) { throw new IllegalArgumentException("got invalid key: " + key); } mEntries.remove(index); } public int getIndex(IBinder key) { final ArrayList<Entry> entries = mEntries; final int N = entries.size(); for (int i=0; i<N; i++) { if (entries.get(i).key == key) { return i; } } return -1; } public StatusBarNotification getNotification(int index) { return mEntries.get(index).notification; } } packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +0 −1 Original line number Original line Diff line number Diff line Loading @@ -25,7 +25,6 @@ import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotificationList; /** /** * This class takes the functions from IStatusBar that come in on * This class takes the functions from IStatusBar that come in on Loading packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java +21 −2 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemClock; import android.util.Log; import android.util.Slog; import android.util.Slog; import android.view.Gravity; import android.view.Gravity; import android.view.View; import android.view.View; Loading @@ -36,6 +37,10 @@ import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; import java.util.Arrays; import java.util.ArrayList; public abstract class StatusBarService extends Service implements CommandQueue.Callbacks { public abstract class StatusBarService extends Service implements CommandQueue.Callbacks { private static final String TAG = "StatusBarService"; private static final String TAG = "StatusBarService"; Loading @@ -53,17 +58,19 @@ public abstract class StatusBarService extends Service implements CommandQueue.C public void onCreate() { public void onCreate() { // Connect in to the status bar manager service // Connect in to the status bar manager service StatusBarIconList iconList = new StatusBarIconList(); StatusBarIconList iconList = new StatusBarIconList(); ArrayList<IBinder> notificationKeys = new ArrayList<IBinder>(); ArrayList<StatusBarNotification> notifications = new ArrayList<StatusBarNotification>(); mCommandQueue = new CommandQueue(this, iconList); mCommandQueue = new CommandQueue(this, iconList); mBarService = IStatusBarService.Stub.asInterface( mBarService = IStatusBarService.Stub.asInterface( ServiceManager.getService(Context.STATUS_BAR_SERVICE)); ServiceManager.getService(Context.STATUS_BAR_SERVICE)); try { try { mBarService.registerStatusBar(mCommandQueue, iconList); mBarService.registerStatusBar(mCommandQueue, iconList, notificationKeys, notifications); } catch (RemoteException ex) { } catch (RemoteException ex) { // If the system process isn't there we're doomed anyway. // If the system process isn't there we're doomed anyway. } } // Set up the initial icon state // Set up the initial icon state final int N = iconList.size(); int N = iconList.size(); int viewIndex = 0; int viewIndex = 0; for (int i=0; i<N; i++) { for (int i=0; i<N; i++) { StatusBarIcon icon = iconList.getIcon(i); StatusBarIcon icon = iconList.getIcon(i); Loading @@ -73,6 +80,18 @@ public abstract class StatusBarService extends Service implements CommandQueue.C } } } } // Set up the initial notification state N = notificationKeys.size(); Slog.d(TAG, "installing " + N + " initial notifications"); if (N == notifications.size()) { for (int i=0; i<N; i++) { addNotification(notificationKeys.get(i), notifications.get(i)); } } else { Log.wtf(TAG, "Notification list length mismatch: keys=" + N + " notifications=" + notifications.size()); } // Put up the view // Put up the view addStatusBarView(); addStatusBarView(); } } Loading services/java/com/android/server/status/StatusBarManagerService.java +31 −8 Original line number Original line Diff line number Diff line Loading @@ -37,12 +37,13 @@ import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotificationList; import java.io.FileDescriptor; import java.io.FileDescriptor; import java.io.PrintWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.ArrayList; import java.util.HashMap; import java.util.HashMap; import java.util.List; import java.util.Map; /** /** Loading @@ -62,7 +63,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub NotificationCallbacks mNotificationCallbacks; NotificationCallbacks mNotificationCallbacks; volatile IStatusBar mBar; volatile IStatusBar mBar; StatusBarIconList mIcons = new StatusBarIconList(); StatusBarIconList mIcons = new StatusBarIconList(); StatusBarNotificationList mNotifications = new StatusBarNotificationList(); HashMap<IBinder,StatusBarNotification> mNotifications = new HashMap<IBinder,StatusBarNotification>(); // for disabling the status bar // for disabling the status bar ArrayList<DisableRecord> mDisableRecords = new ArrayList<DisableRecord>(); ArrayList<DisableRecord> mDisableRecords = new ArrayList<DisableRecord>(); Loading Loading @@ -250,11 +252,20 @@ public class StatusBarManagerService extends IStatusBarService.Stub // ================================================================================ // ================================================================================ // Callbacks from the status bar service. // Callbacks from the status bar service. // ================================================================================ // ================================================================================ public void registerStatusBar(IStatusBar bar, StatusBarIconList iconList) { public void registerStatusBar(IStatusBar bar, StatusBarIconList iconList, List<IBinder> notificationKeys, List<StatusBarNotification> notifications) { Slog.i(TAG, "registerStatusBar bar=" + bar); Slog.i(TAG, "registerStatusBar bar=" + bar); mBar = bar; mBar = bar; synchronized (mIcons) { iconList.copyFrom(mIcons); iconList.copyFrom(mIcons); } } synchronized (mNotifications) { for (Map.Entry<IBinder,StatusBarNotification> e: mNotifications.entrySet()) { notificationKeys.add(e.getKey()); notifications.add(e.getValue()); } } } /** /** * The status bar service should call this when the user changes whether * The status bar service should call this when the user changes whether Loading @@ -277,8 +288,9 @@ public class StatusBarManagerService extends IStatusBarService.Stub // ================================================================================ // ================================================================================ public IBinder addNotification(StatusBarNotification notification) { public IBinder addNotification(StatusBarNotification notification) { synchronized (mNotifications) { synchronized (mNotifications) { Slog.d(TAG, "addNotification notification=" + notification); IBinder key = new Binder(); IBinder key = new Binder(); mNotifications.add(key, notification); mNotifications.put(key, notification); if (mBar != null) { if (mBar != null) { try { try { mBar.addNotification(key, notification); mBar.addNotification(key, notification); Loading @@ -291,7 +303,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub public void updateNotification(IBinder key, StatusBarNotification notification) { public void updateNotification(IBinder key, StatusBarNotification notification) { synchronized (mNotifications) { synchronized (mNotifications) { mNotifications.update(key, notification); if (!mNotifications.containsKey(key)) { throw new IllegalArgumentException("updateNotification key not found: " + key); } mNotifications.put(key, notification); if (mBar != null) { if (mBar != null) { try { try { mBar.updateNotification(key, notification); mBar.updateNotification(key, notification); Loading @@ -303,7 +318,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub public void removeNotification(IBinder key) { public void removeNotification(IBinder key) { synchronized (mNotifications) { synchronized (mNotifications) { mNotifications.remove(key); final StatusBarNotification n = mNotifications.remove(key); if (n == null) { throw new IllegalArgumentException("removeNotification key not found: " + key); } if (mBar != null) { if (mBar != null) { try { try { mBar.removeNotification(key); mBar.removeNotification(key); Loading Loading @@ -386,7 +404,12 @@ public class StatusBarManagerService extends IStatusBarService.Stub } } synchronized (mNotifications) { synchronized (mNotifications) { mNotifications.dump(pw); int i=0; pw.println("Notification list:"); for (Map.Entry<IBinder,StatusBarNotification> e: mNotifications.entrySet()) { pw.printf(" %2d: %s\n", i, e.getValue().toString()); i++; } } } synchronized (mDisableRecords) { synchronized (mDisableRecords) { Loading Loading
core/java/com/android/internal/statusbar/IStatusBarService.aidl +3 −1 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.internal.statusbar; import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; /** @hide */ /** @hide */ interface IStatusBarService interface IStatusBarService Loading @@ -31,7 +32,8 @@ interface IStatusBarService void removeIcon(String slot); void removeIcon(String slot); // ---- Methods below are for use by the status bar policy services ---- // ---- Methods below are for use by the status bar policy services ---- void registerStatusBar(IStatusBar callbacks, out StatusBarIconList state); void registerStatusBar(IStatusBar callbacks, out StatusBarIconList iconList, out List<IBinder> notificationKeys, out List<StatusBarNotification> notifications); void visibilityChanged(boolean visible); void visibilityChanged(boolean visible); void onNotificationClick(String pkg, String tag, int id); void onNotificationClick(String pkg, String tag, int id); void onClearAllNotifications(); void onClearAllNotifications(); Loading
core/java/com/android/internal/statusbar/StatusBarNotificationList.javadeleted 100644 → 0 +0 −163 Original line number Original line Diff line number Diff line /* * Copyright (C) 2010 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.internal.statusbar; import android.os.Binder; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import java.io.PrintWriter; import java.util.ArrayList; /** * Contains a list of status bar notifications and IBinder keys in no particular order. */ public class StatusBarNotificationList implements Parcelable { private class Entry { IBinder key; public StatusBarNotification notification; void writeToParcel(Parcel out, int flags) { out.writeStrongBinder(key); notification.writeToParcel(out, flags); } void readFromParcel(Parcel in) { key = in.readStrongBinder(); notification = new StatusBarNotification(in); } public Entry clone() { Entry that = new Entry(); that.key = this.key; that.notification = this.notification.clone(); return that; } } private ArrayList<Entry> mEntries = new ArrayList<Entry>(); public StatusBarNotificationList() { } public StatusBarNotificationList(Parcel in) { readFromParcel(in); } public void readFromParcel(Parcel in) { final int N = in.readInt(); for (int i=0; i<N; i++) { Entry e = new Entry(); e.readFromParcel(in); mEntries.add(e); } } public void writeToParcel(Parcel out, int flags) { final int N = mEntries.size(); out.writeInt(N); for (int i=0; i<N; i++) { mEntries.get(i).writeToParcel(out, flags); } } public int describeContents() { return 0; } /** * Parcelable.Creator that instantiates StatusBarNotificationList objects */ public static final Parcelable.Creator<StatusBarNotificationList> CREATOR = new Parcelable.Creator<StatusBarNotificationList>() { public StatusBarNotificationList createFromParcel(Parcel parcel) { return new StatusBarNotificationList(parcel); } public StatusBarNotificationList[] newArray(int size) { return new StatusBarNotificationList[size]; } }; public void copyFrom(StatusBarNotificationList that) { mEntries.clear(); final int N = that.mEntries.size(); for (int i=0; i<N; i++) { mEntries.add(that.mEntries.get(i).clone()); } } public void dump(PrintWriter pw) { final int N = mEntries.size(); pw.println("Notification list:"); for (int i=0; i<N; i++) { Entry e = mEntries.get(i); pw.printf(" %2d: %s\n", i, e.notification.toString()); } } public int size() { return mEntries.size(); } public void add(IBinder key, StatusBarNotification notification) { if (notification == null) throw new NullPointerException(); Entry entry = new Entry(); entry.key = key; entry.notification = notification.clone(); mEntries.add(entry); } public void update(IBinder key, StatusBarNotification notification) { final int index = getIndex(key); if (index < 0) { throw new IllegalArgumentException("got invalid key: " + key); } mEntries.get(index).notification = notification.clone(); } public void remove(IBinder key) { final int index = getIndex(key); if (index < 0) { throw new IllegalArgumentException("got invalid key: " + key); } mEntries.remove(index); } public int getIndex(IBinder key) { final ArrayList<Entry> entries = mEntries; final int N = entries.size(); for (int i=0; i<N; i++) { if (entries.get(i).key == key) { return i; } } return -1; } public StatusBarNotification getNotification(int index) { return mEntries.get(index).notification; } }
packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +0 −1 Original line number Original line Diff line number Diff line Loading @@ -25,7 +25,6 @@ import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotificationList; /** /** * This class takes the functions from IStatusBar that come in on * This class takes the functions from IStatusBar that come in on Loading
packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java +21 −2 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemClock; import android.util.Log; import android.util.Slog; import android.util.Slog; import android.view.Gravity; import android.view.Gravity; import android.view.View; import android.view.View; Loading @@ -36,6 +37,10 @@ import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; import java.util.Arrays; import java.util.ArrayList; public abstract class StatusBarService extends Service implements CommandQueue.Callbacks { public abstract class StatusBarService extends Service implements CommandQueue.Callbacks { private static final String TAG = "StatusBarService"; private static final String TAG = "StatusBarService"; Loading @@ -53,17 +58,19 @@ public abstract class StatusBarService extends Service implements CommandQueue.C public void onCreate() { public void onCreate() { // Connect in to the status bar manager service // Connect in to the status bar manager service StatusBarIconList iconList = new StatusBarIconList(); StatusBarIconList iconList = new StatusBarIconList(); ArrayList<IBinder> notificationKeys = new ArrayList<IBinder>(); ArrayList<StatusBarNotification> notifications = new ArrayList<StatusBarNotification>(); mCommandQueue = new CommandQueue(this, iconList); mCommandQueue = new CommandQueue(this, iconList); mBarService = IStatusBarService.Stub.asInterface( mBarService = IStatusBarService.Stub.asInterface( ServiceManager.getService(Context.STATUS_BAR_SERVICE)); ServiceManager.getService(Context.STATUS_BAR_SERVICE)); try { try { mBarService.registerStatusBar(mCommandQueue, iconList); mBarService.registerStatusBar(mCommandQueue, iconList, notificationKeys, notifications); } catch (RemoteException ex) { } catch (RemoteException ex) { // If the system process isn't there we're doomed anyway. // If the system process isn't there we're doomed anyway. } } // Set up the initial icon state // Set up the initial icon state final int N = iconList.size(); int N = iconList.size(); int viewIndex = 0; int viewIndex = 0; for (int i=0; i<N; i++) { for (int i=0; i<N; i++) { StatusBarIcon icon = iconList.getIcon(i); StatusBarIcon icon = iconList.getIcon(i); Loading @@ -73,6 +80,18 @@ public abstract class StatusBarService extends Service implements CommandQueue.C } } } } // Set up the initial notification state N = notificationKeys.size(); Slog.d(TAG, "installing " + N + " initial notifications"); if (N == notifications.size()) { for (int i=0; i<N; i++) { addNotification(notificationKeys.get(i), notifications.get(i)); } } else { Log.wtf(TAG, "Notification list length mismatch: keys=" + N + " notifications=" + notifications.size()); } // Put up the view // Put up the view addStatusBarView(); addStatusBarView(); } } Loading
services/java/com/android/server/status/StatusBarManagerService.java +31 −8 Original line number Original line Diff line number Diff line Loading @@ -37,12 +37,13 @@ import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotification; import com.android.internal.statusbar.StatusBarNotificationList; import java.io.FileDescriptor; import java.io.FileDescriptor; import java.io.PrintWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.ArrayList; import java.util.HashMap; import java.util.HashMap; import java.util.List; import java.util.Map; /** /** Loading @@ -62,7 +63,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub NotificationCallbacks mNotificationCallbacks; NotificationCallbacks mNotificationCallbacks; volatile IStatusBar mBar; volatile IStatusBar mBar; StatusBarIconList mIcons = new StatusBarIconList(); StatusBarIconList mIcons = new StatusBarIconList(); StatusBarNotificationList mNotifications = new StatusBarNotificationList(); HashMap<IBinder,StatusBarNotification> mNotifications = new HashMap<IBinder,StatusBarNotification>(); // for disabling the status bar // for disabling the status bar ArrayList<DisableRecord> mDisableRecords = new ArrayList<DisableRecord>(); ArrayList<DisableRecord> mDisableRecords = new ArrayList<DisableRecord>(); Loading Loading @@ -250,11 +252,20 @@ public class StatusBarManagerService extends IStatusBarService.Stub // ================================================================================ // ================================================================================ // Callbacks from the status bar service. // Callbacks from the status bar service. // ================================================================================ // ================================================================================ public void registerStatusBar(IStatusBar bar, StatusBarIconList iconList) { public void registerStatusBar(IStatusBar bar, StatusBarIconList iconList, List<IBinder> notificationKeys, List<StatusBarNotification> notifications) { Slog.i(TAG, "registerStatusBar bar=" + bar); Slog.i(TAG, "registerStatusBar bar=" + bar); mBar = bar; mBar = bar; synchronized (mIcons) { iconList.copyFrom(mIcons); iconList.copyFrom(mIcons); } } synchronized (mNotifications) { for (Map.Entry<IBinder,StatusBarNotification> e: mNotifications.entrySet()) { notificationKeys.add(e.getKey()); notifications.add(e.getValue()); } } } /** /** * The status bar service should call this when the user changes whether * The status bar service should call this when the user changes whether Loading @@ -277,8 +288,9 @@ public class StatusBarManagerService extends IStatusBarService.Stub // ================================================================================ // ================================================================================ public IBinder addNotification(StatusBarNotification notification) { public IBinder addNotification(StatusBarNotification notification) { synchronized (mNotifications) { synchronized (mNotifications) { Slog.d(TAG, "addNotification notification=" + notification); IBinder key = new Binder(); IBinder key = new Binder(); mNotifications.add(key, notification); mNotifications.put(key, notification); if (mBar != null) { if (mBar != null) { try { try { mBar.addNotification(key, notification); mBar.addNotification(key, notification); Loading @@ -291,7 +303,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub public void updateNotification(IBinder key, StatusBarNotification notification) { public void updateNotification(IBinder key, StatusBarNotification notification) { synchronized (mNotifications) { synchronized (mNotifications) { mNotifications.update(key, notification); if (!mNotifications.containsKey(key)) { throw new IllegalArgumentException("updateNotification key not found: " + key); } mNotifications.put(key, notification); if (mBar != null) { if (mBar != null) { try { try { mBar.updateNotification(key, notification); mBar.updateNotification(key, notification); Loading @@ -303,7 +318,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub public void removeNotification(IBinder key) { public void removeNotification(IBinder key) { synchronized (mNotifications) { synchronized (mNotifications) { mNotifications.remove(key); final StatusBarNotification n = mNotifications.remove(key); if (n == null) { throw new IllegalArgumentException("removeNotification key not found: " + key); } if (mBar != null) { if (mBar != null) { try { try { mBar.removeNotification(key); mBar.removeNotification(key); Loading Loading @@ -386,7 +404,12 @@ public class StatusBarManagerService extends IStatusBarService.Stub } } synchronized (mNotifications) { synchronized (mNotifications) { mNotifications.dump(pw); int i=0; pw.println("Notification list:"); for (Map.Entry<IBinder,StatusBarNotification> e: mNotifications.entrySet()) { pw.printf(" %2d: %s\n", i, e.getValue().toString()); i++; } } } synchronized (mDisableRecords) { synchronized (mDisableRecords) { Loading