Bug 1269406 - Implement BrowserAppDelegateWithReference r?sebastian
MozReview-Commit-ID: Jk5Wl8h6qka
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/delegates/BrowserAppDelegateWithReference.java
@@ -0,0 +1,30 @@
+package org.mozilla.gecko.delegates;
+
+import android.os.Bundle;
+import android.support.annotation.CallSuper;
+
+import org.mozilla.gecko.BrowserApp;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * BrowserAppDelegate that stores a reference to the parent BrowserApp.
+ */
+public abstract class BrowserAppDelegateWithReference extends BrowserAppDelegate {
+
+ private WeakReference<BrowserApp> mBrowserApp;
+
+ @Override
+ @CallSuper
+ public void onCreate(BrowserApp browserApp, Bundle savedInstanceState) {
+ mBrowserApp = new WeakReference<>(browserApp);
+ }
+
+ /**
+ * Obtain the referenced BrowserApp. May return <code>null</code> if the BrowserApp no longer
+ * exists.
+ */
+ protected BrowserApp getBrowserApp() {
+ return mBrowserApp.get();
+ }
+}
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -243,16 +243,17 @@ gbjar.sources += ['java/org/mozilla/geck
'db/Table.java',
'db/TabsAccessor.java',
'db/TabsProvider.java',
'db/UrlAnnotations.java',
'db/URLMetadata.java',
'db/URLMetadataTable.java',
'delegates/BookmarkStateChangeDelegate.java',
'delegates/BrowserAppDelegate.java',
+ 'delegates/BrowserAppDelegateWithReference.java',
'delegates/ScreenshotDelegate.java',
'DevToolsAuthHelper.java',
'distribution/Distribution.java',
'distribution/DistributionStoreCallback.java',
'distribution/ReferrerDescriptor.java',
'distribution/ReferrerReceiver.java',
'dlc/BaseAction.java',
'dlc/catalog/DownloadContent.java',