Commit 79cbb1c8 authored by Evan Stade's avatar Evan Stade Committed by Commit Bot

Prepare FindResultBar for //components by removing Chrome dependencies

Bug: 1038415
Change-Id: I8dbdfdc17d1fd88e75a77d86346b2153a6aa3afd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1989863Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarJinsuk Kim <jinsukkim@chromium.org>
Commit-Queue: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#730966}
parent 3f7a623e
...@@ -2,6 +2,7 @@ include_rules = [ ...@@ -2,6 +2,7 @@ include_rules = [
"+chrome/browser/ui/android/widget", "+chrome/browser/ui/android/widget",
"+chrome/browser/ui/messages/android/java", "+chrome/browser/ui/messages/android/java",
"+components/autofill/android/java/src/org/chromium/components/autofill", "+components/autofill/android/java/src/org/chromium/components/autofill",
"+components/embedder_support/android/java",
"+components/feature_engagement/public", "+components/feature_engagement/public",
"-content/public/android", "-content/public/android",
"+content/public/android/java/src/org/chromium/content_public", "+content/public/android/java/src/org/chromium/content_public",
......
...@@ -40,7 +40,6 @@ import android.content.res.Configuration; ...@@ -40,7 +40,6 @@ import android.content.res.Configuration;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.Surface; import android.view.Surface;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -78,6 +77,7 @@ import org.chromium.chrome.browser.tab.TabHidingType; ...@@ -78,6 +77,7 @@ import org.chromium.chrome.browser.tab.TabHidingType;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features;
import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
import org.chromium.components.embedder_support.view.ContentView;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.display.DisplayAndroid; import org.chromium.ui.display.DisplayAndroid;
...@@ -102,7 +102,7 @@ public class ManualFillingControllerTest { ...@@ -102,7 +102,7 @@ public class ManualFillingControllerTest {
private ChromeActivity mMockActivity; private ChromeActivity mMockActivity;
private WebContents mLastMockWebContents; private WebContents mLastMockWebContents;
@Mock @Mock
private ViewGroup mMockContentView; private ContentView mMockContentView;
@Mock @Mock
private TabModelSelector mMockTabModelSelector; private TabModelSelector mMockTabModelSelector;
@Mock @Mock
......
...@@ -72,6 +72,7 @@ android_library("java") { ...@@ -72,6 +72,7 @@ android_library("java") {
"//chrome/browser/preferences:java", "//chrome/browser/preferences:java",
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//components/browser_ui/modaldialog/android:java", "//components/browser_ui/modaldialog/android:java",
"//components/embedder_support/android:content_view_java",
"//components/policy/android:policy_java", "//components/policy/android:policy_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//device/vr:java", "//device/vr:java",
......
...@@ -22,9 +22,10 @@ import android.widget.FrameLayout; ...@@ -22,9 +22,10 @@ import android.widget.FrameLayout;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.MathUtils; import org.chromium.base.MathUtils;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.embedder_support.view.ContentView;
import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.interpolators.BakedBezierInterpolator; import org.chromium.ui.interpolators.BakedBezierInterpolator;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -55,8 +56,8 @@ class FindResultBar extends View { ...@@ -55,8 +56,8 @@ class FindResultBar extends View {
private final int mMinGapBetweenStacks; private final int mMinGapBetweenStacks;
private final int mStackedResultHeight; private final int mStackedResultHeight;
private final Tab mTab;
private FindInPageBridge mFindInPageBridge; private FindInPageBridge mFindInPageBridge;
private final ContentView mContentView;
int mRectsVersion = -1; int mRectsVersion = -1;
private RectF[] mMatches = new RectF[0]; private RectF[] mMatches = new RectF[0];
...@@ -85,9 +86,12 @@ class FindResultBar extends View { ...@@ -85,9 +86,12 @@ class FindResultBar extends View {
/** /**
* Creates an instance of a {@link FindResultBar}. * Creates an instance of a {@link FindResultBar}.
* @param context The Context to create this {@link FindResultBar} under. * @param context The Context to create this {@link FindResultBar} under.
* @param tab The Tab containing the ContentView this {@link FindResultBar} will be drawn in. * @param contentView The ContentView that holds the WebContents that is being searched. The
* WebContents must have been attached to a view hierarchy and have a WindowAndroid.
* @param findInPageBridge Facilitator for user interactions.
*/ */
public FindResultBar(Context context, Tab tab, FindInPageBridge findInPageBridge) { public FindResultBar(
Context context, ContentView contentView, FindInPageBridge findInPageBridge) {
super(context); super(context);
Resources res = context.getResources(); Resources res = context.getResources();
...@@ -121,8 +125,9 @@ class FindResultBar extends View { ...@@ -121,8 +125,9 @@ class FindResultBar extends View {
mStrokePaint.setStrokeWidth(1.0f); mStrokePaint.setStrokeWidth(1.0f);
mFindInPageBridge = findInPageBridge; mFindInPageBridge = findInPageBridge;
mTab = tab;
mTab.getContentView().addView(this, mContentView = contentView;
mContentView.addView(this,
new FrameLayout.LayoutParams( new FrameLayout.LayoutParams(
mBarTouchWidth, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.END)); mBarTouchWidth, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.END));
setTranslationX(MathUtils.flipSignIf(mBarTouchWidth, LocalizationUtils.isLayoutRtl())); setTranslationX(MathUtils.flipSignIf(mBarTouchWidth, LocalizationUtils.isLayoutRtl()));
...@@ -130,7 +135,11 @@ class FindResultBar extends View { ...@@ -130,7 +135,11 @@ class FindResultBar extends View {
mVisibilityAnimation = ObjectAnimator.ofFloat(this, TRANSLATION_X, 0); mVisibilityAnimation = ObjectAnimator.ofFloat(this, TRANSLATION_X, 0);
mVisibilityAnimation.setDuration(VISIBILITY_ANIMATION_DURATION_MS); mVisibilityAnimation.setDuration(VISIBILITY_ANIMATION_DURATION_MS);
mVisibilityAnimation.setInterpolator(BakedBezierInterpolator.FADE_IN_CURVE); mVisibilityAnimation.setInterpolator(BakedBezierInterpolator.FADE_IN_CURVE);
mTab.getWindowAndroid().startAnimationOverContent(mVisibilityAnimation); WindowAndroid window = mContentView.getWebContents().getTopLevelNativeWindow();
if (window == null) {
throw new IllegalArgumentException("ContentView must be attached to a window.");
}
window.startAnimationOverContent(mVisibilityAnimation);
} }
/** Dismisses this results bar by removing it from the view hierarchy. */ /** Dismisses this results bar by removing it from the view hierarchy. */
...@@ -145,7 +154,8 @@ class FindResultBar extends View { ...@@ -145,7 +154,8 @@ class FindResultBar extends View {
MathUtils.flipSignIf(mBarTouchWidth, LocalizationUtils.isLayoutRtl())); MathUtils.flipSignIf(mBarTouchWidth, LocalizationUtils.isLayoutRtl()));
mVisibilityAnimation.setDuration(VISIBILITY_ANIMATION_DURATION_MS); mVisibilityAnimation.setDuration(VISIBILITY_ANIMATION_DURATION_MS);
mVisibilityAnimation.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE); mVisibilityAnimation.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE);
mTab.getWindowAndroid().startAnimationOverContent(mVisibilityAnimation); mContentView.getWebContents().getTopLevelNativeWindow().startAnimationOverContent(
mVisibilityAnimation);
mVisibilityAnimation.addListener(new AnimatorListenerAdapter() { mVisibilityAnimation.addListener(new AnimatorListenerAdapter() {
@Override @Override
public void onAnimationEnd(Animator animation) { public void onAnimationEnd(Animator animation) {
......
...@@ -744,7 +744,8 @@ public class FindToolbar extends LinearLayout { ...@@ -744,7 +744,8 @@ public class FindToolbar extends LinearLayout {
&& mCurrentTab.getWebContents() != null) { && mCurrentTab.getWebContents() != null) {
assert mFindInPageBridge != null; assert mFindInPageBridge != null;
mResultBar = new FindResultBar(getContext(), mCurrentTab, mFindInPageBridge); mResultBar = new FindResultBar(
getContext(), mCurrentTab.getContentView(), mFindInPageBridge);
} else if (!visibility) { } else if (!visibility) {
if (mResultBar != null) { if (mResultBar != null) {
mResultBar.dismiss(); mResultBar.dismiss();
......
...@@ -6,13 +6,13 @@ package org.chromium.chrome.browser.tab; ...@@ -6,13 +6,13 @@ package org.chromium.chrome.browser.tab;
import android.content.Context; import android.content.Context;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.chromium.base.UserDataHost; import org.chromium.base.UserDataHost;
import org.chromium.chrome.browser.native_page.NativePage; import org.chromium.chrome.browser.native_page.NativePage;
import org.chromium.components.embedder_support.view.ContentView;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
...@@ -78,7 +78,7 @@ public interface Tab extends TabLifecycle { ...@@ -78,7 +78,7 @@ public interface Tab extends TabLifecycle {
* @return Content view used for rendered web contents. Can be null * @return Content view used for rendered web contents. Can be null
* if web contents is null. * if web contents is null.
*/ */
ViewGroup getContentView(); ContentView getContentView();
/** /**
* @return The {@link View} displaying the current page in the tab. This can be {@code null}, if * @return The {@link View} displaying the current page in the tab. This can be {@code null}, if
......
...@@ -13,7 +13,6 @@ import android.graphics.Rect; ...@@ -13,7 +13,6 @@ import android.graphics.Rect;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.View.OnAttachStateChangeListener; import android.view.View.OnAttachStateChangeListener;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEvent;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -95,7 +94,7 @@ public class TabImpl implements Tab { ...@@ -95,7 +94,7 @@ public class TabImpl implements Tab {
private WebContents mWebContents; private WebContents mWebContents;
/** The parent view of the ContentView and the InfoBarContainer. */ /** The parent view of the ContentView and the InfoBarContainer. */
private ViewGroup mContentView; private ContentView mContentView;
/** A list of Tab observers. These are used to broadcast Tab events to listeners. */ /** A list of Tab observers. These are used to broadcast Tab events to listeners. */
private final ObserverList<TabObserver> mObservers = new ObserverList<>(); private final ObserverList<TabObserver> mObservers = new ObserverList<>();
...@@ -334,7 +333,7 @@ public class TabImpl implements Tab { ...@@ -334,7 +333,7 @@ public class TabImpl implements Tab {
} }
@Override @Override
public ViewGroup getContentView() { public ContentView getContentView() {
return mContentView; return mContentView;
} }
......
...@@ -102,6 +102,10 @@ public class ContentView extends FrameLayout ...@@ -102,6 +102,10 @@ public class ContentView extends FrameLayout
setOnSystemUiVisibilityChangeListener(this); setOnSystemUiVisibilityChangeListener(this);
} }
public WebContents getWebContents() {
return mWebContents;
}
protected WebContentsAccessibility getWebContentsAccessibility() { protected WebContentsAccessibility getWebContentsAccessibility() {
return !mWebContents.isDestroyed() ? WebContentsAccessibility.fromWebContents(mWebContents) return !mWebContents.isDestroyed() ? WebContentsAccessibility.fromWebContents(mWebContents)
: null; : null;
......
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