Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb933360 authored by Amith Yamasani's avatar Amith Yamasani Committed by Android Git Automerger
Browse files

am 7be52cbc: Merge "Logging to help find the cause of widget crash in clock...

am 7be52cbc: Merge "Logging to help find the cause of widget crash in clock widget." into jb-mr1.1-dev

* commit '7be52cbc':
  Logging to help find the cause of widget crash in clock widget.
parents 9f6e8ddf 7be52cbc
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -336,6 +336,7 @@ class AppWidgetServiceImpl {
                pw.print(info.autoAdvanceViewId);
                pw.print(" initialLayout=#");
                pw.print(Integer.toHexString(info.initialLayout));
                pw.print(" uid="); pw.print(p.uid);
                pw.print(" zombie="); pw.println(p.zombie);
    }

@@ -699,6 +700,10 @@ class AppWidgetServiceImpl {
            }

            int userId = UserHandle.getUserId(id.provider.uid);
            if (userId != mUserId) {
                Slog.w(TAG, "AppWidgetServiceImpl of user " + mUserId
                        + " binding to provider on user " + userId);
            }
            // Bind to the RemoteViewsService (which will trigger a callback to the
            // RemoteViewsAdapter.onServiceConnected())
            final long token = Binder.clearCallingIdentity();
@@ -966,6 +971,13 @@ class AppWidgetServiceImpl {
            ensureStateLoadedLocked();
            for (int i = 0; i < N; i++) {
                AppWidgetId id = lookupAppWidgetIdLocked(appWidgetIds[i]);
                if (id == null) {
                    String message = "AppWidgetId NPE: mUserId=" + mUserId
                            + ", callingUid=" + Binder.getCallingUid()
                            + ", appWidgetIds[i]=" + appWidgetIds[i]
                            + "\n  mAppWidgets:\n" + getUserWidgets();
                    throw new NullPointerException(message);
                }
                if (id.views != null) {
                    // Only trigger a partial update for a widget if it has received a full update
                    updateAppWidgetInstanceLocked(id, views, true);
@@ -974,6 +986,18 @@ class AppWidgetServiceImpl {
        }
    }

    private String getUserWidgets() {
        StringBuffer sb = new StringBuffer();
        for (AppWidgetId widget: mAppWidgetIds) {
            sb.append("    id="); sb.append(widget.appWidgetId);
            sb.append(", hostUid="); sb.append(widget.host.uid);
            sb.append(", provider="); sb.append(widget.provider.info.provider.toString());
            sb.append("\n");
        }
        sb.append("\n");
        return sb.toString();
    }

    public void notifyAppWidgetViewDataChanged(int[] appWidgetIds, int viewId) {
        if (appWidgetIds == null) {
            return;