diff options
| author | Svetoslav Ganov <svetoslavganov@google.com> | 2011-07-21 11:36:33 -0700 |
|---|---|---|
| committer | Svetoslav Ganov <svetoslavganov@google.com> | 2011-07-21 11:36:36 -0700 |
| commit | 8dbace2dc970208e03c3cee02a7902a5bb9827ef (patch) | |
| tree | bfe8d26614e9588b1fac22cde490adfeb8d506bf /core/java/android | |
| parent | b5d4f97126d1b64630af659f90d40f6516a494f6 (diff) | |
Activity selections not always persisted by AcitivtyChooserView.
1. ActivityChooserModel was delegating the rsponsibility for reading
and persisting data to its clients i.e. ActivityChooserView and
the latter was persisting on detach from window. However, it is
not guaranteed that this callback will be received leading to
lack of presistence sometimes. Now the model is responsible for
loading and persisting thus voiding the posisbility a misbehaved
client to cause data loss.
bug:5061638
Change-Id: Ia2b7bb659f7b9abe8869c94b3eaa726ddd4e4fad
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/widget/ActivityChooserModel.java | 6 | ||||
| -rw-r--r-- | core/java/android/widget/ActivityChooserView.java | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/core/java/android/widget/ActivityChooserModel.java b/core/java/android/widget/ActivityChooserModel.java index d7429b38d2ad..4b0a6da774e9 100644 --- a/core/java/android/widget/ActivityChooserModel.java +++ b/core/java/android/widget/ActivityChooserModel.java @@ -317,6 +317,7 @@ public class ActivityChooserModel extends DataSetObservable { dataModel = new ActivityChooserModel(context, historyFileName); sDataModelRegistry.put(historyFileName, dataModel); } + dataModel.readHistoricalData(); return dataModel; } } @@ -505,7 +506,7 @@ public class ActivityChooserModel extends DataSetObservable { * data is read until this method is invoked. * <p> */ - public void readHistoricalData() { + private void readHistoricalData() { synchronized (mInstanceLock) { if (!mCanReadHistoricalData || !mHistoricalRecordsChanged) { return; @@ -527,7 +528,7 @@ public class ActivityChooserModel extends DataSetObservable { * @throws IllegalStateException If this method is called before a call to * {@link #readHistoricalData()}. */ - public void persistHistoricalData() { + private void persistHistoricalData() { synchronized (mInstanceLock) { if (!mReadShareHistoryCalled) { throw new IllegalStateException("No preceding call to #readHistoricalData"); @@ -629,6 +630,7 @@ public class ActivityChooserModel extends DataSetObservable { if (added) { mHistoricalRecordsChanged = true; pruneExcessiveHistoricalRecordsLocked(); + persistHistoricalData(); sortActivities(); } return added; diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java index 5b69aa8fb1e9..d85f8a49bdc3 100644 --- a/core/java/android/widget/ActivityChooserView.java +++ b/core/java/android/widget/ActivityChooserView.java @@ -307,7 +307,6 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod ActivityChooserModel dataModel = mAdapter.getDataModel(); if (dataModel != null) { dataModel.registerObserver(mModelDataSetOberver); - dataModel.readHistoricalData(); } mIsAttachedToWindow = true; } @@ -318,7 +317,6 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod ActivityChooserModel dataModel = mAdapter.getDataModel(); if (dataModel != null) { dataModel.unregisterObserver(mModelDataSetOberver); - dataModel.persistHistoricalData(); } mIsAttachedToWindow = false; } |
