Bug 1297127 - Move HomeScreen specific code into ActivityStreamHomeScreen r?sebastian draft
authorAndrzej Hunt <ahunt@mozilla.com>
Mon, 29 Aug 2016 15:33:32 -0700
changeset 406907 155d6001460854ebff20bd1287fcb11c055cea66
parent 406906 fffd66aeeb9e26f63eb6f6e23a33819e912cbd3d
child 406908 41e5922460ccb2ded3d4e00975eb45f15c1ac4a0
push id27871
push userahunt@mozilla.com
push dateMon, 29 Aug 2016 22:40:02 +0000
reviewerssebastian
bugs1297127
milestone51.0a1
Bug 1297127 - Move HomeScreen specific code into ActivityStreamHomeScreen r?sebastian We can keep the general ActivityStream code in the ActivityStream class/widget, allowing reuse inside a HomePanel (for use in the HomePager). ActivityStreamHomeScreen then wraps this for use as a HomePager replacement (which is the long-term goal for AS). MozReview-Commit-ID: 1aWBh1YyARY
mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStreamHomeScreen.java
mobile/android/base/moz.build
mobile/android/base/resources/layout/activity_stream.xml
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
@@ -19,80 +19,44 @@ import org.mozilla.gecko.GeckoProfile;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.animation.PropertyAnimator;
 import org.mozilla.gecko.home.HomeBanner;
 import org.mozilla.gecko.home.HomeFragment;
 import org.mozilla.gecko.home.HomeScreen;
 import org.mozilla.gecko.home.SimpleCursorLoader;
 import org.mozilla.gecko.home.activitystream.topsites.TopSitesPagerAdapter;
 
-public class ActivityStream extends FrameLayout implements HomeScreen {
+public class ActivityStream extends FrameLayout {
     private StreamRecyclerAdapter adapter;
 
     private static final int LOADER_ID_HIGHLIGHTS = 0;
     private static final int LOADER_ID_TOPSITES = 1;
 
     public ActivityStream(Context context, AttributeSet attrs) {
         super(context, attrs);
 
         inflate(context, R.layout.as_content, this);
     }
 
-    @Override
-    public boolean isVisible() {
-        // This is dependent on the loading state - currently we're a dumb panel so we're always
-        // "visible"
-        return true;
-    }
-
-    @Override
-    public void onToolbarFocusChange(boolean hasFocus) {
-        // We don't care: this is HomePager specific
-    }
-
-    @Override
-    public void showPanel(String panelId, Bundle restoreData) {
-        // We could use this to restore Panel data. In practice this isn't likely to be relevant for
-        // AS and can be ignore for now.
-    }
-
-    @Override
-    public void setOnPanelChangeListener(OnPanelChangeListener listener) {
-        // As with showPanel: not relevant yet, could be used for persistence (scroll position?)
-    }
-
-    @Override
-    public void setPanelStateChangeListener(HomeFragment.PanelStateChangeListener listener) {
-        // See setOnPanelChangeListener
-    }
-
-    @Override
-    public void setBanner(HomeBanner banner) {
-        // TODO: we should probably implement this to show snippets.
-    }
-
-    @Override
-    public void load(LoaderManager lm, FragmentManager fm, String panelId, Bundle restoreData,
-                     PropertyAnimator animator) {
+    public void load(LoaderManager lm) {
         // Signal to load data from storage as needed, compare with HomePager
         RecyclerView rv = (RecyclerView) findViewById(R.id.activity_stream_main_recyclerview);
 
         // TODO: we need to retrieve BrowserApp and pass it in as onUrlOpenListener. That will
         // be simpler once we're a HomeFragment, but isn't so simple while we're still a View.
         adapter = new StreamRecyclerAdapter(lm, null);
         rv.setAdapter(adapter);
         rv.setLayoutManager(new LinearLayoutManager(getContext()));
         rv.setHasFixedSize(true);
 
         CursorLoaderCallbacks callbacks = new CursorLoaderCallbacks();
         lm.initLoader(LOADER_ID_HIGHLIGHTS, null, callbacks);
         lm.initLoader(LOADER_ID_TOPSITES, null, callbacks);
     }
 
-    @Override
     public void unload() {
         adapter.swapHighlightsCursor(null);
         adapter.swapTopSitesCursor(null);
         // Signal to clear data that has been loaded, compare with HomePager
     }
 
     /**
      * This is a temporary cursor loader. We'll probably need a completely new query for AS,
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStreamHomeScreen.java
@@ -0,0 +1,73 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package org.mozilla.gecko.home.activitystream;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.LoaderManager;
+import android.util.AttributeSet;
+
+import org.mozilla.gecko.animation.PropertyAnimator;
+import org.mozilla.gecko.home.HomeBanner;
+import org.mozilla.gecko.home.HomeFragment;
+import org.mozilla.gecko.home.HomeScreen;
+
+/**
+ * HomeScreen implementation that displays ActivityStream.
+ */
+public class ActivityStreamHomeScreen
+        extends ActivityStream
+        implements HomeScreen {
+
+    private boolean visible = false;
+
+    public ActivityStreamHomeScreen(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    public boolean isVisible() {
+        return visible;
+    }
+
+    @Override
+    public void onToolbarFocusChange(boolean hasFocus) {
+
+    }
+
+    @Override
+    public void showPanel(String panelId, Bundle restoreData) {
+
+    }
+
+    @Override
+    public void setOnPanelChangeListener(OnPanelChangeListener listener) {
+
+    }
+
+    @Override
+    public void setPanelStateChangeListener(HomeFragment.PanelStateChangeListener listener) {
+
+    }
+
+    @Override
+    public void setBanner(HomeBanner banner) {
+
+    }
+
+    @Override
+    public void load(LoaderManager lm, FragmentManager fm, String panelId, Bundle restoreData,
+                     PropertyAnimator animator) {
+        super.load(lm);
+        visible = true;
+    }
+
+    @Override
+    public void unload() {
+        super.unload();
+        visible = false;
+    }
+}
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -425,16 +425,17 @@ gbjar.sources += ['java/org/mozilla/geck
     'GeckoProfilesProvider.java',
     'GeckoUpdateReceiver.java',
     'GlobalHistory.java',
     'GuestSession.java',
     'health/HealthRecorder.java',
     'health/SessionInformation.java',
     'health/StubbedHealthRecorder.java',
     'home/activitystream/ActivityStream.java',
+    'home/activitystream/ActivityStreamHomeScreen.java',
     'home/activitystream/StreamItem.java',
     'home/activitystream/StreamRecyclerAdapter.java',
     'home/activitystream/topsites/CirclePageIndicator.java',
     'home/activitystream/topsites/PageIndicator.java',
     'home/activitystream/topsites/TopSitesCard.java',
     'home/activitystream/topsites/TopSitesPage.java',
     'home/activitystream/topsites/TopSitesPageAdapter.java',
     'home/activitystream/topsites/TopSitesPagerAdapter.java',
--- a/mobile/android/base/resources/layout/activity_stream.xml
+++ b/mobile/android/base/resources/layout/activity_stream.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<org.mozilla.gecko.home.activitystream.ActivityStream xmlns:android="http://schemas.android.com/apk/res/android"
+<org.mozilla.gecko.home.activitystream.ActivityStreamHomeScreen xmlns:android="http://schemas.android.com/apk/res/android"
                                                       android:orientation="vertical"
                                                       android:layout_width="match_parent"
                                                       android:layout_height="match_parent"
                                                       android:background="#FAFAFA">
     <android.support.v7.widget.RecyclerView
         android:id="@+id/activity_stream_main_recyclerview"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
 
-</org.mozilla.gecko.home.activitystream.ActivityStream>
+</org.mozilla.gecko.home.activitystream.ActivityStreamHomeScreen>