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(); |