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

Unified Diff: chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java

Issue 2874943002: [Chromecast] Add service for "displaying" cast web contents. (Closed)
Patch Set: [Chromecast] Add service for "displaying" cast web contents. Created 3 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 | « chromecast/browser/android/apk/templates/BuildConfig.template ('k') | chromecast/chromecast.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java
diff --git a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c3709c38eed42c34943e20ef1ea60faba50d808
--- /dev/null
+++ b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java
@@ -0,0 +1,144 @@
+// Copyright 2017 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.chromecast.shell;
+
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.ServiceConnection;
+import android.os.PatternMatcher;
+import android.support.v4.content.LocalBroadcastManager;
+
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowActivity;
+
+import org.chromium.content_public.browser.WebContents;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
+
+/**
+ * Tests for CastWebContentsComponent.
+ */
+@RunWith(LocalRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class CastWebContentsComponentTest {
+ private static final String INSTANCE_ID = "1";
+
+ @Mock
+ private WebContents mWebContents;
+
+ private Activity mActivity;
+ private ShadowActivity mShadowActivity;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mActivity = Mockito.spy(Robolectric.buildActivity(Activity.class).setup().get());
+ mShadowActivity = Shadows.shadowOf(mActivity);
+ }
+
+ @Test
+ public void testStartStartsWebContentsActivity() {
+ Assume.assumeFalse(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
+
+ CastWebContentsComponent component = new CastWebContentsComponent(INSTANCE_ID, null, null);
+ component.start(mActivity, mWebContents);
+ Intent intent = mShadowActivity.getNextStartedActivity();
+ Assert.assertEquals(
+ intent.getComponent().getClassName(), CastWebContentsActivity.class.getName());
+
+ component.stop(mActivity);
+ }
+
+ @Test
+ public void testStopSendsStopSignalToActivity() {
+ Assume.assumeFalse(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
+
+ BroadcastReceiver receiver = Mockito.mock(BroadcastReceiver.class);
+ IntentFilter intentFilter = new IntentFilter(CastWebContentsActivity.ACTION_STOP_ACTIVITY);
+ intentFilter.addDataScheme(CastWebContentsComponent.ACTION_DATA_SCHEME);
+ intentFilter.addDataAuthority(CastWebContentsComponent.ACTION_DATA_AUTHORITY, null);
+ intentFilter.addDataPath("/" + INSTANCE_ID, PatternMatcher.PATTERN_LITERAL);
+ LocalBroadcastManager.getInstance(mActivity).registerReceiver(receiver, intentFilter);
+
+ CastWebContentsComponent component = new CastWebContentsComponent(INSTANCE_ID, null, null);
+ component.start(mActivity, mWebContents);
+ component.stop(mActivity);
+
+ LocalBroadcastManager.getInstance(mActivity).unregisterReceiver(receiver);
+
+ verify(receiver).onReceive(any(Context.class), any(Intent.class));
+ }
+
+ @Test
+ public void testStartBindsWebContentsService() {
+ Assume.assumeTrue(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
+
+ CastWebContentsComponent component = new CastWebContentsComponent(INSTANCE_ID, null, null);
+ component.start(mActivity, mWebContents);
+ component.stop(mActivity);
+
+ ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
+ verify(mActivity).bindService(
+ intent.capture(), any(ServiceConnection.class), eq(Context.BIND_AUTO_CREATE));
+ Assert.assertEquals(intent.getValue().getComponent().getClassName(),
+ CastWebContentsService.class.getName());
+ }
+
+ @Test
+ public void testStopUnbindsWebContentsService() {
+ Assume.assumeTrue(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
+
+ CastWebContentsComponent component = new CastWebContentsComponent(INSTANCE_ID, null, null);
+ component.start(mActivity, mWebContents);
+ component.stop(mActivity);
+
+ verify(mActivity).unbindService(any(ServiceConnection.class));
+ }
+
+ @Test
+ public void testOnComponentClosedCallsCallback() {
+ CastWebContentsComponent.OnComponentClosedHandler callback =
+ Mockito.mock(CastWebContentsComponent.OnComponentClosedHandler.class);
+
+ CastWebContentsComponent component =
+ new CastWebContentsComponent(INSTANCE_ID, callback, null);
+ component.start(mActivity, mWebContents);
+ CastWebContentsComponent.onComponentClosed(mActivity, INSTANCE_ID);
+ verify(callback).onComponentClosed();
+
+ component.stop(mActivity);
+ }
+
+ @Test
+ public void testOnKeyDownCallsCallback() {
+ CastWebContentsComponent.OnKeyDownHandler callback =
+ Mockito.mock(CastWebContentsComponent.OnKeyDownHandler.class);
+
+ CastWebContentsComponent component =
+ new CastWebContentsComponent(INSTANCE_ID, null, callback);
+ component.start(mActivity, mWebContents);
+ CastWebContentsComponent.onKeyDown(mActivity, INSTANCE_ID, 42);
+ component.stop(mActivity);
+
+ verify(callback).onKeyDown(42);
+ }
+}
« no previous file with comments | « chromecast/browser/android/apk/templates/BuildConfig.template ('k') | chromecast/chromecast.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698