Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Unified Diff: base/android/junit/src/org/chromium/base/BaseChromiumApplicationTest.java

Issue 1139913005: Replace WindowCallbackWrapper with a generated instance. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@battery
Patch Set: update assert Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/android/java/src/org/chromium/base/WindowCallbackWrapper.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/android/junit/src/org/chromium/base/BaseChromiumApplicationTest.java
diff --git a/base/android/junit/src/org/chromium/base/BaseChromiumApplicationTest.java b/base/android/junit/src/org/chromium/base/BaseChromiumApplicationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d3441f7895fed53357bb427c05a25cb8cd42eac5
--- /dev/null
+++ b/base/android/junit/src/org/chromium/base/BaseChromiumApplicationTest.java
@@ -0,0 +1,94 @@
+// Copyright 2015 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.base;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.app.Activity;
+import android.view.KeyEvent;
+
+import junit.framework.Assert;
+
+import org.chromium.base.BaseChromiumApplication.WindowFocusChangedListener;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.shadows.ShadowActivity;
+import org.robolectric.util.ActivityController;
+
+/** Unit tests for {@link BaseChromiumApplication}. */
+@RunWith(LocalRobolectricTestRunner.class)
+@Config(manifest = Config.NONE, application = BaseChromiumApplication.class,
+ shadows = {BaseChromiumApplicationTest.TrackingShadowActivity.class})
+public class BaseChromiumApplicationTest {
+
+ @Implements(Activity.class)
+ public static class TrackingShadowActivity extends ShadowActivity {
+ private int mWindowFocusCalls;
+ private int mDispatchKeyEventCalls;
+ private boolean mReturnValueForKeyDispatch;
+
+ @Implementation
+ public void onWindowFocusChanged(@SuppressWarnings("unused") boolean hasFocus) {
+ mWindowFocusCalls++;
+ }
+
+ @Implementation
+ public boolean dispatchKeyEvent(@SuppressWarnings("unused") KeyEvent event) {
+ mDispatchKeyEventCalls++;
+ return mReturnValueForKeyDispatch;
+ }
+ }
+
+ @Test
+ public void testWindowsFocusChanged() throws Exception {
+ BaseChromiumApplication app = (BaseChromiumApplication) Robolectric.application;
+
+ WindowFocusChangedListener mock = mock(WindowFocusChangedListener.class);
+ app.registerWindowFocusChangedListener(mock);
+
+ ActivityController<Activity> controller =
+ Robolectric.buildActivity(Activity.class).create().start().visible();
+ TrackingShadowActivity shadow =
+ (TrackingShadowActivity) Robolectric.shadowOf(controller.get());
+
+ controller.get().getWindow().getCallback().onWindowFocusChanged(true);
+ // Assert that listeners were notified.
+ verify(mock).onWindowFocusChanged(controller.get(), true);
+ // Also ensure that the original activity is forwarded the notification.
+ Assert.assertEquals(1, shadow.mWindowFocusCalls);
+ }
+
+ @Test
+ public void testDispatchKeyEvent() throws Exception {
+ ActivityController<Activity> controller =
+ Robolectric.buildActivity(Activity.class).create().start().visible();
+ TrackingShadowActivity shadow =
+ (TrackingShadowActivity) Robolectric.shadowOf(controller.get());
+
+ final KeyEvent menuKey = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU);
+
+ // Ensure that key events are forwarded.
+ Assert.assertFalse(controller.get().getWindow().getCallback().dispatchKeyEvent(menuKey));
+ // This gets called twice - once to see if the activity is swallowing it, and again to
+ // dispatch it.
+ Assert.assertEquals(2, shadow.mDispatchKeyEventCalls);
+
+ // Ensure that our activity can swallow the event.
+ shadow.mReturnValueForKeyDispatch = true;
+ Assert.assertTrue(controller.get().getWindow().getCallback().dispatchKeyEvent(menuKey));
+ Assert.assertEquals(3, shadow.mDispatchKeyEventCalls);
+
+ // A non-enter key only dispatches once.
+ Assert.assertTrue(controller.get().getWindow().getCallback().dispatchKeyEvent(
+ new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SPACE)));
+ Assert.assertEquals(4, shadow.mDispatchKeyEventCalls);
+ }
+}
« no previous file with comments | « base/android/java/src/org/chromium/base/WindowCallbackWrapper.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698