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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/TabsOpenedFromExternalAppTest.java

Issue 1688603004: AGSA-initiated weblite intents should be rewritten if Chrome can use weblite (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bug fix Created 4 years, 9 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; 5 package org.chromium.chrome.browser;
6 6
7 import android.content.Intent; 7 import android.content.Intent;
8 import android.net.Uri; 8 import android.net.Uri;
9 import android.os.Bundle; 9 import android.os.Bundle;
10 import android.os.Environment; 10 import android.os.Environment;
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 protected void tearDown() throws Exception { 170 protected void tearDown() throws Exception {
171 mTestServer.stopAndDestroyServer(); 171 mTestServer.stopAndDestroyServer();
172 super.tearDown(); 172 super.tearDown();
173 } 173 }
174 174
175 /** 175 /**
176 * Launch the specified URL as if it was triggered by an external applicatio n with id appId. 176 * Launch the specified URL as if it was triggered by an external applicatio n with id appId.
177 * Returns when the URL has been navigated to. 177 * Returns when the URL has been navigated to.
178 * @throws InterruptedException 178 * @throws InterruptedException
179 */ 179 */
180 private void launchUrlFromExternalApp(String url, String appId, boolean crea teNewTab, 180 private void launchUrlFromExternalApp(String url, String expectedUrl, String appId,
181 Bundle extras) throws InterruptedException { 181 boolean createNewTab, Bundle extras) throws InterruptedException {
182 final Intent intent = new Intent(Intent.ACTION_VIEW); 182 final Intent intent = new Intent(Intent.ACTION_VIEW);
183 if (appId != null) { 183 if (appId != null) {
184 intent.putExtra(Browser.EXTRA_APPLICATION_ID, appId); 184 intent.putExtra(Browser.EXTRA_APPLICATION_ID, appId);
185 } 185 }
186 if (createNewTab) { 186 if (createNewTab) {
187 intent.putExtra(Browser.EXTRA_CREATE_NEW_TAB, true); 187 intent.putExtra(Browser.EXTRA_CREATE_NEW_TAB, true);
188 } 188 }
189 intent.setData(Uri.parse(url)); 189 intent.setData(Uri.parse(url));
190 if (extras != null) intent.putExtras(extras); 190 if (extras != null) intent.putExtras(extras);
191 191
192 final Tab originalTab = getActivity().getActivityTab(); 192 final Tab originalTab = getActivity().getActivityTab();
193 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 193 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
194 @Override 194 @Override
195 public void run() { 195 public void run() {
196 getActivity().onNewIntent(intent); 196 getActivity().onNewIntent(intent);
197 } 197 }
198 }); 198 });
199 if (createNewTab) { 199 if (createNewTab) {
200 CriteriaHelper.pollForUIThreadCriteria(new Criteria("Failed to selec t different tab") { 200 CriteriaHelper.pollForUIThreadCriteria(new Criteria("Failed to selec t different tab") {
201 @Override 201 @Override
202 public boolean isSatisfied() { 202 public boolean isSatisfied() {
203 return getActivity().getActivityTab() != originalTab; 203 return getActivity().getActivityTab() != originalTab;
204 } 204 }
205 }); 205 });
206 } 206 }
207 ChromeTabUtils.waitForTabPageLoaded(getActivity().getActivityTab(), url) ; 207 ChromeTabUtils.waitForTabPageLoaded(getActivity().getActivityTab(), expe ctedUrl);
208 } 208 }
209 209
210 private void launchUrlFromExternalApp(String url, String appId, boolean crea teNewTab) 210 private void launchUrlFromExternalApp(String url, String appId, boolean crea teNewTab)
211 throws InterruptedException { 211 throws InterruptedException {
212 launchUrlFromExternalApp(url, appId, createNewTab, null); 212 launchUrlFromExternalApp(url, url, appId, createNewTab, null);
213 } 213 }
214 214
215 /** 215 /**
216 * Tests that URLs opened from external apps can set an android-app scheme r eferrer. 216 * Tests that URLs opened from external apps can set an android-app scheme r eferrer.
217 * @throws InterruptedException 217 * @throws InterruptedException
218 */ 218 */
219 @LargeTest 219 @LargeTest
220 @Feature({"Navigation"}) 220 @Feature({"Navigation"})
221 public void testReferrer() throws InterruptedException { 221 public void testReferrer() throws InterruptedException {
222 String url = mTestServer.getURL("/chrome/test/data/android/about.html"); 222 String url = mTestServer.getURL("/chrome/test/data/android/about.html");
223 startMainActivityFromLauncher(); 223 startMainActivityFromLauncher();
224 Bundle extras = new Bundle(); 224 Bundle extras = new Bundle();
225 extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(ANDROID_APP_REFERR ER)); 225 extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(ANDROID_APP_REFERR ER));
226 launchUrlFromExternalApp(url, EXTERNAL_APP_1_ID, true, extras); 226 launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, true, extras);
227 CriteriaHelper.pollForCriteria( 227 CriteriaHelper.pollForCriteria(
228 new ReferrerCriteria(getActivity().getActivityTab(), ANDROID_APP _REFERRER), 2000, 228 new ReferrerCriteria(getActivity().getActivityTab(), ANDROID_APP _REFERRER), 2000,
229 200); 229 200);
230 } 230 }
231 231
232 /** 232 /**
233 * Tests that URLs opened from external apps can set an android-app scheme r eferrer. 233 * Tests that URLs opened from external apps can set an android-app scheme r eferrer.
234 * @throws InterruptedException 234 * @throws InterruptedException
235 */ 235 */
236 @LargeTest 236 @LargeTest
237 @Feature({"Navigation"}) 237 @Feature({"Navigation"})
238 public void testCannotSetArbitraryReferrer() throws InterruptedException { 238 public void testCannotSetArbitraryReferrer() throws InterruptedException {
239 String url = mTestServer.getURL("/chrome/test/data/android/about.html"); 239 String url = mTestServer.getURL("/chrome/test/data/android/about.html");
240 startMainActivityFromLauncher(); 240 startMainActivityFromLauncher();
241 String referrer = "foobar://totally.legit.referrer"; 241 String referrer = "foobar://totally.legit.referrer";
242 Bundle extras = new Bundle(); 242 Bundle extras = new Bundle();
243 extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(referrer)); 243 extras.putParcelable(Intent.EXTRA_REFERRER, Uri.parse(referrer));
244 launchUrlFromExternalApp(url, EXTERNAL_APP_1_ID, true, extras); 244 launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, true, extras);
245 CriteriaHelper.pollForCriteria( 245 CriteriaHelper.pollForCriteria(
246 new ReferrerCriteria(getActivity().getActivityTab(), ""), 2000, 200); 246 new ReferrerCriteria(getActivity().getActivityTab(), ""), 2000, 200);
247 } 247 }
248 248
249 /** 249 /**
250 * Tests that URLs opened from the same external app don't create new tabs. 250 * Tests that URLs opened from the same external app don't create new tabs.
251 * @throws InterruptedException 251 * @throws InterruptedException
252 */ 252 */
253 @LargeTest 253 @LargeTest
254 @Feature({"Navigation"}) 254 @Feature({"Navigation"})
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 getActivity().onBackPressed(); 625 getActivity().onBackPressed();
626 } 626 }
627 }); 627 });
628 CriteriaHelper.pollForUIThreadCriteria(new Criteria() { 628 CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
629 @Override 629 @Override
630 public boolean isSatisfied() { 630 public boolean isSatisfied() {
631 return getActivity().getTabModelSelector().getTotalTabCount() == 1; 631 return getActivity().getTabModelSelector().getTotalTabCount() == 1;
632 } 632 }
633 }); 633 });
634 } 634 }
635
636 /**
637 * Tests that a Weblite url from an external app uses the lite_url param whe n Data Reduction
638 * Proxy previews are being used.
639 */
640 @MediumTest
641 @CommandLineFlags.Add({"enable-spdy-proxy-auth", "data-reduction-proxy-lo-fi =always-on",
642 "enable-data-reduction-proxy-lo-fi-preview"})
643 public void testLaunchWebLiteURL() throws InterruptedException {
644 startMainActivityFromLauncher();
645
646 String url = mTestServer.getURL("/chrome/test/data/android/about.html");
647
648 // Launch a first URL from an app.
649 launchUrlFromExternalApp("http://googleweblight.com/?lite_url=" + url, u rl,
650 EXTERNAL_APP_1_ID, false, null);
651
652 assertEquals("Selected tab is not on the right URL.",
653 url, getActivity().getActivityTab().getUrl());
654 }
655
656 /**
657 * Tests that a Weblite url from an external app does not use the lite_url p aram when Data
658 * Reduction Proxy previews are not being used.
659 */
660 @MediumTest
661 public void testLaunchWebLiteURLNoPreviews() throws InterruptedException {
662 startMainActivityFromLauncher();
663
664 String url = "http://googleweblight.com/?lite_url=chrome/test/data/andro id/about.html";
665
666 // Launch a first URL from an app.
667 launchUrlFromExternalApp(url, url, EXTERNAL_APP_1_ID, false, null);
668
669 assertEquals("Selected tab is not on the right URL.",
670 url, getActivity().getActivityTab().getUrl());
671 }
635 } 672 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698