Add null-check for workspace/hotseat.

I assumed that they are non-null, but reportedly it was wrong.
This method can be invoked before the views are fully initialized.
Also hotseat can be null as far as I see setupViews(), therefore
null-check and 'importance stored' flag check should be done
separately.

Bug: 21779078
Change-Id: I3f17226f887c38adf2b1fb7ee2a016e00ffc0eb4
This commit is contained in:
Jun Mukai
2015-06-17 10:58:59 -07:00
parent 4919827990
commit e9819e6d5d
+24 -12
View File
@@ -554,32 +554,44 @@ public class Launcher extends Activity
public boolean setLauncherCallbacks(LauncherCallbacks callbacks) {
mLauncherCallbacks = callbacks;
mLauncherCallbacks.setLauncherSearchCallback(new Launcher.LauncherSearchCallbacks() {
private boolean mImportanceStored = false;
private boolean mWorkspaceImportanceStored = false;
private boolean mHotseatImportanceStored = false;
private int mWorkspaceImportanceForAccessibility =
View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
private int mHotseatImportanceForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_AUTO;
@Override
public void onSearchOverlayOpened() {
if (mImportanceStored) {
if (mWorkspaceImportanceStored || mHotseatImportanceStored) {
return;
}
// The underlying workspace and hotseat are temporarily suppressed by the search
// overlay. So they sholudn't be accessible.
mWorkspaceImportanceForAccessibility = mWorkspace.getImportantForAccessibility();
mHotseatImportanceForAccessibility = mHotseat.getImportantForAccessibility();
mWorkspace.setImportantForAccessibility(
View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
mHotseat.setImportantForAccessibility(
View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
mImportanceStored = true;
if (mWorkspace != null) {
mWorkspaceImportanceForAccessibility =
mWorkspace.getImportantForAccessibility();
mWorkspace.setImportantForAccessibility(
View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
mWorkspaceImportanceStored = true;
}
if (mHotseat != null) {
mHotseatImportanceForAccessibility = mHotseat.getImportantForAccessibility();
mHotseat.setImportantForAccessibility(
View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
mHotseatImportanceStored = true;
}
}
@Override
public void onSearchOverlayClosed() {
mWorkspace.setImportantForAccessibility(mWorkspaceImportanceForAccessibility);
mHotseat.setImportantForAccessibility(mHotseatImportanceForAccessibility);
mImportanceStored = false;
if (mWorkspaceImportanceStored && mWorkspace != null) {
mWorkspace.setImportantForAccessibility(mWorkspaceImportanceForAccessibility);
}
if (mHotseatImportanceStored && mHotseat != null) {
mHotseat.setImportantForAccessibility(mHotseatImportanceForAccessibility);
}
mWorkspaceImportanceStored = false;
mHotseatImportanceStored = false;
}
});
return true;