Create AutocompleteMediator super class instead of patching, for capturing Android URL events in P3A

This commit is contained in:
Darnell Andries
2023-09-12 13:19:55 -07:00
parent 5f450f32da
commit 0576c813d2
13 changed files with 91 additions and 31 deletions
+4
View File
@@ -541,6 +541,10 @@
public <init>(...);
}
-keep class org.chromium.chrome.browser.omnibox.suggestions.BraveAutocompleteMediatorBase {
public <init>(...);
}
-keep class org.chromium.chrome.browser.notifications.permissions.NotificationPermissionRationaleDialogController {
*** wrapDialogDismissalCallback(...);
public <init>(...);
@@ -13,7 +13,6 @@ import androidx.annotation.Nullable;
import org.chromium.base.Callback;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.omnibox.LocationBarDataProvider;
import org.chromium.chrome.browser.omnibox.UrlBarEditingTextStateProvider;
import org.chromium.chrome.browser.omnibox.suggestions.basic.BasicSuggestionProcessor.BookmarkState;
@@ -24,13 +23,10 @@ import org.chromium.chrome.browser.profiles.ProfileManager;
import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabWindowManager;
import org.chromium.components.omnibox.AutocompleteMatch;
import org.chromium.components.omnibox.OmniboxSuggestionType;
import org.chromium.components.omnibox.action.OmniboxActionDelegate;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.url.GURL;
class BraveAutocompleteMediator extends AutocompleteMediator implements BraveSuggestionHost {
private static final String AUTOCOMPLETE_ENABLED = "brave.autocomplete_enabled";
@@ -78,19 +74,6 @@ class BraveAutocompleteMediator extends AutocompleteMediator implements BraveSug
super.onUrlFocusChange(hasFocus);
}
@Override
void loadUrlForOmniboxMatch(int matchIndex, @NonNull AutocompleteMatch suggestion,
@NonNull GURL url, long inputStart, boolean inVisibleSuggestionList) {
super.loadUrlForOmniboxMatch(
matchIndex, suggestion, url, inputStart, inVisibleSuggestionList);
if (suggestion.getType() == OmniboxSuggestionType.SEARCH_WHAT_YOU_TYPED
|| suggestion.getType() == OmniboxSuggestionType.SEARCH_SUGGEST) {
if (mContext != null && mContext instanceof BraveActivity) {
((BraveActivity) mContext).getMiscAndroidMetrics().recordLocationBarQuery();
}
}
}
@Override
public void removeBraveSearchSuggestion() {
if (mDropdownViewInfoListManager instanceof BraveDropdownItemViewInfoListManager) {
@@ -0,0 +1,33 @@
/* Copyright (c) 2023 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 https://mozilla.org/MPL/2.0/. */
package org.chromium.chrome.browser.omnibox.suggestions;
import android.content.Context;
import androidx.annotation.NonNull;
import org.chromium.base.BraveReflectionUtil;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.components.omnibox.AutocompleteMatch;
import org.chromium.components.omnibox.OmniboxSuggestionType;
import org.chromium.url.GURL;
class BraveAutocompleteMediatorBase {
void loadUrlForOmniboxMatch(int matchIndex, @NonNull AutocompleteMatch suggestion,
@NonNull GURL url, long inputStart, boolean inVisibleSuggestionList) {
BraveReflectionUtil.InvokeMethod(AutocompleteMediator.class, this, "loadUrlForOmniboxMatch",
int.class, matchIndex, AutocompleteMatch.class, suggestion, GURL.class, url,
long.class, inputStart, boolean.class, inVisibleSuggestionList);
if (suggestion.getType() == OmniboxSuggestionType.SEARCH_WHAT_YOU_TYPED
|| suggestion.getType() == OmniboxSuggestionType.SEARCH_SUGGEST) {
Context context = (Context) BraveReflectionUtil.getField(
AutocompleteMediator.class, "mContext", this);
if (context != null && context instanceof BraveActivity) {
((BraveActivity) context).getMiscAndroidMetrics().recordLocationBarQuery();
}
}
}
}
+5
View File
@@ -15,6 +15,11 @@
*** createViewProvider(...);
}
-keep class org.chromium.chrome.browser.omnibox.suggestions.AutocompleteMediator {
*** mContext;
*** loadUrlForOmniboxMatch(...);
}
-keep class org.chromium.components.browser_ui.site_settings.ContentSettingsResources {
*** getResourceItem(...);
}