Hit edit on a step of the private prerequisite guide.
Click OK on the Insufficient privileges dialog.
The user is left viewing step edit but nothing is displayed.
Hit Back.
Stacktrace!
We should be smarter about what the 403 dialog does. The user shouldn't be left on that page to begin with but the Activity should guard against a null Guide too.
MessageQueue-JNI E 02-24 19:57:45.527 | Exception in MessageQueue callback: handleReceiveCallback
E 02-24 19:57:45.543 | java.lang.NullPointerException
E 02-24 19:57:45.543 | at com.dozuki.ifixit.ui.guide.create.StepEditActivity.finishEdit(StepEditActivity.java:1192)
E 02-24 19:57:45.543 | at com.dozuki.ifixit.ui.guide.create.StepEditActivity.onBackPressed(StepEditActivity.java:850)
E 02-24 19:57:45.543 | at android.app.Activity.onKeyUp(Activity.java:2193)
E 02-24 19:57:45.543 | at android.view.KeyEvent.dispatch(KeyEvent.java:2664)
E 02-24 19:57:45.543 | at android.app.Activity.dispatchKeyEvent(Activity.java:2423)
E 02-24 19:57:45.543 | at com.actionbarsherlock.app.SherlockFragmentActivity.dispatchKeyEvent(SherlockFragmentActivity.java:121)
E 02-24 19:57:45.543 | at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2017)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3852)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3558)
E 02-24 19:57:45.543 | at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3718)
E 02-24 19:57:45.543 | at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2010)
E 02-24 19:57:45.543 | at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1704)
E 02-24 19:57:45.543 | at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1695)
E 02-24 19:57:45.543 | at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1987)
E 02-24 19:57:45.543 | at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
E 02-24 19:57:45.543 | at android.os.MessageQueue.nativePollOnce(Native Method)
E 02-24 19:57:45.543 | at android.os.MessageQueue.next(MessageQueue.java:138)
E 02-24 19:57:45.543 | at android.os.Looper.loop(Looper.java:123)
E 02-24 19:57:45.543 | at android.app.ActivityThread.main(ActivityThread.java:5081)
E 02-24 19:57:45.543 | at java.lang.reflect.Method.invokeNative(Native Method)
E 02-24 19:57:45.543 | at java.lang.reflect.Method.invoke(Method.java:515)
E 02-24 19:57:45.543 | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
E 02-24 19:57:45.543 | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E 02-24 19:57:45.543 | at dalvik.system.NativeStart.main(Native Method)
AndroidRuntime D 02-24 19:57:45.543 | Shutting down VM
dalvikvm W 02-24 19:57:45.543 | threadid=1: thread exiting with uncaught exception (group=0x41631c80)
AndroidRuntime E 02-24 19:57:45.550 | FATAL EXCEPTION: main
E 02-24 19:57:45.550 | Process: com.dozuki.ifixit, PID: 28108
E 02-24 19:57:45.550 | java.lang.NullPointerException
E 02-24 19:57:45.550 | at com.dozuki.ifixit.ui.guide.create.StepEditActivity.finishEdit(StepEditActivity.java:1192)
E 02-24 19:57:45.550 | at com.dozuki.ifixit.ui.guide.create.StepEditActivity.onBackPressed(StepEditActivity.java:850)
E 02-24 19:57:45.550 | at android.app.Activity.onKeyUp(Activity.java:2193)
E 02-24 19:57:45.550 | at android.view.KeyEvent.dispatch(KeyEvent.java:2664)
E 02-24 19:57:45.550 | at android.app.Activity.dispatchKeyEvent(Activity.java:2423)
E 02-24 19:57:45.550 | at com.actionbarsherlock.app.SherlockFragmentActivity.dispatchKeyEvent(SherlockFragmentActivity.java:121)
E 02-24 19:57:45.550 | at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2017)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3852)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3558)
E 02-24 19:57:45.550 | at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3718)
E 02-24 19:57:45.550 | at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2010)
E 02-24 19:57:45.550 | at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1704)
E 02-24 19:57:45.550 | at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1695)
E 02-24 19:57:45.550 | at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1987)
E 02-24 19:57:45.550 | at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
E 02-24 19:57:45.550 | at android.os.MessageQueue.nativePollOnce(Native Method)
E 02-24 19:57:45.550 | at android.os.MessageQueue.next(MessageQueue.java:138)
E 02-24 19:57:45.550 | at android.os.Looper.loop(Looper.java:123)
E 02-24 19:57:45.550 | at android.app.ActivityThread.main(ActivityThread.java:5081)
E 02-24 19:57:45.550 | at java.lang.reflect.Method.invokeNative(Native Method)
E 02-24 19:57:45.550 | at java.lang.reflect.Method.invoke(Method.java:515)
E 02-24 19:57:45.550 | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
E 02-24 19:57:45.550 | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E 02-24 19:57:45.550 | at dalvik.system.NativeStart.main(Native Method)
OK
on theInsufficient privileges
dialog.We should be smarter about what the
403
dialog does. The user shouldn't be left on that page to begin with but the Activity should guard against a nullGuide
too.