jenkins-bot has submitted this change and it was merged. Change subject: End link preview a/b test. ......................................................................
End link preview a/b test. Change-Id: I0a61af33bca9a4149c468aee085d92b5b9ffe6a1 --- M app/src/main/java/org/wikipedia/WikipediaApp.java M app/src/main/java/org/wikipedia/analytics/LinkPreviewFunnel.java M app/src/main/java/org/wikipedia/page/PageActivity.java D app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialogB.java M app/src/main/java/org/wikipedia/settings/Prefs.java D app/src/main/res/layout/dialog_link_preview_b.xml M app/src/main/res/values/preference_keys.xml M app/src/main/res/xml/developer_preferences.xml 8 files changed, 2 insertions(+), 397 deletions(-) Approvals: Sniedzielski: Looks good to me, approved Mholloway: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/app/src/main/java/org/wikipedia/WikipediaApp.java b/app/src/main/java/org/wikipedia/WikipediaApp.java index 20c6253..368bb37 100644 --- a/app/src/main/java/org/wikipedia/WikipediaApp.java +++ b/app/src/main/java/org/wikipedia/WikipediaApp.java @@ -429,21 +429,6 @@ return enabled; } - public int getLinkPreviewVersion() { - int version; - if (Prefs.hasLinkPreviewVersion()) { - version = Prefs.getLinkPreviewVersion(); - } else { - version = new Random().nextInt(2); - Prefs.setLinkPreviewVersion(version); - } - return version; - } - - public boolean isLinkPreviewExperimental() { - return getLinkPreviewVersion() != 0; - } - /** * Gets the currently-selected theme for the app. * @return Theme that is currently selected, which is the actual theme ID that can diff --git a/app/src/main/java/org/wikipedia/analytics/LinkPreviewFunnel.java b/app/src/main/java/org/wikipedia/analytics/LinkPreviewFunnel.java index 4ffdd07..9b69a19 100644 --- a/app/src/main/java/org/wikipedia/analytics/LinkPreviewFunnel.java +++ b/app/src/main/java/org/wikipedia/analytics/LinkPreviewFunnel.java @@ -10,7 +10,6 @@ private static final String SCHEMA_NAME = "MobileWikiAppLinkPreview"; private static final int REV_ID = 14095177; private static final int PROD_LINK_PREVIEW_VERSION = 3; - private static final int PROD_LINK_PREVIEW_VERSION_B = 4; public LinkPreviewFunnel(WikipediaApp app) { super(app, SCHEMA_NAME, REV_ID, app.isProdRelease() ? Funnel.SAMPLE_LOG_100 : Funnel.SAMPLE_LOG_ALL); @@ -18,7 +17,7 @@ @Override protected JSONObject preprocessData(@NonNull JSONObject eventData) { - preprocessData(eventData, "version", WikipediaApp.getInstance().isLinkPreviewExperimental() ? PROD_LINK_PREVIEW_VERSION_B : PROD_LINK_PREVIEW_VERSION); + preprocessData(eventData, "version", PROD_LINK_PREVIEW_VERSION); return super.preprocessData(eventData); } diff --git a/app/src/main/java/org/wikipedia/page/PageActivity.java b/app/src/main/java/org/wikipedia/page/PageActivity.java index e116c13..1c94691 100644 --- a/app/src/main/java/org/wikipedia/page/PageActivity.java +++ b/app/src/main/java/org/wikipedia/page/PageActivity.java @@ -16,7 +16,6 @@ import org.wikipedia.login.LoginActivity; import org.wikipedia.page.gallery.GalleryActivity; import org.wikipedia.page.linkpreview.LinkPreviewDialog; -import org.wikipedia.page.linkpreview.LinkPreviewDialogB; import org.wikipedia.page.snippet.CompatActionMode; import org.wikipedia.random.RandomHandler; import org.wikipedia.recurring.RecurringTasksExecutor; @@ -690,9 +689,7 @@ public void showLinkPreview(PageTitle title, int entrySource) { if (getSupportFragmentManager().findFragmentByTag(LINK_PREVIEW_FRAGMENT_TAG) == null) { - DialogFragment linkPreview = app.isLinkPreviewExperimental() - ? LinkPreviewDialogB.newInstance(title, entrySource) - : LinkPreviewDialog.newInstance(title, entrySource); + DialogFragment linkPreview = LinkPreviewDialog.newInstance(title, entrySource); linkPreview.show(getSupportFragmentManager(), LINK_PREVIEW_FRAGMENT_TAG); } } diff --git a/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialogB.java b/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialogB.java deleted file mode 100644 index 7cb0247..0000000 --- a/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialogB.java +++ /dev/null @@ -1,265 +0,0 @@ -package org.wikipedia.page.linkpreview; - -import org.wikipedia.history.HistoryEntry; -import org.wikipedia.R; -import org.wikipedia.WikipediaApp; -import org.wikipedia.analytics.LinkPreviewFunnel; -import org.wikipedia.page.Page; -import org.wikipedia.page.PageActivity; -import org.wikipedia.page.PageCache; -import org.wikipedia.page.PageTitle; -import org.wikipedia.savedpages.LoadSavedPageTask; -import org.wikipedia.server.PageServiceFactory; -import org.wikipedia.server.PageSummary; -import org.wikipedia.util.ApiUtil; -import org.wikipedia.util.FeedbackUtil; -import org.wikipedia.util.ResourceUtil; - -import android.content.DialogInterface; -import android.os.Bundle; -import android.text.TextUtils; -import android.text.method.ScrollingMovementMethod; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; - -import com.squareup.picasso.Picasso; - -import retrofit.RetrofitError; -import retrofit.client.Response; - -import static org.wikipedia.util.L10nUtil.getStringForArticleLanguage; -import static org.wikipedia.util.L10nUtil.setConditionalLayoutDirection; - -public class LinkPreviewDialogB extends SwipeableBottomDialog implements DialogInterface.OnDismissListener { - private static final String TAG = "LinkPreviewDialog"; - - private boolean navigateSuccess; - - private ProgressBar progressBar; - private TextView extractText; - private ImageView leadImage; - - private PageTitle pageTitle; - private int entrySource; - - private LinkPreviewFunnel funnel; - private LinkPreviewContents contents; - private OnNavigateListener onNavigateListener; - - private View.OnClickListener goToPageListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - goToLinkedPage(); - } - }; - - public static LinkPreviewDialogB newInstance(PageTitle title, int entrySource) { - LinkPreviewDialogB dialog = new LinkPreviewDialogB(); - Bundle args = new Bundle(); - args.putParcelable("title", title); - args.putInt("entrySource", entrySource); - dialog.setArguments(args); - return dialog; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setStyle(STYLE_NO_TITLE, R.style.LinkPreviewDialog); - setContentPeekHeight((int) getResources().getDimension(R.dimen.linkPreviewPeekHeight)); - } - - @Override - protected View inflateDialogView(LayoutInflater inflater, ViewGroup container) { - WikipediaApp app = WikipediaApp.getInstance(); - pageTitle = getArguments().getParcelable("title"); - entrySource = getArguments().getInt("entrySource"); - - View rootView = inflater.inflate(R.layout.dialog_link_preview_b, container); - progressBar = (ProgressBar) rootView.findViewById(R.id.link_preview_progress); - leadImage = (ImageView) rootView.findViewById(R.id.link_preview_lead_image); - - View overlayRootView = addOverlay(inflater, R.layout.dialog_link_preview_overlay); - Button goButton = (Button) overlayRootView.findViewById(R.id.link_preview_go_button); - goButton.setOnClickListener(goToPageListener); - goButton.setText(getStringForArticleLanguage(pageTitle, R.string.button_continue_to_article)); - - TextView titleText = (TextView) rootView.findViewById(R.id.link_preview_title); - titleText.setOnClickListener(goToPageListener); - titleText.setText(pageTitle.getDisplayText()); - setConditionalLayoutDirection(rootView, pageTitle.getSite().getLanguageCode()); - if (!ApiUtil.hasKitKat()) { - // for oldish devices, reset line spacing to 1, since it truncates the descenders. - titleText.setLineSpacing(0, 1.0f); - } - - onNavigateListener = new DefaultOnNavigateListener(); - extractText = (TextView) rootView.findViewById(R.id.link_preview_extract); - extractText.setMovementMethod(new ScrollingMovementMethod()); - - // show the progress bar while we load content... - progressBar.setVisibility(View.VISIBLE); - - // and kick off the task to load all the things... - loadContent(); - - funnel = new LinkPreviewFunnel(app); - funnel.logLinkClick(); - - return rootView; - } - - public interface OnNavigateListener { - void onNavigate(PageTitle title); - } - - public void goToLinkedPage() { - navigateSuccess = true; - funnel.logNavigate(); - if (getDialog() != null) { - getDialog().dismiss(); - } - if (onNavigateListener != null) { - onNavigateListener.onNavigate(pageTitle); - } - } - - @Override - public void onDismiss(DialogInterface dialogInterface) { - super.onDismiss(dialogInterface); - if (!navigateSuccess) { - funnel.logCancel(); - } - } - - private void loadContent() { - PageServiceFactory.create(pageTitle.getSite()).pageSummary( - pageTitle.getPrefixedText(), - linkPreviewOnLoadCallback); - } - - private void loadContentFromCache() { - Log.v(TAG, "Loading link preview from cache"); - if (!isAdded()) { - return; - } - getApplication().getPageCache() - .get(pageTitle, 0, new PageCache.CacheGetListener() { - @Override - public void onGetComplete(Page page, int sequence) { - if (page != null) { - displayPreviewFromCachedPage(page); - } else { - loadContentFromSavedPage(); - } - } - - @Override - public void onGetError(Throwable e, int sequence) { - Log.e(TAG, "Failed to get page from cache.", e); - loadContentFromSavedPage(); - } - }); - } - - private void loadContentFromSavedPage() { - Log.v(TAG, "Loading link preview from Saved Pages"); - if (!isAdded()) { - return; - } - new LoadSavedPageTask(pageTitle) { - @Override - public void onFinish(Page page) { - displayPreviewFromCachedPage(page); - } - - @Override - public void onCatch(Throwable caught) { - progressBar.setVisibility(View.GONE); - FeedbackUtil.showMessage(getActivity(), R.string.error_network_error); - dismiss(); - } - }.execute(); - } - - private void displayPreviewFromCachedPage(Page page) { - if (!isAdded()) { - Log.d(TAG, "Detached from activity, so stopping update."); - return; - } - progressBar.setVisibility(View.GONE); - contents = new LinkPreviewContents(page); - layoutPreview(); - } - - private PageSummary.Callback linkPreviewOnLoadCallback = new PageSummary.Callback() { - @Override - public void success(PageSummary pageSummary, Response response) { - if (!isAdded()) { - return; - } - Log.v(TAG, response.getUrl()); - if (!pageSummary.hasError()) { - progressBar.setVisibility(View.GONE); - contents = new LinkPreviewContents(pageSummary, pageTitle.getSite()); - layoutPreview(); - } else { - pageSummary.logError("Page summary request failed"); - loadContentFromCache(); - } - } - - @Override - public void failure(RetrofitError error) { - if (!isAdded()) { - return; - } - Log.e(TAG, "Link preview fetch error: " + error); - } - }; - - private PageActivity getPageActivity() { - return (PageActivity) getActivity(); - } - - private WikipediaApp getApplication() { - return WikipediaApp.getInstance(); - } - - private class DefaultOnNavigateListener implements OnNavigateListener { - @Override - public void onNavigate(PageTitle title) { - HistoryEntry newEntry = new HistoryEntry(title, entrySource); - getPageActivity().displayNewPage(title, newEntry); - } - } - - private void layoutPreview() { - if (!TextUtils.isEmpty(contents.getExtract())) { - extractText.setText(contents.getExtract()); - } - int placeholderResId = ResourceUtil.getThemedAttributeId(getContext(), R.attr.lead_image_drawable); - if (shouldDownloadLeadImage()) { - Picasso.with(getActivity()) - .load(contents.getTitle().getThumbUrl()) - .placeholder(placeholderResId) - .error(placeholderResId) - .into(leadImage); - } else { - Picasso.with(getActivity()) - .load(placeholderResId) - .into(leadImage); - } - } - - private boolean shouldDownloadLeadImage() { - return !TextUtils.isEmpty(contents.getTitle().getThumbUrl()) - && WikipediaApp.getInstance().isImageDownloadEnabled(); - } -} diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java b/app/src/main/java/org/wikipedia/settings/Prefs.java index 37b64a3..b584604 100644 --- a/app/src/main/java/org/wikipedia/settings/Prefs.java +++ b/app/src/main/java/org/wikipedia/settings/Prefs.java @@ -333,18 +333,6 @@ return contains(R.string.preference_key_feature_select_text_and_share_tutorials_enabled); } - public static int getLinkPreviewVersion() { - return getInt(R.string.preference_key_link_preview_version, 0); - } - - public static void setLinkPreviewVersion(int version) { - setInt(R.string.preference_key_link_preview_version, version); - } - - public static boolean hasLinkPreviewVersion() { - return contains(R.string.preference_key_link_preview_version); - } - public static boolean isTocTutorialEnabled() { return getBoolean(R.string.preference_key_toc_tutorial_enabled, true); } diff --git a/app/src/main/res/layout/dialog_link_preview_b.xml b/app/src/main/res/layout/dialog_link_preview_b.xml deleted file mode 100644 index 46678b7..0000000 --- a/app/src/main/res/layout/dialog_link_preview_b.xml +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <View - android:layout_width="match_parent" - android:layout_height="8dp" - android:background="@drawable/link_preview_top_shadow"/> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:minHeight="@dimen/linkPreviewPeekHeight" - android:orientation="vertical" - android:background="?attr/link_preview_background_color" - android:animateLayoutChanges="true"> - - <TextView - android:id="@+id/link_preview_title" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center_vertical" - style="@style/RtlAwareTextView" - android:background="?attr/selectableItemBackground" - android:textColor="?attr/link_color" - android:paddingTop="16dp" - android:paddingLeft="16dp" - android:paddingRight="16dp" - android:paddingBottom="16dp" - android:textSize="22sp" - android:fontFamily="serif" - android:lineSpacingMultiplier="0.9" - android:maxLines="2" - android:ellipsize="end" - tools:text="Lorem ipsum" /> - - <View - android:layout_width="match_parent" - android:layout_height="0.5dp" - android:background="@color/gray_highlight"/> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <TextView - android:id="@+id/link_preview_extract" - android:layout_width="0dp" - android:layout_height="180dp" - android:layout_weight="1" - style="@style/RtlAwareTextView" - android:paddingTop="8dp" - android:paddingLeft="16dp" - android:paddingRight="16dp" - android:textSize="16sp" - android:lineSpacingMultiplier="1.3" - android:textColor="?attr/link_preview_text_color" - android:textIsSelectable="true" - android:maxLines="7" - android:ellipsize="end" - tools:text="Lorem ipsum"/> - <ImageView - android:id="@+id/link_preview_lead_image" - android:layout_width="160dp" - android:layout_height="match_parent" - android:src="?attr/lead_image_drawable" - android:contentDescription="@null" - android:scaleType="centerCrop"/> - </LinearLayout> - - <View - android:id="@+id/link_preview_bottom_padding" - android:layout_width="match_parent" - android:layout_height="70dp"/> - </LinearLayout> - - </LinearLayout> - - <ProgressBar - android:id="@+id/link_preview_progress" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center"/> - -</FrameLayout> diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 9c0c67c..19c6c75 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -32,7 +32,6 @@ <string name="preference_key_last_run_time_format">%s-lastrun</string> <string name="preference_key_tabs">tabs</string> <string name="preference_key_show_link_previews">showLinkPreviews</string> - <string name="preference_key_link_preview_version">linkPreviewVersion</string> <string name="preference_key_session_data">session_data</string> <string name="preference_key_session_timeout">session_timeout</string> <string name="preference_key_remote_log">remoteLog</string> diff --git a/app/src/main/res/xml/developer_preferences.xml b/app/src/main/res/xml/developer_preferences.xml index 4417c61..54a7748 100644 --- a/app/src/main/res/xml/developer_preferences.xml +++ b/app/src/main/res/xml/developer_preferences.xml @@ -7,12 +7,6 @@ android:key="@string/preference_key_feature_select_text_and_share_tutorials_enabled" android:title="@string/preference_key_feature_select_text_and_share_tutorials_enabled" /> - <!--suppress AndroidUnknownAttribute --> - <org.wikipedia.settings.IntPreference - style="@style/IntPreference" - android:key="@string/preference_key_link_preview_version" - android:title="@string/preference_key_link_preview_version" /> - </PreferenceCategory> <PreferenceCategory android:title="@string/preferences_developer_restbase_heading"> -- To view, visit https://gerrit.wikimedia.org/r/256345 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I0a61af33bca9a4149c468aee085d92b5b9ffe6a1 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: Sniedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits