Commit e1751656 authored by Shakti Sahu's avatar Shakti Sahu Committed by Commit Bot

Query Tiles: Fixed missing query tiles after omnibox view recycling

This CL fixes a bug where query tiles suggestion was disappearing after
the view is recycled, since we didn't bind the view correctly.

Bug: 1081130
Change-Id: I6bc98d547ae851a662ed26f772e3ea7a7dfb519b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2245693Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#778587}
parent d8a7941d
......@@ -1192,7 +1192,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/omnibox/suggestions/tail/TailSuggestionViewProperties.java",
"java/src/org/chromium/chrome/browser/omnibox/suggestions/tiles/TileSuggestionProcessor.java",
"java/src/org/chromium/chrome/browser/omnibox/suggestions/tiles/TileSuggestionProperties.java",
"java/src/org/chromium/chrome/browser/omnibox/suggestions/tiles/TileSuggestionViewBinder.java",
"java/src/org/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService.java",
"java/src/org/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler.java",
"java/src/org/chromium/chrome/browser/page_info/ChromePageInfoControllerDelegate.java",
......
......@@ -35,7 +35,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.header.HeaderView;
import org.chromium.chrome.browser.omnibox.suggestions.header.HeaderViewBinder;
import org.chromium.chrome.browser.omnibox.suggestions.tail.TailSuggestionView;
import org.chromium.chrome.browser.omnibox.suggestions.tail.TailSuggestionViewBinder;
import org.chromium.chrome.browser.omnibox.suggestions.tiles.TileSuggestionViewBinder;
import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.share.ShareDelegate;
......@@ -169,7 +168,7 @@ public class AutocompleteCoordinatorImpl implements AutocompleteCoordinator {
adapter.registerType(
OmniboxSuggestionUiType.TILE_SUGGESTION,
parent -> mQueryTileCoordinator.createView(parent.getContext()),
TileSuggestionViewBinder::bind);
mQueryTileCoordinator::bind);
adapter.registerType(
OmniboxSuggestionUiType.HEADER,
......
......@@ -26,6 +26,8 @@ import org.chromium.components.query_tiles.QueryTileConstants;
import org.chromium.components.query_tiles.TileUmaLogger;
import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.ui.UiUtils;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -77,11 +79,22 @@ public class OmniboxQueryTileCoordinator {
org.chromium.chrome.R.layout.omnibox_query_tiles_suggestion, null);
View tilesView = getTileCoordinator().getView();
if (tilesView.getParent() != suggestionView) UiUtils.removeViewFromParent(tilesView);
if (tilesView.getParent() != null) UiUtils.removeViewFromParent(tilesView);
suggestionView.addView(tilesView);
return suggestionView;
}
/**
* A mechanism for binding query tile suggestion properties to its view.
* @see PropertyModelChangeProcessor.ViewBinder#bind(Object, Object, Object).
*/
public void bind(PropertyModel model, View view, PropertyKey propertyKey) {
ViewGroup suggestionView = (ViewGroup) view;
View tilesView = getTileCoordinator().getView();
if (tilesView.getParent() != null) UiUtils.removeViewFromParent(tilesView);
suggestionView.addView(tilesView);
}
/** @return A {@link ImageTileCoordinator} instance. Creates if it doesn't exist yet. */
private ImageTileCoordinator getTileCoordinator() {
if (mTileCoordinator == null) {
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// 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.omnibox.suggestions.tiles;
import android.view.View;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
/** A mechanism for binding query tile suggestion properties to its view. */
public class TileSuggestionViewBinder {
/** @see PropertyModelChangeProcessor.ViewBinder#bind(Object, Object, Object) */
public static void bind(PropertyModel model, View view, PropertyKey propertyKey) {}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment