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

Commit 177fd578 authored by Pawan Wagh's avatar Pawan Wagh
Browse files

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
parent e713abaa
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -13149,6 +13149,11 @@ Data usage charges may apply.</string>
    <!-- [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>
    <!-- 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. -->
    <string name="dsu_loader_title" translatable="false">DSU Loader</string>
+14 −6
Original line number Diff line number Diff line
@@ -186,8 +186,14 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
                    public void onFailure(@NonNull Throwable t) {
                        hideProgressDialog();
                        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));
                        }
                    }
                },
                ContextCompat.getMainExecutor(mContext));
    }
@@ -208,10 +214,8 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
        int status = data.getInt(SystemUpdateManager.KEY_STATUS);
        if (status != SystemUpdateManager.STATUS_UNKNOWN
                && status != SystemUpdateManager.STATUS_IDLE) {
            throw new RuntimeException(
                    "System has pending update! Please restart the device to complete applying"
                            + " pending update. If you are seeing this after using 16KB developer"
                            + " options, please check configuration and OTA packages!");
            Log.e(TAG, "SystemUpdateManager is not available. Status :" + status);
            throw new RuntimeException(mContext.getString(R.string.error_pending_updates));
        }

        // Publish system update info
@@ -223,7 +227,11 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
            Log.i(TAG, "Update file path is " + updateFile.getAbsolutePath());
            applyUpdateFile(updateFile);
        } 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));
        }
    }