Bug 1400072: Pass in tilesSize when needed, rather than caching. r=liuche draft
authorMichael Comella <michael.l.comella@gmail.com>
Fri, 15 Sep 2017 10:39:36 -0700
changeset 665723 f6c0e40c150ec1419b5fecb5ef6b8e5f8b534373
parent 665722 7ea79634c5e03fdc17a9df977f231f48244c3ca3
child 665724 4e0f35f391d8174f02930a0a39a8981bc048c8ee
push id80150
push usermichael.l.comella@gmail.com
push dateFri, 15 Sep 2017 21:05:44 +0000
reviewersliuche
bugs1400072
milestone57.0a1
Bug 1400072: Pass in tilesSize when needed, rather than caching. r=liuche This will help prevent the cache from going out of date. MozReview-Commit-ID: GdUXF0oOSiK
mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/TopPanelRow.java
mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/topsites/TopSitesPagerAdapter.java
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/TopPanelRow.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/TopPanelRow.java
@@ -50,18 +50,17 @@ public class TopPanelRow extends StreamV
 
         topSitesPager = (ViewPager) itemView.findViewById(R.id.topsites_pager);
         topSitesPager.setAdapter(new TopSitesPagerAdapter(itemView.getContext(), onUrlOpenListener, onUrlOpenInBackgroundListener));
         topSitesPager.addOnPageChangeListener(swipeListener);
     }
 
     public void bind(Cursor cursor, int tilesSize) {
         final TopSitesPagerAdapter adapter = (TopSitesPagerAdapter) topSitesPager.getAdapter();
-        adapter.setTilesSize(tilesSize);
-        adapter.swapCursor(cursor);
+        adapter.swapCursor(cursor, tilesSize);
 
         final Resources resources = itemView.getResources();
         final int tilesMargin = resources.getDimensionPixelSize(R.dimen.activity_stream_base_margin);
 
         final int rows = cursor == null || cursor.getCount() > 4 ? 2 : 1;
 
         ViewGroup.LayoutParams layoutParams = topSitesPager.getLayoutParams();
         layoutParams.height = (tilesSize * rows) + (tilesMargin * 2);
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/topsites/TopSitesPagerAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/topsites/TopSitesPagerAdapter.java
@@ -24,18 +24,16 @@ import static org.mozilla.gecko.activity
 /**
  * The primary / top-level TopSites adapter: it handles the ViewPager, and also handles
  * all lower-level Adapters that populate the individual topsite items.
  */
 public class TopSitesPagerAdapter extends PagerAdapter {
     public static final int PAGES = 2;
     public static final int SUGGESTED_SITES_MAX_PAGES = 2;
 
-    private int tilesSize;
-
     private final List<TopSitesPage> pages;
 
     private final Context context;
     private final HomePager.OnUrlOpenListener onUrlOpenListener;
     private final HomePager.OnUrlOpenInBackgroundListener onUrlOpenInBackgroundListener;
 
     private int count = 0;
 
@@ -44,20 +42,16 @@ public class TopSitesPagerAdapter extend
                                 HomePager.OnUrlOpenInBackgroundListener onUrlOpenInBackgroundListener) {
         pages = new ArrayList<>(PAGES);
 
         this.context = context;
         this.onUrlOpenListener = onUrlOpenListener;
         this.onUrlOpenInBackgroundListener = onUrlOpenInBackgroundListener;
     }
 
-    public void setTilesSize(int tilesSize) {
-        this.tilesSize = tilesSize;
-    }
-
     @Override
     public int getCount() {
         return Math.min(count, 4);
     }
 
     @Override
     public boolean isViewFromObject(View view, Object object) {
         return view == object;
@@ -88,17 +82,17 @@ public class TopSitesPagerAdapter extend
         }
     }
 
     @Override
     public void destroyItem(ViewGroup container, int position, Object object) {
         container.removeView((View) object);
     }
 
-    public void swapCursor(Cursor cursor) {
+    public void swapCursor(final Cursor cursor, final int tilesSize) {
         // Divide while rounding up: 0 items = 0 pages, 1-ITEMS_PER_PAGE items = 1 page, etc.
         if (cursor != null) {
             count = (cursor.getCount() - 1) / TopSitesPage.NUM_TILES + 1;
         } else {
             count = 0;
         }
 
         // Try to only add/remove pages if really needed: this minimises the amount of UI work that