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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/NotificationTitleUpdatedTest.java

Issue 1847063005: [Media, UI] Change MediaNotification style to MediaStyle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed nits Created 4 years, 8 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.media.ui; 5 package org.chromium.chrome.browser.media.ui;
6 6
7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE; 7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE;
8 8
9 import android.app.Notification; 9 import android.app.Notification;
10 import android.test.suitebuilder.annotation.SmallTest; 10 import android.test.suitebuilder.annotation.SmallTest;
11 import android.view.View; 11 import android.view.View;
12 import android.widget.TextView; 12 import android.widget.TextView;
13 13
14 import org.chromium.base.ObserverList; 14 import org.chromium.base.ObserverList;
15 import org.chromium.base.ThreadUtils; 15 import org.chromium.base.ThreadUtils;
16 import org.chromium.base.test.util.CommandLineFlags;
16 import org.chromium.base.test.util.Restriction; 17 import org.chromium.base.test.util.Restriction;
17 import org.chromium.chrome.R; 18 import org.chromium.chrome.R;
18 import org.chromium.chrome.browser.ChromeActivity; 19 import org.chromium.chrome.browser.ChromeActivity;
20 import org.chromium.chrome.browser.ChromeFeatureList;
19 import org.chromium.chrome.browser.tab.Tab; 21 import org.chromium.chrome.browser.tab.Tab;
20 import org.chromium.chrome.test.ChromeActivityTestCaseBase; 22 import org.chromium.chrome.test.ChromeActivityTestCaseBase;
21 import org.chromium.chrome.test.util.ChromeRestriction; 23 import org.chromium.chrome.test.util.ChromeRestriction;
22 import org.chromium.chrome.test.util.browser.TabTitleObserver; 24 import org.chromium.chrome.test.util.browser.TabTitleObserver;
23 import org.chromium.content.browser.test.util.Criteria; 25 import org.chromium.content.browser.test.util.Criteria;
24 import org.chromium.content.browser.test.util.CriteriaHelper; 26 import org.chromium.content.browser.test.util.CriteriaHelper;
25 import org.chromium.content.browser.test.util.JavaScriptUtils; 27 import org.chromium.content.browser.test.util.JavaScriptUtils;
26 import org.chromium.content_public.browser.WebContentsObserver; 28 import org.chromium.content_public.browser.WebContentsObserver;
27 import org.chromium.content_public.common.MediaMetadata; 29 import org.chromium.content_public.common.MediaMetadata;
28 30
(...skipping 10 matching lines...) Expand all
39 super(ChromeActivity.class); 41 super(ChromeActivity.class);
40 } 42 }
41 43
42 @Override 44 @Override
43 protected void setUp() throws Exception { 45 protected void setUp() throws Exception {
44 super.setUp(); 46 super.setUp();
45 mTab = getActivity().getActivityTab(); 47 mTab = getActivity().getActivityTab();
46 simulateUpdateTitle(mTab, "title1"); 48 simulateUpdateTitle(mTab, "title1");
47 } 49 }
48 50
49 @SmallTest 51 private void testSessionStatePlayingInternal() throws InterruptedException {
50 public void testSessionStatePlaying() throws InterruptedException {
51 simulateMediaSessionStateChanged(mTab, true, false); 52 simulateMediaSessionStateChanged(mTab, true, false);
52 assertTitleMatches("title1"); 53 assertTitleMatches("title1");
53 simulateUpdateTitle(mTab, "title2"); 54 simulateUpdateTitle(mTab, "title2");
54 assertTitleMatches("title2"); 55 assertTitleMatches("title2");
55 } 56 }
56 57
57 @SmallTest 58 private void testSessionStatePausedInternal() throws InterruptedException {
58 public void testSessionStatePaused() throws InterruptedException {
59 simulateMediaSessionStateChanged(mTab, true, true); 59 simulateMediaSessionStateChanged(mTab, true, true);
60 assertTitleMatches("title1"); 60 assertTitleMatches("title1");
61 simulateUpdateTitle(mTab, "title2"); 61 simulateUpdateTitle(mTab, "title2");
62 assertTitleMatches("title2"); 62 assertTitleMatches("title2");
63 } 63 }
64 64
65 @SmallTest 65 private void testSessionStateUncontrollableInternal() throws InterruptedExce ption {
66 public void testSessionStateUncontrollable() throws InterruptedException {
67 simulateMediaSessionStateChanged(mTab, true, false); 66 simulateMediaSessionStateChanged(mTab, true, false);
68 assertTitleMatches("title1"); 67 assertTitleMatches("title1");
69 simulateMediaSessionStateChanged(mTab, false, false); 68 simulateMediaSessionStateChanged(mTab, false, false);
70 simulateUpdateTitle(mTab, "title2"); 69 simulateUpdateTitle(mTab, "title2");
71 } 70 }
72 71
73 @SmallTest 72 private void testMediaMetadataSetsTitleInternal() throws InterruptedExceptio n {
74 public void testMediaMetadaSetsTitle() throws InterruptedException {
75 simulateMediaSessionStateChanged(mTab, true, false, new MediaMetadata("t itle2", "", "")); 73 simulateMediaSessionStateChanged(mTab, true, false, new MediaMetadata("t itle2", "", ""));
76 assertTitleMatches("title2"); 74 assertTitleMatches("title2");
77 } 75 }
78 76
79 @SmallTest 77 private void testMediaMetadataOverridesTitleInternal() throws InterruptedExc eption {
80 public void testMediaMetadaOverridesTitle() throws InterruptedException {
81 simulateMediaSessionStateChanged(mTab, true, false, new MediaMetadata("t itle2", "", "")); 78 simulateMediaSessionStateChanged(mTab, true, false, new MediaMetadata("t itle2", "", ""));
82 assertTitleMatches("title2"); 79 assertTitleMatches("title2");
83 80
84 simulateUpdateTitle(mTab, "title3"); 81 simulateUpdateTitle(mTab, "title3");
85 assertTitleMatches("title2"); 82 assertTitleMatches("title2");
86 } 83 }
87 84
88 /** 85 /**
89 * Test if a notification accepts the title update from another tab, using t he following steps: 86 * Test if a notification accepts the title update from another tab, using t he following steps:
90 * 1. set the title of mTab, start the media session, a notification shoul d show up; 87 * 1. set the title of mTab, start the media session, a notification shoul d show up;
91 * 2. stop the media session of mTab, the notification shall hide; 88 * 2. stop the media session of mTab, the notification shall hide;
92 * 3. create newTab, set the title of mTab, start the media session of mTa b, 89 * 3. create newTab, set the title of mTab, start the media session of mTa b,
93 * a notification should show up; 90 * a notification should show up;
94 * 4. change the title of newTab and then mTab to different names, 91 * 4. change the title of newTab and then mTab to different names,
95 * the notification should have the title of newTab. 92 * the notification should have the title of newTab.
96 */ 93 */
97 @SmallTest 94 private void testMultipleTabsInternal() throws Throwable {
98 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE})
99 public void testMultipleTabs() throws Throwable {
100 simulateMediaSessionStateChanged(mTab, true, false); 95 simulateMediaSessionStateChanged(mTab, true, false);
101 assertTitleMatches("title1"); 96 assertTitleMatches("title1");
102 simulateMediaSessionStateChanged(mTab, false, false); 97 simulateMediaSessionStateChanged(mTab, false, false);
103 98
104 Tab newTab = loadUrlInNewTab("about:blank"); 99 Tab newTab = loadUrlInNewTab("about:blank");
105 assertNotNull(newTab); 100 assertNotNull(newTab);
106 101
107 simulateMediaSessionStateChanged(newTab, true, false); 102 simulateMediaSessionStateChanged(newTab, true, false);
108 simulateUpdateTitle(newTab, "title3"); 103 simulateUpdateTitle(newTab, "title3");
109 simulateUpdateTitle(mTab, "title2"); 104 simulateUpdateTitle(mTab, "title2");
110 assertTitleMatches("title3"); 105 assertTitleMatches("title3");
111 } 106 }
112 107
108 @SmallTest
109 @CommandLineFlags.Add("enable-features=MediaStyleNotification")
110 public void testSessionStatePlaying_MediaStyleNotification() throws Interrup tedException {
111 testSessionStatePlayingInternal();
112 }
113
114 @SmallTest
115 @CommandLineFlags.Add("enable-features=MediaStyleNotification")
116 public void testSessionStatePaused_MediaStyleNotification() throws Interrupt edException {
117 testSessionStatePausedInternal();
118 }
119
120 @SmallTest
121 @CommandLineFlags.Add("enable-features=MediaStyleNotification")
122 public void testSessionStateUncontrollable_MediaStyleNotification()
123 throws InterruptedException {
124 testSessionStateUncontrollableInternal();
125 }
126
127 @SmallTest
128 @CommandLineFlags.Add("enable-features=MediaStyleNotification")
129 public void testMediaMetadataSetsTitle_MediaStyleNotification() throws Inter ruptedException {
130 testMediaMetadataSetsTitleInternal();
131 }
132
133 @SmallTest
134 @CommandLineFlags.Add("enable-features=MediaStyleNotification")
135 public void testMediaMetadataOverridesTitle_MediaStyleNotification()
136 throws InterruptedException {
137 testMediaMetadataOverridesTitleInternal();
138 }
139
140 @SmallTest
141 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE})
142 @CommandLineFlags.Add("enable-features=MediaStyleNotification")
143 public void testMultipleTabs_MediaStyleNotification() throws Throwable {
144 testMultipleTabsInternal();
145 }
146
147 @SmallTest
148 @CommandLineFlags.Add("disable-features=MediaStyleNotification")
149 public void testSessionStatePlaying_CustomNotification() throws InterruptedE xception {
150 testSessionStatePlayingInternal();
151 }
152
153 @SmallTest
154 @CommandLineFlags.Add("disable-features=MediaStyleNotification")
155 public void testSessionStatePaused_CustomNotification() throws InterruptedEx ception {
156 testSessionStatePausedInternal();
157 }
158
159 @SmallTest
160 @CommandLineFlags.Add("disable-features=MediaStyleNotification")
161 public void testSessionStateUncontrollable_CustomNotification() throws Inter ruptedException {
162 testSessionStateUncontrollableInternal();
163 }
164
165 @SmallTest
166 @CommandLineFlags.Add("disable-features=MediaStyleNotification")
167 public void testMediaMetadataSetsTitle_CustomNotification() throws Interrupt edException {
168 testMediaMetadataSetsTitleInternal();
169 }
170
171 @SmallTest
172 @CommandLineFlags.Add("disable-features=MediaStyleNotification")
173 public void testMediaMetadataOverridesTitle_CustomNotification() throws Inte rruptedException {
174 testMediaMetadataOverridesTitleInternal();
175 }
176
177 @SmallTest
178 @Restriction({ChromeRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON _LOW_END_DEVICE})
179 @CommandLineFlags.Add("disable-features=MediaStyleNotification")
180 public void testMultipleTabs_CustomNotification() throws Throwable {
181 testMultipleTabsInternal();
182 }
183
113 @Override 184 @Override
114 public void startMainActivity() throws InterruptedException { 185 public void startMainActivity() throws InterruptedException {
115 startMainActivityOnBlankPage(); 186 startMainActivityOnBlankPage();
116 } 187 }
117 188
118 private void simulateMediaSessionStateChanged( 189 private void simulateMediaSessionStateChanged(
119 final Tab tab, final boolean isControllable, final boolean isSuspend ed) { 190 final Tab tab, final boolean isControllable, final boolean isSuspend ed) {
120 simulateMediaSessionStateChanged( 191 simulateMediaSessionStateChanged(
121 tab, isControllable, isSuspended, new MediaMetadata("", "", "")) ; 192 tab, isControllable, isSuspended, new MediaMetadata("", "", "")) ;
122 } 193 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 233 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
163 @Override 234 @Override
164 public void run() { 235 public void run() {
165 Notification notification = 236 Notification notification =
166 MediaNotificationManager 237 MediaNotificationManager
167 .getNotificationBuilderForTesting(NOTIFICATI ON_ID) 238 .getNotificationBuilderForTesting(NOTIFICATI ON_ID)
168 .build(); 239 .build();
169 240
170 View contentView = notification.contentView.apply( 241 View contentView = notification.contentView.apply(
171 getActivity().getApplicationContext(), null); 242 getActivity().getApplicationContext(), null);
172 TextView titleView = (TextView) contentView.findViewById(R.i d.title); 243 String observedText = null;
173 assertEquals(title, titleView.getText()); 244 if (ChromeFeatureList.isEnabled(ChromeFeatureList.MEDIA_STYL E_NOTIFICATION)) {
245 TextView view = (TextView) contentView.findViewById(andr oid.R.id.title);
246 if (view == null) {
247 // Case where NotificationCompat does not use the na tive Notification.
248 // The TextView id will be in Chrome's namespace.
249 view = (TextView) contentView.findViewById(R.id.titl e);
250 }
251 observedText = view.getText().toString();
252 } else {
253 observedText = ((TextView) contentView.findViewById(R.id .title))
254 .getText()
255 .toString();
256 }
257 assertEquals(title, observedText);
174 } 258 }
175 }); 259 });
176 } 260 }
177 } 261 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698