Bug 1277467 - Pre: Add ForegroundAwareDelegate to help track if Gecko tabs are user-visible r=sebastian
MozReview-Commit-ID: KZavLxL4u8V
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/delegates/TabsTrayVisibilityAwareDelegate.java
@@ -0,0 +1,38 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; 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.delegates;
+
+import android.os.Bundle;
+import android.support.annotation.CallSuper;
+
+import org.mozilla.gecko.BrowserApp;
+import org.mozilla.gecko.tabs.TabsPanel;
+
+public abstract class TabsTrayVisibilityAwareDelegate extends BrowserAppDelegate {
+ private boolean tabsTrayVisible;
+
+ @Override
+ @CallSuper
+ public void onCreate(BrowserApp browserApp, Bundle savedInstanceState) {
+ tabsTrayVisible = false;
+ }
+
+ @Override
+ @CallSuper
+ public void onTabsTrayShown(BrowserApp browserApp, TabsPanel tabsPanel) {
+ tabsTrayVisible = true;
+ }
+
+ @Override
+ @CallSuper
+ public void onTabsTrayHidden(BrowserApp browserApp, TabsPanel tabsPanel) {
+ tabsTrayVisible = false;
+ }
+
+ protected boolean isTabsTrayVisible() {
+ return tabsTrayVisible;
+ }
+}
--- a/mobile/android/base/java/org/mozilla/gecko/promotion/AddToHomeScreenPromotion.java
+++ b/mobile/android/base/java/org/mozilla/gecko/promotion/AddToHomeScreenPromotion.java
@@ -12,35 +12,34 @@ import android.os.Bundle;
import android.util.Log;
import com.keepsafe.switchboard.SwitchBoard;
import org.json.JSONException;
import org.json.JSONObject;
import org.mozilla.gecko.AboutPages;
import org.mozilla.gecko.BrowserApp;
-import org.mozilla.gecko.delegates.BrowserAppDelegate;
import org.mozilla.gecko.GeckoProfile;
import org.mozilla.gecko.Tab;
import org.mozilla.gecko.Tabs;
import org.mozilla.gecko.db.BrowserContract;
import org.mozilla.gecko.db.BrowserDB;
import org.mozilla.gecko.db.UrlAnnotations;
-import org.mozilla.gecko.tabs.TabsPanel;
+import org.mozilla.gecko.delegates.ForegroundAwareDelegate;
import org.mozilla.gecko.util.Experiments;
import org.mozilla.gecko.util.ThreadUtils;
import java.lang.ref.WeakReference;
import ch.boye.httpclientandroidlib.util.TextUtils;
/**
* Promote "Add to home screen" if user visits website often.
*/
-public class AddToHomeScreenPromotion extends BrowserAppDelegate implements Tabs.OnTabsChangedListener {
+public class AddToHomeScreenPromotion extends ForegroundAwareDelegate implements Tabs.OnTabsChangedListener {
private static class URLHistory {
public final long visits;
public final long lastVisit;
private URLHistory(long visits, long lastVisit) {
this.visits = visits;
this.lastVisit = lastVisit;
}
@@ -49,49 +48,38 @@ public class AddToHomeScreenPromotion ex
private static final String LOGTAG = "GeckoPromoteShortcut";
private static final String EXPERIMENT_MINIMUM_TOTAL_VISITS = "minimumTotalVisits";
private static final String EXPERIMENT_LAST_VISIT_MINIMUM_AGE = "lastVisitMinimumAgeMs";
private static final String EXPERIMENT_LAST_VISIT_MAXIMUM_AGE = "lastVisitMaximumAgeMs";
private WeakReference<Activity> activityReference;
private boolean isEnabled;
- private boolean isInForeground;
private int minimumVisits;
private int lastVisitMinimumAgeMs;
private int lastVisitMaximumAgeMs;
@Override
public void onCreate(BrowserApp browserApp, Bundle savedInstanceState) {
+ super.onCreate(browserApp, savedInstanceState);
activityReference = new WeakReference<Activity>(browserApp);
- isInForeground = true;
initializeExperiment(browserApp);
}
@Override
public void onResume(BrowserApp browserApp) {
Tabs.registerOnTabsChangedListener(this);
}
@Override
public void onPause(BrowserApp browserApp) {
Tabs.unregisterOnTabsChangedListener(this);
}
- @Override
- public void onTabsTrayShown(BrowserApp browserApp, TabsPanel tabsPanel) {
- isInForeground = false;
- }
-
- @Override
- public void onTabsTrayHidden(BrowserApp browserApp, TabsPanel tabsPanel) {
- isInForeground = true;
- }
-
private void initializeExperiment(Context context) {
if (!SwitchBoard.isInExperiment(context, Experiments.PROMOTE_ADD_TO_HOMESCREEN)) {
Log.v(LOGTAG, "Experiment not enabled");
// Experiment is not enabled. No need to try to read values.
return;
}
JSONObject values = SwitchBoard.getExperimentValuesFromJson(context, Experiments.PROMOTE_ADD_TO_HOMESCREEN);
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -252,16 +252,17 @@ gbjar.sources += ['java/org/mozilla/geck
'db/TabsProvider.java',
'db/UrlAnnotations.java',
'db/URLMetadata.java',
'db/URLMetadataTable.java',
'delegates/BookmarkStateChangeDelegate.java',
'delegates/BrowserAppDelegate.java',
'delegates/BrowserAppDelegateWithReference.java',
'delegates/ScreenshotDelegate.java',
+ 'delegates/TabsTrayVisibilityAwareDelegate.java',
'DevToolsAuthHelper.java',
'distribution/Distribution.java',
'distribution/DistributionStoreCallback.java',
'distribution/ReferrerDescriptor.java',
'distribution/ReferrerReceiver.java',
'dlc/BaseAction.java',
'dlc/catalog/DownloadContent.java',
'dlc/catalog/DownloadContentBootstrap.java',