Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Userlytics feedback android #7513

Merged
merged 5 commits into from
Jan 5, 2021
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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",
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
// Copyright 2020 The Chromium Authors. All rights reserved.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be our header

// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.bookmarks;

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

import org.chromium.base.BuildInfo;
import org.chromium.base.Log;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
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 {
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);
RecordUserAction.record("EnhancedBookmarks.AddingFailed");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's remove that, it's used to track user's activity in chrome

} else {
String folderName = bookmarkModel.getBookmarkTitle(
bookmarkModel.getBookmarkById(bookmarkId).getParentId());
SnackbarController snackbarController =
createSnackbarControllerForEditButton(activity, bookmarkId);
if (BookmarkUtils.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
*/
private static BookmarkId addBookmarkInternal(
Copy link
Contributor Author

@deeppandya deeppandya Jan 4, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@samartnik Created an issue to add support for static functions. brave/brave-browser#13359 so instead of adding a patch, i have copied the function here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does that function somehow different of what we have inside BookmarkUtils.java? Why do we need to duplicate it as we can call it via that BookmarkUtils.addBookmarkInternal as it's static.

Context context, BookmarkModel bookmarkModel, String title, String url) {
BookmarkId parent = BookmarkUtils.getLastUsedParent(context);
BookmarkItem parentItem = null;
if (parent != null) {
parentItem = bookmarkModel.getBookmarkById(parent);
}
if (parent == null || parentItem == null || parentItem.isManaged()
|| !parentItem.isFolder()) {
parent = bookmarkModel.getDefaultFolder();
}
BookmarkId bookmarkId =
bookmarkModel.addBookmark(parent, bookmarkModel.getChildCount(parent), title, url);

// TODO(lazzzis): remove log after bookmark sync is fixed, crbug.com/986978
if (bookmarkId == null) {
Log.e(TAG,
"Failed to add bookmarks: parentTypeAndId %s, defaultFolderTypeAndId %s, "
+ "mobileFolderTypeAndId %s, parentEditable Managed isFolder %s,",
parent, bookmarkModel.getDefaultFolder(), bookmarkModel.getMobileFolderId(),
parentItem == null ? "null"
: (parentItem.isEditable() + " " + parentItem.isManaged()
+ " " + parentItem.isFolder()));
BookmarkUtils.setLastUsedParent(context, bookmarkModel.getDefaultFolder());
}
return bookmarkId;
}

/**
* Creates a snackbar controller for a case where "Edit" button is shown to edit the newly
* created bookmark.
*/
private static SnackbarController createSnackbarControllerForEditButton(
final Activity activity, final BookmarkId bookmarkId) {
return new SnackbarController() {
@Override
public void onDismissNoAction(Object actionData) {
RecordUserAction.record("EnhancedBookmarks.EditAfterCreateButtonNotClicked");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the same as a previous comment about RecordUserAction

}

@Override
public void onAction(Object actionData) {
RecordUserAction.record("EnhancedBookmarks.EditAfterCreateButtonClicked");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the same as a previous comment about RecordUserAction

BookmarkUtils.startEditActivity(activity, bookmarkId);
}
};
}
}
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