Commit b18d8880 authored by anthonyvd's avatar anthonyvd Committed by Commit Bot

Revert "[WebLayer] Fix crash when top controls view has 0 height"

This reverts commit e26a5125.

Reason for revert: Breaks this bot: https://ci.chromium.org/p/chromium/builders/ci/android-archive-rel/6141

Original change's description:
> [WebLayer] Fix crash when top controls view has 0 height
> 
> This happens because the adapter and layer for the top controls is only
> created once height and width are > 0. We were assuming this had already
> been created in setTopControlsOffset().
> 
> Change-Id: Idf104f9d5c951c1fa8719fa30661dceae59b4887
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1890492
> Commit-Queue: Clark DuVall <cduvall@chromium.org>
> Reviewed-by: Scott Violet <sky@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#710897}

TBR=sky@chromium.org,cduvall@chromium.org

Change-Id: I8304cc6583bdd606a4d52e8bd60cdf5957f7d384
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1890795Reviewed-by: default avataranthonyvd <anthonyvd@chromium.org>
Commit-Queue: anthonyvd <anthonyvd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710918}
parent 386ce1cf
...@@ -71,10 +71,8 @@ void TopControlsContainerView::SetTopControlsOffset( ...@@ -71,10 +71,8 @@ void TopControlsContainerView::SetTopControlsOffset(
const base::android::JavaParamRef<jobject>& caller, const base::android::JavaParamRef<jobject>& caller,
int top_controls_offset_y, int top_controls_offset_y,
int top_content_offset_y) { int top_content_offset_y) {
// |top_controls_layer_| may not be created if the top controls view has 0 DCHECK(top_controls_layer_);
// height. top_controls_layer_->SetPosition(gfx::PointF(0, top_controls_offset_y));
if (top_controls_layer_)
top_controls_layer_->SetPosition(gfx::PointF(0, top_controls_offset_y));
web_contents()->GetNativeView()->GetLayer()->SetPosition( web_contents()->GetNativeView()->GetLayer()->SetPosition(
gfx::PointF(0, top_content_offset_y)); gfx::PointF(0, top_content_offset_y));
} }
......
...@@ -131,11 +131,7 @@ public class InstrumentationActivityTestRule extends ActivityTestRule<Instrument ...@@ -131,11 +131,7 @@ public class InstrumentationActivityTestRule extends ActivityTestRule<Instrument
* Loads the given URL in the shell. * Loads the given URL in the shell.
*/ */
public void navigateAndWait(String url) { public void navigateAndWait(String url) {
navigateAndWait(getActivity().getBrowserController(), url); NavigationWaiter waiter = new NavigationWaiter(url, getActivity().getBrowserController());
}
public void navigateAndWait(BrowserController controller, String url) {
NavigationWaiter waiter = new NavigationWaiter(url, controller);
waiter.navigateAndWait(); waiter.navigateAndWait();
} }
......
...@@ -6,23 +6,19 @@ package org.chromium.weblayer.test; ...@@ -6,23 +6,19 @@ package org.chromium.weblayer.test;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
import android.view.View; import android.view.View;
import android.widget.FrameLayout;
import org.json.JSONObject;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.test.BaseJUnit4ClassRunner; import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.UrlUtils; import org.chromium.base.test.util.UrlUtils;
import org.chromium.content_public.browser.test.util.Criteria; import org.chromium.content_public.browser.test.util.Criteria;
import org.chromium.content_public.browser.test.util.CriteriaHelper; import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.weblayer.BrowserController; import org.chromium.weblayer.BrowserController;
import org.chromium.weblayer.BrowserFragment;
import org.chromium.weblayer.BrowserFragmentController;
import org.chromium.weblayer.WebLayer;
import org.chromium.weblayer.shell.InstrumentationActivity; import org.chromium.weblayer.shell.InstrumentationActivity;
/** /**
...@@ -36,43 +32,18 @@ public class TopControlsTest { ...@@ -36,43 +32,18 @@ public class TopControlsTest {
private int mTopControlsHeight; private int mTopControlsHeight;
private int mInitialVisiblePageHeight; private int mInitialVisiblePageHeight;
private BrowserController mBrowserController;
private BrowserFragmentController mBrowserFragmentController;
/** /**
* Returns the visible height of the page as determined by JS. The returned value is in CSS * Returns the visible height of the page as determined by JS. The returned value is in CSS
* pixels (which are most likely not the same as device pixels). * pixels (which are most likely not the same as device pixels).
*/ */
private int getVisiblePageHeight() { private int getVisiblePageHeight() {
return mActivityTestRule.executeScriptAndExtractInt("window.innerHeight"); try {
} JSONObject result = mActivityTestRule.executeScriptSync("window.innerHeight");
return result.getInt(BrowserController.SCRIPT_RESULT_KEY);
@Test } catch (Exception e) {
@SmallTest return -1;
public void testZeroHeight() throws Exception { }
InstrumentationActivity activity = mActivityTestRule.launchShellWithUrl(null);
TestThreadUtils.runOnUiThreadBlocking(() -> {
BrowserFragment fragment = WebLayer.createBrowserFragment(null);
activity.getSupportFragmentManager()
.beginTransaction()
.add(android.R.id.content, fragment)
.commitNow();
fragment.getController().setTopView(new FrameLayout(activity));
mBrowserFragmentController = fragment.getController();
mBrowserController = mBrowserFragmentController.getBrowserController();
});
mActivityTestRule.navigateAndWait(
mBrowserController, UrlUtils.encodeHtmlDataUri("<html></html>"));
// Calling setSupportsEmbedding() makes sure onTopControlsChanged() will get called, which
// should not crash.
CallbackHelper helper = new CallbackHelper();
TestThreadUtils.runOnUiThreadBlocking(() -> {
mBrowserFragmentController.setSupportsEmbedding(true).addCallback(
(Boolean result) -> { helper.notifyCalled(); });
});
helper.waitForCallback(0);
} }
@Test @Test
......
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