зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1247689 - Experiment: show prompt on third opening of reader view r=sebastian
MozReview-Commit-ID: CMxdWuFIe5e --HG-- rename : mobile/android/base/resources/drawable-hdpi/helper_first_readerview_bookmark.png => mobile/android/base/resources/drawable-hdpi/helper_readerview_bookmark.png rename : mobile/android/base/resources/drawable-xhdpi/helper_first_readerview_bookmark.png => mobile/android/base/resources/drawable-xhdpi/helper_readerview_bookmark.png rename : mobile/android/base/resources/drawable-xxhdpi/helper_first_readerview_bookmark.png => mobile/android/base/resources/drawable-xxhdpi/helper_readerview_bookmark.png extra : rebase_source : c4af4f89f1a936ffd172139018e3243c25f30084 extra : histedit_source : b116221400c9b7cc0a758f43d32283661f2c82cd
This commit is contained in:
Родитель
91e91a144c
Коммит
d7ff8e459f
|
@ -59,6 +59,7 @@ import org.mozilla.gecko.preferences.ClearOnShutdownPref;
|
|||
import org.mozilla.gecko.preferences.GeckoPreferences;
|
||||
import org.mozilla.gecko.promotion.AddToHomeScreenPromotion;
|
||||
import org.mozilla.gecko.promotion.BookmarkStateChangeDelegate;
|
||||
import org.mozilla.gecko.promotion.ReaderViewBookmarkPromotion;
|
||||
import org.mozilla.gecko.prompts.Prompt;
|
||||
import org.mozilla.gecko.prompts.PromptListItem;
|
||||
import org.mozilla.gecko.reader.SavedReaderViewHelper;
|
||||
|
@ -215,6 +216,9 @@ public class BrowserApp extends GeckoApp
|
|||
public static final int ACTIVITY_REQUEST_FIRST_READERVIEW_BOOKMARK = 3001;
|
||||
public static final int ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_GOTO_BOOKMARKS = 3002;
|
||||
public static final int ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_IGNORE = 3003;
|
||||
public static final int ACTIVITY_REQUEST_TRIPLE_READERVIEW = 4001;
|
||||
public static final int ACTIVITY_RESULT_TRIPLE_READERVIEW_ADD_BOOKMARK = 4002;
|
||||
public static final int ACTIVITY_RESULT_TRIPLE_READERVIEW_IGNORE = 4003;
|
||||
|
||||
public static final String ACTION_VIEW_MULTIPLE = AppConstants.ANDROID_PACKAGE_NAME + ".action.VIEW_MULTIPLE";
|
||||
|
||||
|
@ -306,7 +310,8 @@ public class BrowserApp extends GeckoApp
|
|||
private final List<BrowserAppDelegate> delegates = Collections.unmodifiableList(Arrays.asList(
|
||||
(BrowserAppDelegate) new AddToHomeScreenPromotion(),
|
||||
(BrowserAppDelegate) new ScreenshotDelegate(),
|
||||
(BrowserAppDelegate) new BookmarkStateChangeDelegate()
|
||||
(BrowserAppDelegate) new BookmarkStateChangeDelegate(),
|
||||
(BrowserAppDelegate) new ReaderViewBookmarkPromotion()
|
||||
));
|
||||
|
||||
@NonNull
|
||||
|
|
|
@ -117,7 +117,7 @@ public class BookmarkStateChangeDelegate extends BrowserAppDelegate implements T
|
|||
SimpleHelperUI.FIRST_RVBP_SHOWN_TELEMETRYEXTRA,
|
||||
BrowserApp.ACTIVITY_REQUEST_FIRST_READERVIEW_BOOKMARK,
|
||||
R.string.helper_first_offline_bookmark_title, R.string.helper_first_offline_bookmark_message,
|
||||
R.drawable.helper_first_readerview_bookmark, R.string.helper_first_offline_bookmark_button,
|
||||
R.drawable.helper_readerview_bookmark, R.string.helper_first_offline_bookmark_button,
|
||||
BrowserApp.ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_GOTO_BOOKMARKS,
|
||||
BrowserApp.ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_IGNORE);
|
||||
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; 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.promotion;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
|
||||
import org.mozilla.gecko.BrowserApp;
|
||||
import org.mozilla.gecko.BrowserAppDelegate;
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.Tab;
|
||||
import org.mozilla.gecko.Tabs;
|
||||
import org.mozilla.gecko.reader.ReaderModeUtils;
|
||||
import org.mozilla.gecko.util.Experiments;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class ReaderViewBookmarkPromotion extends BrowserAppDelegate implements Tabs.OnTabsChangedListener {
|
||||
private WeakReference<BrowserApp> mBrowserApp;
|
||||
|
||||
private int mTimesEnteredReaderMode;
|
||||
private boolean mExperimentEnabled;
|
||||
|
||||
@Override
|
||||
public void onCreate(BrowserApp browserApp, Bundle savedInstanceState) {
|
||||
mBrowserApp = new WeakReference<>(browserApp);
|
||||
|
||||
mExperimentEnabled = SwitchBoard.isInExperiment(browserApp, Experiments.TRIPLE_READERVIEW_BOOKMARK_PROMPT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume(BrowserApp browserApp) {
|
||||
Tabs.registerOnTabsChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause(BrowserApp browserApp) {
|
||||
Tabs.unregisterOnTabsChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabChanged(Tab tab, Tabs.TabEvents msg, String data) {
|
||||
switch (msg) {
|
||||
case LOCATION_CHANGE:
|
||||
// old url: data
|
||||
// new url: tab.getURL()
|
||||
final boolean enteringReaderMode = ReaderModeUtils.isEnteringReaderMode(tab.getURL(), data);
|
||||
|
||||
if (mTimesEnteredReaderMode < 4 && enteringReaderMode) {
|
||||
mTimesEnteredReaderMode++;
|
||||
}
|
||||
|
||||
if (mTimesEnteredReaderMode == 3) {
|
||||
promoteBookmarking();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(BrowserApp browserApp, int requestCode, int resultCode, Intent data) {
|
||||
switch (requestCode) {
|
||||
case BrowserApp.ACTIVITY_REQUEST_TRIPLE_READERVIEW:
|
||||
if (resultCode == BrowserApp.ACTIVITY_RESULT_TRIPLE_READERVIEW_ADD_BOOKMARK) {
|
||||
final Tab tab = Tabs.getInstance().getSelectedTab();
|
||||
if (tab != null) {
|
||||
tab.addBookmark();
|
||||
}
|
||||
} else if (resultCode == BrowserApp.ACTIVITY_RESULT_TRIPLE_READERVIEW_IGNORE) {
|
||||
// Nothing to do: we won't show this promotion again either way.
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void promoteBookmarking() {
|
||||
final BrowserApp browserApp = mBrowserApp.get();
|
||||
if (browserApp == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final SharedPreferences prefs = GeckoSharedPrefs.forProfile(browserApp);
|
||||
|
||||
// We reuse the same preference as for the first offline reader view bookmark
|
||||
// as we only want to show one of the two UIs (they both explain the same
|
||||
// functionality).
|
||||
if (!mExperimentEnabled || prefs.getBoolean(SimpleHelperUI.PREF_FIRST_RVBP_SHOWN, false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleHelperUI.show(browserApp,
|
||||
SimpleHelperUI.TRIPLE_READERVIEW_OPEN_TELEMETRYEXTRA,
|
||||
BrowserApp.ACTIVITY_REQUEST_TRIPLE_READERVIEW,
|
||||
R.string.helper_triple_readerview_open_title,
|
||||
R.string.helper_triple_readerview_open_message,
|
||||
R.drawable.helper_readerview_bookmark, // We share the icon with the usual helper UI
|
||||
R.string.helper_triple_readerview_open_button,
|
||||
BrowserApp.ACTIVITY_RESULT_TRIPLE_READERVIEW_ADD_BOOKMARK,
|
||||
BrowserApp.ACTIVITY_RESULT_TRIPLE_READERVIEW_IGNORE);
|
||||
|
||||
GeckoSharedPrefs.forProfile(browserApp)
|
||||
.edit()
|
||||
.putBoolean(SimpleHelperUI.PREF_FIRST_RVBP_SHOWN, true)
|
||||
.apply();
|
||||
}
|
||||
|
||||
}
|
|
@ -33,6 +33,7 @@ import org.mozilla.gecko.TelemetryContract;
|
|||
public class SimpleHelperUI extends Locales.LocaleAwareActivity {
|
||||
public static final String PREF_FIRST_RVBP_SHOWN = "first_reader_view_bookmark_prompt_shown";
|
||||
public static final String FIRST_RVBP_SHOWN_TELEMETRYEXTRA = "first_readerview_bookmark_prompt";
|
||||
public static final String TRIPLE_READERVIEW_OPEN_TELEMETRYEXTRA = "third_readerview_open_prompt";
|
||||
|
||||
private View containerView;
|
||||
|
||||
|
|
|
@ -47,6 +47,9 @@ public class Experiments {
|
|||
|
||||
public static final String PREF_ONBOARDING_VERSION = "onboarding_version";
|
||||
|
||||
// Promotion to bookmark reader-view items after entering reader view three times (Bug 1247689)
|
||||
public static final String TRIPLE_READERVIEW_BOOKMARK_PROMPT = "triple-readerview-bookmark-prompt";
|
||||
|
||||
private static volatile Boolean disabled = null;
|
||||
|
||||
/**
|
||||
|
|
|
@ -778,3 +778,8 @@ just addresses the organization to follow, e.g. "This site is run by " -->
|
|||
<!ENTITY helper_first_offline_bookmark_title "Read offline">
|
||||
<!ENTITY helper_first_offline_bookmark_message "Find your Reader View items in Bookmarks, even offline.">
|
||||
<!ENTITY helper_first_offline_bookmark_button "Go to Bookmarks">
|
||||
|
||||
<!ENTITY helper_triple_readerview_open_title "Available offline">
|
||||
<!ENTITY helper_triple_readerview_open_message "Bookmark Reader View items to read them offline.">
|
||||
<!ENTITY helper_triple_readerview_open_button "Add to Bookmarks">
|
||||
|
||||
|
|
|
@ -509,6 +509,7 @@ gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
|
|||
'promotion/AddToHomeScreenPromotion.java',
|
||||
'promotion/BookmarkStateChangeDelegate.java',
|
||||
'promotion/HomeScreenPrompt.java',
|
||||
'promotion/ReaderViewBookmarkPromotion.java',
|
||||
'promotion/SimpleHelperUI.java',
|
||||
'prompts/ColorPickerInput.java',
|
||||
'prompts/IconGridInput.java',
|
||||
|
|
До Ширина: | Высота: | Размер: 2.8 KiB После Ширина: | Высота: | Размер: 2.8 KiB |
До Ширина: | Высота: | Размер: 3.9 KiB После Ширина: | Высота: | Размер: 3.9 KiB |
До Ширина: | Высота: | Размер: 5.9 KiB После Ширина: | Высота: | Размер: 5.9 KiB |
|
@ -611,4 +611,8 @@
|
|||
<string name="helper_first_offline_bookmark_message">&helper_first_offline_bookmark_message;</string>
|
||||
<string name="helper_first_offline_bookmark_button">&helper_first_offline_bookmark_button;</string>
|
||||
|
||||
<string name="helper_triple_readerview_open_title">&helper_triple_readerview_open_title;</string>
|
||||
<string name="helper_triple_readerview_open_message">&helper_triple_readerview_open_message;</string>
|
||||
<string name="helper_triple_readerview_open_button">&helper_triple_readerview_open_button;</string>
|
||||
|
||||
</resources>
|
||||
|
|
Загрузка…
Ссылка в новой задаче