Show failure reasons to user

Sometimes device might have pending update which can
cause 16KB toggle to fail. Show the pending update errors to user.

Flag: EXEMPT bug_fix
Test: atest Enable16KbTest
Bug: 394678137
Bug: 400733054
Change-Id: Id032b2f14afb74af3b7458a426addc7e32e3a6f7
This commit is contained in:
Pawan Wagh
2025-03-07 19:58:25 +00:00
parent e713abaae7
commit 177fd578c9
2 changed files with 19 additions and 6 deletions

View File

@@ -13149,6 +13149,11 @@ Data usage charges may apply.</string>
<!-- [CHAR LIMIT=200] Manage applications, text for dialog when killing persistent apps--> <!-- [CHAR LIMIT=200] Manage applications, text for dialog when killing persistent apps-->
<string name="stop_app_dlg_text">Application will be stopped to apply page size compat setting.</string> <string name="stop_app_dlg_text">Application will be stopped to apply page size compat setting.</string>
<!-- Error messages for 16 KB Developer option-->
<string name="error_pending_updates">Kernel update failed. Check and install any pending updates.</string>
<string name="error_ota_failed">Kernel update failed. Error occurred while applying OTA.</string>
<!-- DSU Loader. Do not translate. --> <!-- DSU Loader. Do not translate. -->
<string name="dsu_loader_title" translatable="false">DSU Loader</string> <string name="dsu_loader_title" translatable="false">DSU Loader</string>

View File

@@ -186,8 +186,14 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
public void onFailure(@NonNull Throwable t) { public void onFailure(@NonNull Throwable t) {
hideProgressDialog(); hideProgressDialog();
Log.e(TAG, "Failed to call applyPayload of UpdateEngineStable!", t); Log.e(TAG, "Failed to call applyPayload of UpdateEngineStable!", t);
// installUpdate will always throw localized messages.
String message = t.getMessage();
if (message != null) {
displayToast(message);
} else {
displayToast(mContext.getString(R.string.toast_16k_update_failed_text)); displayToast(mContext.getString(R.string.toast_16k_update_failed_text));
} }
}
}, },
ContextCompat.getMainExecutor(mContext)); ContextCompat.getMainExecutor(mContext));
} }
@@ -208,10 +214,8 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
int status = data.getInt(SystemUpdateManager.KEY_STATUS); int status = data.getInt(SystemUpdateManager.KEY_STATUS);
if (status != SystemUpdateManager.STATUS_UNKNOWN if (status != SystemUpdateManager.STATUS_UNKNOWN
&& status != SystemUpdateManager.STATUS_IDLE) { && status != SystemUpdateManager.STATUS_IDLE) {
throw new RuntimeException( Log.e(TAG, "SystemUpdateManager is not available. Status :" + status);
"System has pending update! Please restart the device to complete applying" throw new RuntimeException(mContext.getString(R.string.error_pending_updates));
+ " pending update. If you are seeing this after using 16KB developer"
+ " options, please check configuration and OTA packages!");
} }
// Publish system update info // Publish system update info
@@ -223,7 +227,11 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
Log.i(TAG, "Update file path is " + updateFile.getAbsolutePath()); Log.i(TAG, "Update file path is " + updateFile.getAbsolutePath());
applyUpdateFile(updateFile); applyUpdateFile(updateFile);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); Log.e(TAG, "Error occurred while applying OTA ", e);
throw new RuntimeException(mContext.getString(R.string.error_ota_failed));
} catch (Exception e) {
Log.e(TAG, "Unknown error occurred while applying OTA ", e);
throw new RuntimeException(mContext.getString(R.string.toast_16k_update_failed_text));
} }
} }