Loading services/java/com/android/server/AppWidgetService.java +33 −2 Original line number Diff line number Diff line Loading @@ -170,6 +170,7 @@ class AppWidgetService extends IAppWidgetService.Stub final ArrayList<AppWidgetId> mAppWidgetIds = new ArrayList<AppWidgetId>(); ArrayList<Host> mHosts = new ArrayList<Host>(); boolean mSafeMode; boolean mStateLoaded; AppWidgetService(Context context) { mContext = context; Loading @@ -180,8 +181,9 @@ class AppWidgetService extends IAppWidgetService.Stub public void systemReady(boolean safeMode) { mSafeMode = safeMode; loadAppWidgetList(); loadStateLocked(); synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); } // Register for the boot completed broadcast, so we can send the // ENABLE broacasts. If we try to send them now, they time out, Loading Loading @@ -209,6 +211,14 @@ class AppWidgetService extends IAppWidgetService.Stub mContext.registerReceiver(mBroadcastReceiver, sdFilter); } private void ensureStateLoadedLocked() { if (!mStateLoaded) { loadAppWidgetList(); loadStateLocked(); mStateLoaded = true; } } @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) Loading Loading @@ -285,6 +295,7 @@ class AppWidgetService extends IAppWidgetService.Stub public int allocateAppWidgetId(String packageName, int hostId) { int callingUid = enforceCallingUid(packageName); synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int appWidgetId = mNextAppWidgetId++; Host host = lookupOrAddHostLocked(callingUid, packageName, hostId); Loading @@ -304,6 +315,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void deleteAppWidgetId(int appWidgetId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id != null) { deleteAppWidgetLocked(id); Loading @@ -314,6 +326,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void deleteHost(int hostId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int callingUid = getCallingUid(); Host host = lookupHostLocked(callingUid, hostId); if (host != null) { Loading @@ -325,6 +338,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void deleteAllHosts() { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int callingUid = getCallingUid(); final int N = mHosts.size(); boolean changed = false; Loading Loading @@ -405,6 +419,7 @@ class AppWidgetService extends IAppWidgetService.Stub final long ident = Binder.clearCallingIdentity(); try { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id == null) { throw new IllegalArgumentException("bad appWidgetId"); Loading Loading @@ -448,6 +463,7 @@ class AppWidgetService extends IAppWidgetService.Stub // Binds to a specific RemoteViewsService public void bindRemoteViewsService(int appWidgetId, Intent intent, IBinder connection) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id == null) { throw new IllegalArgumentException("bad appWidgetId"); Loading Loading @@ -499,6 +515,7 @@ class AppWidgetService extends IAppWidgetService.Stub // Unbinds from a specific RemoteViewsService public void unbindRemoteViewsService(int appWidgetId, Intent intent) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); // Unbind from the RemoteViewsService (which will trigger a callback to the bound // RemoteViewsAdapter) Pair<Integer, FilterComparison> key = Pair.create(appWidgetId, Loading Loading @@ -610,6 +627,7 @@ class AppWidgetService extends IAppWidgetService.Stub public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id != null && id.provider != null && !id.provider.zombie) { return id.provider.info; Loading @@ -620,6 +638,7 @@ class AppWidgetService extends IAppWidgetService.Stub public RemoteViews getAppWidgetViews(int appWidgetId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id != null) { return id.views; Loading @@ -630,6 +649,7 @@ class AppWidgetService extends IAppWidgetService.Stub public List<AppWidgetProviderInfo> getInstalledProviders() { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); final int N = mInstalledProviders.size(); ArrayList<AppWidgetProviderInfo> result = new ArrayList<AppWidgetProviderInfo>(N); for (int i=0; i<N; i++) { Loading @@ -652,6 +672,7 @@ class AppWidgetService extends IAppWidgetService.Stub final int N = appWidgetIds.length; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (int i=0; i<N; i++) { AppWidgetId id = lookupAppWidgetIdLocked(appWidgetIds[i]); updateAppWidgetInstanceLocked(id, views); Loading @@ -669,6 +690,7 @@ class AppWidgetService extends IAppWidgetService.Stub final int N = appWidgetIds.length; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (int i=0; i<N; i++) { AppWidgetId id = lookupAppWidgetIdLocked(appWidgetIds[i]); updateAppWidgetInstanceLocked(id, views, true); Loading @@ -686,6 +708,7 @@ class AppWidgetService extends IAppWidgetService.Stub final int N = appWidgetIds.length; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (int i=0; i<N; i++) { AppWidgetId id = lookupAppWidgetIdLocked(appWidgetIds[i]); notifyAppWidgetViewDataChangedInstanceLocked(id, viewId); Loading @@ -695,6 +718,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void updateAppWidgetProvider(ComponentName provider, RemoteViews views) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Provider p = lookupProviderLocked(provider); if (p == null) { Slog.w(TAG, "updateAppWidgetProvider: provider doesn't exist: " + provider); Loading Loading @@ -759,6 +783,7 @@ class AppWidgetService extends IAppWidgetService.Stub List<RemoteViews> updatedViews) { int callingUid = enforceCallingUid(packageName); synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Host host = lookupOrAddHostLocked(callingUid, packageName, hostId); host.callbacks = callbacks; Loading @@ -778,6 +803,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void stopListening(int hostId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Host host = lookupHostLocked(getCallingUid(), hostId); if (host != null) { host.callbacks = null; Loading Loading @@ -965,6 +991,7 @@ class AppWidgetService extends IAppWidgetService.Stub public int[] getAppWidgetIds(ComponentName provider) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Provider p = lookupProviderLocked(provider); if (p != null && getCallingUid() == p.uid) { return getAppWidgetIds(p); Loading Loading @@ -1087,6 +1114,7 @@ class AppWidgetService extends IAppWidgetService.Stub void sendInitialBroadcasts() { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); final int N = mInstalledProviders.size(); for (int i=0; i<N; i++) { Provider p = mInstalledProviders.get(i); Loading Loading @@ -1391,6 +1419,7 @@ class AppWidgetService extends IAppWidgetService.Stub mLocale = revised; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int N = mInstalledProviders.size(); for (int i=N-1; i>=0; i--) { Provider p = mInstalledProviders.get(i); Loading Loading @@ -1428,6 +1457,7 @@ class AppWidgetService extends IAppWidgetService.Stub } if (added || changed) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Bundle extras = intent.getExtras(); if (changed || (extras != null && extras.getBoolean(Intent.EXTRA_REPLACING, false))) { Loading @@ -1449,6 +1479,7 @@ class AppWidgetService extends IAppWidgetService.Stub // The package is being updated. We'll receive a PACKAGE_ADDED shortly. } else { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (String pkgName : pkgList) { removeProvidersForPackageLocked(pkgName); saveStateLocked(); Loading Loading
services/java/com/android/server/AppWidgetService.java +33 −2 Original line number Diff line number Diff line Loading @@ -170,6 +170,7 @@ class AppWidgetService extends IAppWidgetService.Stub final ArrayList<AppWidgetId> mAppWidgetIds = new ArrayList<AppWidgetId>(); ArrayList<Host> mHosts = new ArrayList<Host>(); boolean mSafeMode; boolean mStateLoaded; AppWidgetService(Context context) { mContext = context; Loading @@ -180,8 +181,9 @@ class AppWidgetService extends IAppWidgetService.Stub public void systemReady(boolean safeMode) { mSafeMode = safeMode; loadAppWidgetList(); loadStateLocked(); synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); } // Register for the boot completed broadcast, so we can send the // ENABLE broacasts. If we try to send them now, they time out, Loading Loading @@ -209,6 +211,14 @@ class AppWidgetService extends IAppWidgetService.Stub mContext.registerReceiver(mBroadcastReceiver, sdFilter); } private void ensureStateLoadedLocked() { if (!mStateLoaded) { loadAppWidgetList(); loadStateLocked(); mStateLoaded = true; } } @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) Loading Loading @@ -285,6 +295,7 @@ class AppWidgetService extends IAppWidgetService.Stub public int allocateAppWidgetId(String packageName, int hostId) { int callingUid = enforceCallingUid(packageName); synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int appWidgetId = mNextAppWidgetId++; Host host = lookupOrAddHostLocked(callingUid, packageName, hostId); Loading @@ -304,6 +315,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void deleteAppWidgetId(int appWidgetId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id != null) { deleteAppWidgetLocked(id); Loading @@ -314,6 +326,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void deleteHost(int hostId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int callingUid = getCallingUid(); Host host = lookupHostLocked(callingUid, hostId); if (host != null) { Loading @@ -325,6 +338,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void deleteAllHosts() { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int callingUid = getCallingUid(); final int N = mHosts.size(); boolean changed = false; Loading Loading @@ -405,6 +419,7 @@ class AppWidgetService extends IAppWidgetService.Stub final long ident = Binder.clearCallingIdentity(); try { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id == null) { throw new IllegalArgumentException("bad appWidgetId"); Loading Loading @@ -448,6 +463,7 @@ class AppWidgetService extends IAppWidgetService.Stub // Binds to a specific RemoteViewsService public void bindRemoteViewsService(int appWidgetId, Intent intent, IBinder connection) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id == null) { throw new IllegalArgumentException("bad appWidgetId"); Loading Loading @@ -499,6 +515,7 @@ class AppWidgetService extends IAppWidgetService.Stub // Unbinds from a specific RemoteViewsService public void unbindRemoteViewsService(int appWidgetId, Intent intent) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); // Unbind from the RemoteViewsService (which will trigger a callback to the bound // RemoteViewsAdapter) Pair<Integer, FilterComparison> key = Pair.create(appWidgetId, Loading Loading @@ -610,6 +627,7 @@ class AppWidgetService extends IAppWidgetService.Stub public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id != null && id.provider != null && !id.provider.zombie) { return id.provider.info; Loading @@ -620,6 +638,7 @@ class AppWidgetService extends IAppWidgetService.Stub public RemoteViews getAppWidgetViews(int appWidgetId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId); if (id != null) { return id.views; Loading @@ -630,6 +649,7 @@ class AppWidgetService extends IAppWidgetService.Stub public List<AppWidgetProviderInfo> getInstalledProviders() { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); final int N = mInstalledProviders.size(); ArrayList<AppWidgetProviderInfo> result = new ArrayList<AppWidgetProviderInfo>(N); for (int i=0; i<N; i++) { Loading @@ -652,6 +672,7 @@ class AppWidgetService extends IAppWidgetService.Stub final int N = appWidgetIds.length; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (int i=0; i<N; i++) { AppWidgetId id = lookupAppWidgetIdLocked(appWidgetIds[i]); updateAppWidgetInstanceLocked(id, views); Loading @@ -669,6 +690,7 @@ class AppWidgetService extends IAppWidgetService.Stub final int N = appWidgetIds.length; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (int i=0; i<N; i++) { AppWidgetId id = lookupAppWidgetIdLocked(appWidgetIds[i]); updateAppWidgetInstanceLocked(id, views, true); Loading @@ -686,6 +708,7 @@ class AppWidgetService extends IAppWidgetService.Stub final int N = appWidgetIds.length; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (int i=0; i<N; i++) { AppWidgetId id = lookupAppWidgetIdLocked(appWidgetIds[i]); notifyAppWidgetViewDataChangedInstanceLocked(id, viewId); Loading @@ -695,6 +718,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void updateAppWidgetProvider(ComponentName provider, RemoteViews views) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Provider p = lookupProviderLocked(provider); if (p == null) { Slog.w(TAG, "updateAppWidgetProvider: provider doesn't exist: " + provider); Loading Loading @@ -759,6 +783,7 @@ class AppWidgetService extends IAppWidgetService.Stub List<RemoteViews> updatedViews) { int callingUid = enforceCallingUid(packageName); synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Host host = lookupOrAddHostLocked(callingUid, packageName, hostId); host.callbacks = callbacks; Loading @@ -778,6 +803,7 @@ class AppWidgetService extends IAppWidgetService.Stub public void stopListening(int hostId) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Host host = lookupHostLocked(getCallingUid(), hostId); if (host != null) { host.callbacks = null; Loading Loading @@ -965,6 +991,7 @@ class AppWidgetService extends IAppWidgetService.Stub public int[] getAppWidgetIds(ComponentName provider) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Provider p = lookupProviderLocked(provider); if (p != null && getCallingUid() == p.uid) { return getAppWidgetIds(p); Loading Loading @@ -1087,6 +1114,7 @@ class AppWidgetService extends IAppWidgetService.Stub void sendInitialBroadcasts() { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); final int N = mInstalledProviders.size(); for (int i=0; i<N; i++) { Provider p = mInstalledProviders.get(i); Loading Loading @@ -1391,6 +1419,7 @@ class AppWidgetService extends IAppWidgetService.Stub mLocale = revised; synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); int N = mInstalledProviders.size(); for (int i=N-1; i>=0; i--) { Provider p = mInstalledProviders.get(i); Loading Loading @@ -1428,6 +1457,7 @@ class AppWidgetService extends IAppWidgetService.Stub } if (added || changed) { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); Bundle extras = intent.getExtras(); if (changed || (extras != null && extras.getBoolean(Intent.EXTRA_REPLACING, false))) { Loading @@ -1449,6 +1479,7 @@ class AppWidgetService extends IAppWidgetService.Stub // The package is being updated. We'll receive a PACKAGE_ADDED shortly. } else { synchronized (mAppWidgetIds) { ensureStateLoadedLocked(); for (String pkgName : pkgList) { removeProvidersForPackageLocked(pkgName); saveStateLocked(); Loading