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

Side by Side 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: 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chromecast.shell;
6
7 import static org.mockito.Mockito.any;
8 import static org.mockito.Mockito.eq;
9 import static org.mockito.Mockito.verify;
10
11 import android.app.Activity;
12 import android.content.BroadcastReceiver;
13 import android.content.Context;
14 import android.content.Intent;
15 import android.content.IntentFilter;
16 import android.content.ServiceConnection;
17 import android.os.PatternMatcher;
18 import android.support.v4.content.LocalBroadcastManager;
19
20 import org.junit.Assert;
21 import org.junit.Assume;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.junit.runner.RunWith;
25 import org.mockito.ArgumentCaptor;
26 import org.mockito.Mock;
27 import org.mockito.Mockito;
28 import org.mockito.MockitoAnnotations;
29 import org.robolectric.Robolectric;
30 import org.robolectric.Shadows;
31 import org.robolectric.annotation.Config;
32 import org.robolectric.shadows.ShadowActivity;
33
34 import org.chromium.content_public.browser.WebContents;
35 import org.chromium.testing.local.LocalRobolectricTestRunner;
36
37 /**
38 * Tests for CastWebContentsComponent.
39 */
40 @RunWith(LocalRobolectricTestRunner.class)
41 @Config(manifest = Config.NONE)
42 public class CastWebContentsComponentTest {
43 private static final String INSTANCE_ID = "1";
44
45 @Mock
46 private WebContents mWebContents;
47
48 private Activity mActivity;
49 private ShadowActivity mShadowActivity;
50
51 @Before
52 public void setUp() {
53 MockitoAnnotations.initMocks(this);
54 mActivity = Mockito.spy(Robolectric.buildActivity(Activity.class).setup( ).get());
55 mShadowActivity = Shadows.shadowOf(mActivity);
56 }
57
58 @Test
59 public void testStartStartsWebContentsActivity() {
60 Assume.assumeFalse(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
61
62 CastWebContentsComponent component = new CastWebContentsComponent(INSTAN CE_ID);
63 component.start(mActivity, mWebContents);
64 Intent intent = mShadowActivity.getNextStartedActivity();
65 Assert.assertEquals(
66 intent.getComponent().getClassName(), CastWebContentsActivity.cl ass.getName());
67
68 component.stop(mActivity);
69 }
70
71 @Test
72 public void testStopSendsStopSignalToActivity() {
73 Assume.assumeFalse(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
74
75 BroadcastReceiver receiver = Mockito.mock(BroadcastReceiver.class);
76 IntentFilter intentFilter = new IntentFilter(CastWebContentsActivity.ACT ION_STOP_ACTIVITY);
77 intentFilter.addDataScheme(CastWebContentsComponent.ACTION_DATA_SCHEME);
78 intentFilter.addDataAuthority(CastWebContentsComponent.ACTION_DATA_AUTHO RITY, null);
79 intentFilter.addDataPath("/" + INSTANCE_ID, PatternMatcher.PATTERN_LITER AL);
80 LocalBroadcastManager.getInstance(mActivity).registerReceiver(receiver, intentFilter);
81
82 CastWebContentsComponent component = new CastWebContentsComponent(INSTAN CE_ID);
83 component.start(mActivity, mWebContents);
84 component.stop(mActivity);
85
86 LocalBroadcastManager.getInstance(mActivity).unregisterReceiver(receiver );
87
88 verify(receiver).onReceive(any(Context.class), any(Intent.class));
89 }
90
91 @Test
92 public void testStartBindsWebContentsService() {
93 Assume.assumeTrue(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
94
95 CastWebContentsComponent component = new CastWebContentsComponent(INSTAN CE_ID);
96 component.start(mActivity, mWebContents);
97 component.stop(mActivity);
98
99 ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
100 verify(mActivity).bindService(
101 intent.capture(), any(ServiceConnection.class), eq(Context.BIND_ AUTO_CREATE));
102 Assert.assertEquals(intent.getValue().getComponent().getClassName(),
103 CastWebContentsService.class.getName());
104 }
105
106 @Test
107 public void testStopUnbindsWebContentsService() {
108 Assume.assumeTrue(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE);
109
110 CastWebContentsComponent component = new CastWebContentsComponent(INSTAN CE_ID);
111 component.start(mActivity, mWebContents);
112 component.stop(mActivity);
113
114 verify(mActivity).unbindService(any(ServiceConnection.class));
115 }
116
117 @Test
118 public void testOnComponentClosedCallsCallback() {
119 CastWebContentsComponent.OnComponentClosedHandler callback =
120 Mockito.mock(CastWebContentsComponent.OnComponentClosedHandler.c lass);
121
122 CastWebContentsComponent component = new CastWebContentsComponent(INSTAN CE_ID);
123 component.setOnComponentClosedHandler(callback);
124 component.start(mActivity, mWebContents);
125 component.onComponentClosed(mActivity, INSTANCE_ID);
126 verify(callback).onComponentClosed();
127
128 component.stop(mActivity);
129 }
130
131 @Test
132 public void testOnKeyDownCallsCallback() {
133 CastWebContentsComponent.OnKeyDownHandler callback =
134 Mockito.mock(CastWebContentsComponent.OnKeyDownHandler.class);
135
136 CastWebContentsComponent component = new CastWebContentsComponent(INSTAN CE_ID);
137 component.setOnKeyDownHandler(callback);
138 component.start(mActivity, mWebContents);
139 component.onKeyDown(mActivity, INSTANCE_ID, 42);
Simeon 2017/05/17 00:31:56 Since this is a static method, we might want to in
thoren 2017/05/17 18:20:37 Done. I didn't even realized I did it that way her
140 component.stop(mActivity);
141
142 verify(callback).onKeyDown(42);
143 }
144 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698