Skip to content

Commit

Permalink
Merge pull request #7513 from brave/userlytics_feedback_android
Browse files Browse the repository at this point in the history
Userlytics feedback android
  • Loading branch information
deeppandya authored Jan 5, 2021
2 parents 2e32a8f + 5b09d67 commit a3b1032
Show file tree
Hide file tree
Showing 21 changed files with 398 additions and 112 deletions.
2 changes: 2 additions & 0 deletions android/brave_java_resources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,7 @@ brave_java_resources = [
"java/res/drawable/enable_rewards_button.xml",
"java/res/drawable/ic_add.xml",
"java/res/drawable/ic_arrow_drop_down_white.xml",
"java/res/drawable/ic_arrow_forward.xml",
"java/res/drawable/ic_back.xml",
"java/res/drawable/ic_bat.xml",
"java/res/drawable/ic_binance.xml",
Expand Down Expand Up @@ -685,6 +686,7 @@ brave_java_resources = [
"java/res/drawable/progress_indeterminate.xml",
"java/res/drawable/progress_indeterminate_orange.xml",
"java/res/drawable/publisher_favicon_background.xml",
"java/res/drawable/radio_button_holo_bg.xml",
"java/res/drawable/radio_button_selected_bg.xml",
"java/res/drawable/radiobutton_background.xml",
"java/res/drawable/rate_feedback_background.xml",
Expand Down
7 changes: 4 additions & 3 deletions android/brave_java_sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/QRCodeShareDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/app/BraveActivity.java",
"../../brave/android/java/org/chromium/chrome/browser/appmenu/BraveTabbedAppMenuPropertiesDelegate.java",
"../../brave/android/java/org/chromium/chrome/browser/bookmarks/BraveBookmarkUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsBottomSheetDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java",
"../../brave/android/java/org/chromium/chrome/browser/custom_layout/HeightWrappingViewPager.java",
Expand Down Expand Up @@ -232,6 +233,6 @@ brave_components_browser_ui_site_settings_android_java = [ "//brave/components/b
brave_browser_ui_android_appmenu_internal_sources = [ "//brave/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenu.java" ]

brave_java_base_sources = [
"//brave/android/java/org/chromium/base/BraveCommandLineInitUtil.java",
"//brave/android/java/org/chromium/base/BraveReflectionUtil.java",
]
"//brave/android/java/org/chromium/base/BraveCommandLineInitUtil.java",
"//brave/android/java/org/chromium/base/BraveReflectionUtil.java",
]
9 changes: 9 additions & 0 deletions android/java/apk_for_test.flags
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,12 @@
-keep class org.chromium.chrome.browser.tabmodel.BraveTabCreator {
public <init>(...);
}

-keep class org.chromium.chrome.browser.bookmarks.BraveBookmarkUtils {
*** addOrEditBookmark(...);
}

-keep class org.chromium.chrome.browser.bookmarks.BookmarkUtils {
*** addBookmarkInternal(...);
*** createSnackbarControllerForEditButton(...);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/* Copyright (c) 2020 The Brave Authors. All rights reserved.
* 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.chromium.chrome.browser.bookmarks;

import android.app.Activity;
import android.content.Context;

import org.chromium.base.BuildInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkType;

/**
* A class holding static util functions for bookmark.
*/
public class BraveBookmarkUtils extends BookmarkUtils {
private static final String TAG = "BraveBookmarkUtils";
/**
* If the tab has already been bookmarked, start {@link BookmarkEditActivity} for the
* bookmark. If not, add the bookmark to bookmarkmodel, and show a snackbar notifying the user.
*
* Note: Takes ownership of bookmarkModel, and will call |destroy| on it when finished.
*
* @param existingBookmarkId The bookmark ID if the tab has already been bookmarked.
* @param bookmarkModel The bookmark model.
* @param tab The tab to add or edit a bookmark.
* @param snackbarManager The SnackbarManager used to show the snackbar.
* @param activity Current activity.
* @param fromCustomTab boolean indicates whether it is called by Custom Tab.
* @return Bookmark ID of the bookmark. Could be <code>null</code> if bookmark didn't exist
* and bookmark model failed to create it.
*/
public static BookmarkId addOrEditBookmark(long existingBookmarkId, BookmarkModel bookmarkModel,
Tab tab, SnackbarManager snackbarManager, Activity activity, boolean fromCustomTab) {
if (existingBookmarkId != BookmarkId.INVALID_ID) {
BookmarkId bookmarkId = new BookmarkId(existingBookmarkId, BookmarkType.NORMAL);
if (snackbarManager.isShowing()) {
snackbarManager.dismissAllSnackbars();
}
bookmarkModel.deleteBookmark(bookmarkId);
bookmarkModel.destroy();
return bookmarkId;
}

BookmarkId bookmarkId =
addBookmarkInternal(activity, bookmarkModel, tab.getTitle(), tab.getOriginalUrl());

Snackbar snackbar = null;
if (bookmarkId == null) {
snackbar = Snackbar.make(activity.getString(R.string.bookmark_page_failed),
new SnackbarController() {
@Override
public void onDismissNoAction(Object actionData) {}

@Override
public void onAction(Object actionData) {}
},
Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_BOOKMARK_ADDED)
.setSingleLine(false);
} else {
String folderName = bookmarkModel.getBookmarkTitle(
bookmarkModel.getBookmarkById(bookmarkId).getParentId());
SnackbarController snackbarController =
createSnackbarControllerForEditButton(activity, bookmarkId);
if (getLastUsedParent(activity) == null) {
if (fromCustomTab) {
String packageLabel = BuildInfo.getInstance().hostPackageLabel;
snackbar = Snackbar.make(
activity.getString(R.string.bookmark_page_saved, packageLabel),
snackbarController, Snackbar.TYPE_ACTION, Snackbar.UMA_BOOKMARK_ADDED);
} else {
snackbar = Snackbar.make(
activity.getString(R.string.bookmark_page_saved_default),
snackbarController, Snackbar.TYPE_ACTION, Snackbar.UMA_BOOKMARK_ADDED);
}
} else {
snackbar = Snackbar.make(folderName, snackbarController, Snackbar.TYPE_ACTION,
Snackbar.UMA_BOOKMARK_ADDED)
.setTemplateText(
activity.getString(R.string.bookmark_page_saved_folder));
}
snackbar.setSingleLine(false).setAction(
activity.getString(R.string.bookmark_item_edit), null);
}
snackbarManager.showSnackbar(snackbar);

bookmarkModel.destroy();
return bookmarkId;
}

/**
* An internal version of {@link #addBookmarkSilently(Context, BookmarkModel, String, String)}.
* Will reset last used parent if it fails to add a bookmark
*/
protected static BookmarkId addBookmarkInternal(
Context context, BookmarkModel bookmarkModel, String title, String url) {
assert (false);
return null;
}

/**
* Creates a snackbar controller for a case where "Edit" button is shown to edit the newly
* created bookmark.
*/
protected static SnackbarController createSnackbarControllerForEditButton(
final Activity activity, final BookmarkId bookmarkId) {
assert (false);
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ public class OnboardingPrefManager {

private static final String GOOGLE = "Google";
public static final String DUCKDUCKGO = "DuckDuckGo";
private static final String DUCKDUCKGOLITE = "DuckDuckGo Lite";
private static final String QWANT = "Qwant";
private static final String BING = "Bing";
private static final String STARTPAGE = "Startpage";
Expand Down Expand Up @@ -249,7 +248,6 @@ public boolean showCrossPromoModal() {
put(GOOGLE, SearchEngineEnum.GOOGLE);
put(YAHOO, SearchEngineEnum.YAHOO);
put(DUCKDUCKGO, SearchEngineEnum.DUCKDUCKGO);
put(DUCKDUCKGOLITE, SearchEngineEnum.DUCKDUCKGOLITE);
put(QWANT, SearchEngineEnum.QWANT);
put(BING, SearchEngineEnum.BING);
put(STARTPAGE, SearchEngineEnum.STARTPAGE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,28 @@
import org.chromium.chrome.R;

public enum SearchEngineEnum {
GOOGLE(R.drawable.search_engine_google, SearchEngineEnumConstants.SEARCH_GOOGLE_ID),
YAHOO(R.drawable.search_engine_yahoo, SearchEngineEnumConstants.SEARCH_YAHOO_ID),
DUCKDUCKGO(R.drawable.search_engine_duckduckgo, SearchEngineEnumConstants.SEARCH_DUCKDUCKGO_ID),
DUCKDUCKGOLITE(R.drawable.search_engine_duckduckgo_lite,
SearchEngineEnumConstants.SEARCH_DUCKDUCKGO_LITE_ID),
QWANT(R.drawable.search_engine_qwant, SearchEngineEnumConstants.SEARCH_QWANT_ID),
BING(R.drawable.search_engine_bing, SearchEngineEnumConstants.SEARCH_BING_ID),
YANDEX(R.drawable.yandex, SearchEngineEnumConstants.SEARCH_YANDEX_ID),
STARTPAGE(R.drawable.search_engine_startpage, SearchEngineEnumConstants.SEARCH_STARTPAGE_ID);
GOOGLE(R.drawable.search_engine_google, SearchEngineEnumConstants.SEARCH_GOOGLE_ID,
R.string.google_desc),
YAHOO(R.drawable.search_engine_yahoo, SearchEngineEnumConstants.SEARCH_YAHOO_ID,
R.string.yahoo_desc),
DUCKDUCKGO(R.drawable.search_engine_duckduckgo, SearchEngineEnumConstants.SEARCH_DUCKDUCKGO_ID,
R.string.ddg_desc),
QWANT(R.drawable.search_engine_qwant, SearchEngineEnumConstants.SEARCH_QWANT_ID,
R.string.qwant_desc),
BING(R.drawable.search_engine_bing, SearchEngineEnumConstants.SEARCH_BING_ID,
R.string.bing_desc),
YANDEX(R.drawable.yandex, SearchEngineEnumConstants.SEARCH_YANDEX_ID, R.string.yandex_desc),
STARTPAGE(R.drawable.search_engine_startpage, SearchEngineEnumConstants.SEARCH_STARTPAGE_ID,
R.string.startpage_desc);

private int icon;
private int id;
private int desc;

SearchEngineEnum(int icon, int id) {
SearchEngineEnum(int icon, int id, int desc) {
this.icon = icon;
this.id = id;
this.desc = desc;
}

public int getIcon() {
Expand All @@ -36,14 +42,17 @@ public int getId() {
return id;
}

public int getDesc() {
return desc;
}

interface SearchEngineEnumConstants {
static final int SEARCH_GOOGLE_ID = 0;
static final int SEARCH_DUCKDUCKGO_ID = 1;
static final int SEARCH_DUCKDUCKGO_LITE_ID = 2;
static final int SEARCH_QWANT_ID = 3;
static final int SEARCH_BING_ID = 4;
static final int SEARCH_STARTPAGE_ID = 5;
static final int SEARCH_YAHOO_ID = 6;
static final int SEARCH_YANDEX_ID = 7;
static final int SEARCH_QWANT_ID = 2;
static final int SEARCH_BING_ID = 3;
static final int SEARCH_STARTPAGE_ID = 4;
static final int SEARCH_YAHOO_ID = 5;
static final int SEARCH_YANDEX_ID = 6;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,36 @@

package org.chromium.chrome.browser.onboarding;

import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;

import static org.chromium.ui.base.ViewUtils.dpToPx;

import androidx.fragment.app.Fragment;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import androidx.fragment.app.Fragment;

import org.chromium.base.Log;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
import org.chromium.chrome.browser.onboarding.SearchEngineEnum;
import org.chromium.chrome.browser.settings.BraveSearchEngineUtils;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.settings.BraveSearchEngineUtils;
import org.chromium.components.search_engines.TemplateUrl;
import org.chromium.components.search_engines.TemplateUrlService;

import java.util.List;

public class SearchEngineOnboardingFragment extends Fragment {
private String searchSpanText = "%s\n%s";
private RadioGroup radioGroup;

private Button btnSave;
Expand Down Expand Up @@ -67,20 +75,35 @@ private void refreshData() {
SearchEngineEnum searchEngineEnum =
OnboardingPrefManager.searchEngineMap.get(templateUrl.getShortName());

String title = templateUrl.getShortName();
String desc = getActivity().getResources().getString(searchEngineEnum.getDesc());

SpannableString searchTextSpan =
new SpannableString(String.format(searchSpanText, title, desc));
searchTextSpan.setSpan(new AbsoluteSizeSpan(16, true), 0, title.length(),
SPAN_EXCLUSIVE_EXCLUSIVE);
searchTextSpan.setSpan(
new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 0,
title.length(), SPAN_EXCLUSIVE_EXCLUSIVE);
searchTextSpan.setSpan(new AbsoluteSizeSpan(12, true), title.length() + 1,
searchTextSpan.length(), SPAN_EXCLUSIVE_EXCLUSIVE);

RadioButton rdBtn = new RadioButton(getActivity());
rdBtn.setId(searchEngineEnum.getId());
RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(
RadioGroup.LayoutParams.MATCH_PARENT, dpToPx(getActivity(), 56));
RadioGroup.LayoutParams.MATCH_PARENT, dpToPx(getActivity(), 64));
params.setMargins(0, dpToPx(getActivity(), 6), 0, 0);
rdBtn.setLayoutParams(params);
rdBtn.setTextSize(18);
rdBtn.setButtonDrawable(null);
rdBtn.setPadding(dpToPx(getActivity(), 30), 0, 0, 0);
rdBtn.setTextColor(getResources().getColor(R.color.onboarding_text_color));
rdBtn.setBackgroundDrawable(
getResources().getDrawable(R.drawable.radiobutton_background));
rdBtn.setText(templateUrl.getShortName());
rdBtn.setTextColor(
getActivity().getResources().getColor(R.color.onboarding_text_color));
rdBtn.setBackgroundDrawable(getActivity().getResources().getDrawable(
R.drawable.radiobutton_background));
rdBtn.setText(searchTextSpan);
rdBtn.setCompoundDrawablesWithIntrinsicBounds(
getResources().getDrawable(searchEngineEnum.getIcon()), null, null, null);
getActivity().getResources().getDrawable(searchEngineEnum.getIcon()), null,
null, null);
rdBtn.setCompoundDrawablePadding(dpToPx(getActivity(), 16));
radioGroup.addView(rdBtn);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,8 @@ public interface HighlightDialogListener {
void onLearnMore();
}

private static final List<Integer> highlightViews = Arrays.asList(
R.id.brave_stats_ads,
R.id.brave_stats_data_saved,
R.id.brave_stats_time,
R.id.brave_stats_time
);
private static final List<Integer> highlightViews = Arrays.asList(R.id.brave_stats_ads,
R.id.brave_stats_data_saved, R.id.brave_stats_time, R.id.widget_cardview);

private HighlightItem item;
private HighlightView highlightView;
Expand Down
Loading

0 comments on commit a3b1032

Please sign in to comment.