Bug 1385464 - Resolve obscure leaks and crashes after the upgrade; r?Grisha
- LoaderManager.destroyLoader(..) was added before the existing call to
LoaderManager.restartLoader(..) to prevent potential Cursor leaks
- Disable website suggestions depending on the address bar inputs when running
in automation to avoid Robocop tests failing (they were entering serially maybe
100 characters in <5 ms which created around that many new Threads,
operation that could cause the Executor to throw a RejectedExecutionException)
At the moment this functionality is not covered by tests anyway and it was the
only fix I could find that would not involve changing the whole implemenation
for address bar suggestions, implementation which in the real world works ok.
MozReview-Commit-ID: Krl9TCjAyzr
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -1430,22 +1430,27 @@ public class BrowserApp extends GeckoApp
mBrowserToolbar.setOnDismissListener(new BrowserToolbar.OnDismissListener() {
@Override
public void onDismiss() {
mBrowserToolbar.cancelEdit();
}
});
- mBrowserToolbar.setOnFilterListener(new BrowserToolbar.OnFilterListener() {
- @Override
- public void onFilter(String searchText, AutocompleteHandler handler) {
- filterEditingMode(searchText, handler);
- }
- });
+ // Website suggestions for address bar inputs should not be enabled when running in automation.
+ // After the upgrade to support library v.26 it could fail otherwise unrelated Robocop tests
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=1385464#c3
+ if (!isInAutomation) {
+ mBrowserToolbar.setOnFilterListener(new BrowserToolbar.OnFilterListener() {
+ @Override
+ public void onFilter(String searchText, AutocompleteHandler handler) {
+ filterEditingMode(searchText, handler);
+ }
+ });
+ }
mBrowserToolbar.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (isHomePagerVisible()) {
mHomeScreen.onToolbarFocusChange(hasFocus);
}
}
--- a/mobile/android/base/java/org/mozilla/gecko/home/SearchLoader.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/SearchLoader.java
@@ -67,16 +67,17 @@ class SearchLoader {
public static void restart(LoaderManager manager, int loaderId,
LoaderCallbacks<Cursor> callbacks, String searchTerm) {
restart(manager, loaderId, callbacks, searchTerm, EnumSet.noneOf(FilterFlags.class));
}
public static void restart(LoaderManager manager, int loaderId,
LoaderCallbacks<Cursor> callbacks, String searchTerm,
EnumSet<FilterFlags> flags) {
+ manager.destroyLoader(loaderId);
final Bundle args = createArgs(searchTerm, flags);
manager.restartLoader(loaderId, args, callbacks);
}
public static class SearchCursorLoader extends SimpleCursorLoader {
private static final String TELEMETRY_HISTOGRAM_LOAD_CURSOR = "FENNEC_SEARCH_LOADER_TIME_MS";
// Max number of search results.
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/ToolbarComponent.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/ToolbarComponent.java
@@ -16,17 +16,16 @@ import org.mozilla.gecko.tests.helpers.N
import org.mozilla.gecko.tests.helpers.WaitHelper;
import org.mozilla.gecko.toolbar.PageActionLayout;
import org.mozilla.gecko.toolbar.TabCounter;
import android.net.Uri;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
-import android.widget.TextSwitcher;
import android.widget.TextView;
import com.robotium.solo.Condition;
import com.robotium.solo.Solo;
import java.net.IDN;
/**