Chromium Code Reviews| Index: chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewFocusTest.java |
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewFocusTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewFocusTest.java |
| index 294dbb31e731b848ea9b518bff0a96d144a7d3b1..e561fdcbff1b6bd5d7d990773c6802833c7d6660 100644 |
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewFocusTest.java |
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ContentViewFocusTest.java |
| @@ -9,6 +9,7 @@ import android.view.View; |
| import android.view.View.OnFocusChangeListener; |
| import org.chromium.base.ThreadUtils; |
| +import org.chromium.base.test.util.CallbackHelper; |
| import org.chromium.base.test.util.Feature; |
| import org.chromium.base.test.util.FlakyTest; |
| import org.chromium.base.test.util.Restriction; |
| @@ -24,6 +25,7 @@ import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher; |
| import org.chromium.content.browser.test.util.Criteria; |
| import org.chromium.content.browser.test.util.CriteriaHelper; |
| import org.chromium.content.browser.test.util.TestTouchUtils; |
| +import org.chromium.content_public.browser.WebContentsObserver; |
| import java.util.ArrayDeque; |
| @@ -37,6 +39,10 @@ public class ContentViewFocusTest extends ChromeTabbedActivityTestBase { |
| private final ArrayDeque<Boolean> mFocusChanges = new ArrayDeque<Boolean>(); |
| + private CallbackHelper mOnTitleUpdatedHelper; |
| + private WebContentsObserver mObserver; |
| + private String mTitle; |
| + |
| private void addFocusChangedListener(View view) { |
| view.setOnFocusChangeListener(new OnFocusChangeListener() { |
| @Override |
| @@ -176,6 +182,49 @@ public class ContentViewFocusTest extends ChromeTabbedActivityTestBase { |
| assertFalse("Unexpected focus change", haveFocusChanges()); |
| } |
| + /** |
| + * Verify ContentView window focus changes propagate to contents. |
| + * |
| + * @throws Exception |
| + */ |
| + @MediumTest |
| + public void testWindowFocusChangeTriggersBlur() throws Exception { |
| + mOnTitleUpdatedHelper = new CallbackHelper(); |
| + mObserver = new WebContentsObserver(getActivity().getActivityTab().getWebContents()) { |
|
Sami
2017/04/03 10:23:45
nit: Looks like mObserver could be a local variabl
mthiesse
2017/04/03 15:50:03
Done.
|
| + @Override |
| + public void titleWasSet(String title) { |
| + mTitle = title; |
| + mOnTitleUpdatedHelper.notifyCalled(); |
| + } |
| + }; |
| + int callCount = mOnTitleUpdatedHelper.getCallCount(); |
| + String url = UrlUtils.getIsolatedTestFileUrl( |
| + "chrome/test/data/android/content_view_focus/content_view_blur_focus.html"); |
| + loadUrl(url); |
| + final View view = getActivity().getActivityTab().getContentViewCore().getContainerView(); |
| + mOnTitleUpdatedHelper.waitForCallback(callCount); |
| + assertEquals("initial", mTitle); |
| + callCount = mOnTitleUpdatedHelper.getCallCount(); |
| + ThreadUtils.runOnUiThread(new Runnable() { |
| + @Override |
| + public void run() { |
| + view.onWindowFocusChanged(false); |
| + } |
| + }); |
| + mOnTitleUpdatedHelper.waitForCallback(callCount); |
| + assertEquals("blurred", mTitle); |
| + callCount = mOnTitleUpdatedHelper.getCallCount(); |
| + ThreadUtils.runOnUiThread(new Runnable() { |
| + @Override |
| + public void run() { |
| + view.onWindowFocusChanged(true); |
| + } |
| + }); |
| + mOnTitleUpdatedHelper.waitForCallback(callCount); |
| + assertEquals("focused", mTitle); |
| + getActivity().getActivityTab().getWebContents().removeObserver(mObserver); |
| + } |
| + |
| @Override |
| public void startMainActivity() throws InterruptedException { |
| startMainActivityOnBlankPage(); |