Bug 1277467 - Pre: Add ForegroundAwareDelegate to help track if Gecko tabs are user-visible r=sebastian

MozReview-Commit-ID: KZavLxL4u8V

--HG--
extra : rebase_source : 9c19cd72e0dc19d5c80bb1bf7fd2177c14862056
This commit is contained in:
Grigory Kruglov 2016-06-22 06:31:27 -07:00
Родитель bf02c9e2f4
Коммит c09864a3eb
3 изменённых файлов: 42 добавлений и 15 удалений

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -17,14 +17,13 @@ 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;
@ -35,7 +34,7 @@ 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;
@ -54,15 +53,14 @@ public class AddToHomeScreenPromotion extends BrowserAppDelegate implements Tabs
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);
}
@ -77,16 +75,6 @@ public class AddToHomeScreenPromotion extends BrowserAppDelegate implements Tabs
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");

Просмотреть файл

@ -263,6 +263,7 @@ gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
'delegates/BrowserAppDelegate.java',
'delegates/BrowserAppDelegateWithReference.java',
'delegates/ScreenshotDelegate.java',
'delegates/TabsTrayVisibilityAwareDelegate.java',
'DevToolsAuthHelper.java',
'distribution/Distribution.java',
'distribution/DistributionStoreCallback.java',