Bug 1269406 - Implement BrowserAppDelegateWithReference r?sebastian draft
authorAndrzej Hunt <ahunt@mozilla.com>
Mon, 02 May 2016 10:41:14 -0700
changeset 358379 b93966130d9c027d1157e2cc6673f2af80712add
parent 358378 1c0286e6074233bdd2e32fd7309e7eddf01cfb13
child 358380 0f1f7860812b97d11ab864a0b214fc1150e9b35e
push id16994
push userahunt@mozilla.com
push dateMon, 02 May 2016 18:09:36 +0000
reviewerssebastian
bugs1269406
milestone49.0a1
Bug 1269406 - Implement BrowserAppDelegateWithReference r?sebastian MozReview-Commit-ID: Jk5Wl8h6qka
mobile/android/base/java/org/mozilla/gecko/delegates/BrowserAppDelegateWithReference.java
mobile/android/base/moz.build
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',