Bug 1289242 - Use delegate to handle URLs from ASDetailActivity
MozReview-Commit-ID: 1czchuX3Rj9
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -48,16 +48,17 @@ import org.mozilla.gecko.home.HomeConfig
import org.mozilla.gecko.home.HomeFragment;
import org.mozilla.gecko.home.HomePager;
import org.mozilla.gecko.home.HomePager.OnUrlOpenInBackgroundListener;
import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
import org.mozilla.gecko.home.HomePanelsManager;
import org.mozilla.gecko.home.HomeScreen;
import org.mozilla.gecko.home.SearchEngine;
import org.mozilla.gecko.home.activitystream.ASOpenURLDelegate;
+import org.mozilla.gecko.home.activitystream.ActivityStream;
import org.mozilla.gecko.javaaddons.JavaAddonManager;
import org.mozilla.gecko.media.AudioFocusAgent;
import org.mozilla.gecko.menu.GeckoMenu;
import org.mozilla.gecko.menu.GeckoMenuItem;
import org.mozilla.gecko.mozglue.SafeIntent;
import org.mozilla.gecko.overlays.ui.ShareDialog;
import org.mozilla.gecko.permissions.Permissions;
import org.mozilla.gecko.preferences.ClearOnShutdownPref;
@@ -2692,17 +2693,19 @@ public class BrowserApp extends GeckoApp
// onMetricsChanged callback still works.
if (mDynamicToolbar.isEnabled()) {
mDynamicToolbar.setVisible(true, VisibilityTransition.IMMEDIATE);
}
if (mHomeScreen == null) {
if (AppConstants.MOZ_ANDROID_ACTIVITY_STREAM) {
final ViewStub asStub = (ViewStub) findViewById(R.id.activity_stream_stub);
- mHomeScreen = (HomeScreen) asStub.inflate();
+ ActivityStream activityStream = (ActivityStream) asStub.inflate();
+ activityStream.setBrowserApp(this);
+ mHomeScreen = activityStream;
} else {
final ViewStub homePagerStub = (ViewStub) findViewById(R.id.home_pager_stub);
mHomeScreen = (HomeScreen) homePagerStub.inflate();
// For now these listeners are HomePager specific. In future we might want
// to have a more abstracted data storage, with one Bundle containing all
// relevant restore data.
mHomeScreen.setOnPanelChangeListener(new HomeScreen.OnPanelChangeListener() {
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ASDetailActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ASDetailActivity.java
@@ -78,17 +78,17 @@ public class ASDetailActivity
pager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.as_detail_tablayout);
tabLayout.setupWithViewPager(pager);
}
@Override
public void onUrlOpen(String url, EnumSet<HomePager.OnUrlOpenListener.Flags> flags) {
- // TODO: implement me. We'll need close the activit and laod the URL in the current tab?
+ ASOpenURLDelegate.openURL(this, url, flags);
}
@Override
public void onUrlOpenInBackground(String url,
EnumSet<HomePager.OnUrlOpenInBackgroundListener.Flags> flags) {
- // TODO: implement me. We'll need to open a new background tab here.
+ ASOpenURLDelegate.openInBackground(this, url, flags);
}
}
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
@@ -9,39 +9,54 @@ import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.LoaderManager;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
+import org.mozilla.gecko.BrowserApp;
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 java.lang.ref.WeakReference;
+
public class ActivityStream extends RelativeLayout implements HomeScreen {
+ private WeakReference<BrowserApp> browserAppWeakReference = new WeakReference<BrowserApp>(null);
+
public ActivityStream(Context context) {
this(context, null);
}
+ public void setBrowserApp(final BrowserApp browserApp) {
+ this.browserAppWeakReference = new WeakReference<>(browserApp);
+ }
+
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
Button detailButton = (Button) findViewById(R.id.detail_button);
detailButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
+ BrowserApp browserApp = browserAppWeakReference.get();
+
+ if (browserApp == null) {
+ return;
+ }
+
Intent i = new Intent(getContext(), ASDetailActivity.class);
- getContext().startActivity(i);
+ browserApp.startActivityForResult(i, BrowserApp.ACTIVITY_REQUEST_AS_DETAIL);
}
});
}
public ActivityStream(Context context, AttributeSet attrs) {
super(context, attrs);
}