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

Commit a42a8926 authored by Shreyas Basarge's avatar Shreyas Basarge Committed by Akshay Thakker
Browse files

DO NOT MERGE Fix for syncs being dropped when appIdle is on

Syncs were being dropped when appIdleMode was on for
an app. This CL backs off the sync instead of dropping
it. When the app becomes non-idle, backoff is cleared
and the sync is performed.

Bug: 26355386
Change-Id: I2040dfd847011d3ca902e66a8cd52b2a429177c1
(cherry picked from commit 2c051498)
parent 7a313a63
Loading
Loading
Loading
Loading
+22 −19
Original line number Original line Diff line number Diff line
@@ -2604,24 +2604,6 @@ public class SyncManager {
                        }
                        }
                        continue;
                        continue;
                    }
                    }
                    if (!isOperationValidLocked(op)) {
                        operationIterator.remove();
                        mSyncStorageEngine.deleteFromPending(op.pendingOperation);
                        continue;
                    }
                    // If the next run time is in the future, even given the flexible scheduling,
                    // return the time.
                    if (op.effectiveRunTime - op.flexTime > now) {
                        if (nextReadyToRunTime > op.effectiveRunTime) {
                            nextReadyToRunTime = op.effectiveRunTime;
                        }
                        if (isLoggable) {
                            Log.v(TAG, "    Not running sync operation: Sync too far in future."
                                    + "effective: " + op.effectiveRunTime + " flex: " + op.flexTime
                                    + " now: " + now);
                        }
                        continue;
                    }
                    String packageName = getPackageName(op.target);
                    String packageName = getPackageName(op.target);
                    ApplicationInfo ai = null;
                    ApplicationInfo ai = null;
                    if (packageName != null) {
                    if (packageName != null) {
@@ -2630,6 +2612,9 @@ public class SyncManager {
                                    PackageManager.GET_UNINSTALLED_PACKAGES
                                    PackageManager.GET_UNINSTALLED_PACKAGES
                                            | PackageManager.GET_DISABLED_COMPONENTS);
                                            | PackageManager.GET_DISABLED_COMPONENTS);
                        } catch (NameNotFoundException e) {
                        } catch (NameNotFoundException e) {
                            operationIterator.remove();
                            mSyncStorageEngine.deleteFromPending(op.pendingOperation);
                            continue;
                        }
                        }
                    }
                    }
                    // If app is considered idle, then skip for now and backoff
                    // If app is considered idle, then skip for now and backoff
@@ -2644,6 +2629,24 @@ public class SyncManager {
                    } else {
                    } else {
                        op.appIdle = false;
                        op.appIdle = false;
                    }
                    }
                    if (!isOperationValidLocked(op)) {
                        operationIterator.remove();
                        mSyncStorageEngine.deleteFromPending(op.pendingOperation);
                        continue;
                    }
                    // If the next run time is in the future, even given the flexible scheduling,
                    // return the time.
                    if (op.effectiveRunTime - op.flexTime > now) {
                        if (nextReadyToRunTime > op.effectiveRunTime) {
                            nextReadyToRunTime = op.effectiveRunTime;
                        }
                        if (isLoggable) {
                            Log.v(TAG, "    Not running sync operation: Sync too far in future."
                                    + "effective: " + op.effectiveRunTime + " flex: " + op.flexTime
                                    + " now: " + now);
                        }
                        continue;
                    }
                    // Add this sync to be run.
                    // Add this sync to be run.
                    operations.add(op);
                    operations.add(op);
                }
                }