1 // Copyright (c) 2012 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.
5 package org.chromium.chrome.testshell;
7 import android.test.suitebuilder.annotation.SmallTest;
9 import org.chromium.base.ThreadUtils;
10 import org.chromium.base.test.util.Feature;
11 import org.chromium.content.browser.ContentView;
12 import org.chromium.content.browser.ContentViewCore;
13 import org.chromium.content.browser.ContentViewRenderView;
15 import java.util.concurrent.atomic.AtomicBoolean;
16 import java.util.concurrent.atomic.AtomicReference;
18 public class ChromiumTestShellUrlTest extends ChromiumTestShellTestBase {
19 // URL used for base tests.
20 private static final String URL = "data:text";
24 public void testBaseStartup() throws InterruptedException {
25 ChromiumTestShellActivity activity = launchChromiumTestShellWithUrl(URL);
26 waitForActiveShellToBeDoneLoading();
28 // Make sure the activity was created as expected.
29 assertNotNull(activity);
34 public void testChromeWelcomePageLoads() throws InterruptedException {
35 String welcomeUrl = "chrome://welcome/";
36 final ChromiumTestShellActivity activity = launchChromiumTestShellWithUrl(welcomeUrl);
37 waitForActiveShellToBeDoneLoading();
39 // Make sure the activity was created as expected.
40 assertNotNull(activity);
42 // Ensure we have a ContentView and ContentViewCore.
43 final AtomicReference<ContentView> contentView = new AtomicReference<ContentView>();
44 final AtomicReference<ContentViewCore> contentViewCore =
45 new AtomicReference<ContentViewCore>();
46 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
49 ContentView activeContentView = activity.getActiveContentView();
50 contentView.set(activeContentView);
51 if (activeContentView != null) {
52 contentViewCore.set(activeContentView.getContentViewCore());
56 assertNotNull(contentView.get());
57 assertNotNull(contentViewCore.get());
59 // Ensure the correct page has been loaded, ie. not interstitial, and title/url should
60 // be sane. Note, a typical correct title is: "Welcome to Chromium", whereas a wrong one
61 // would be on the form "chrome://welcome/ is not available".
62 final AtomicBoolean isShowingInterstitialPage = new AtomicBoolean();
63 final AtomicReference<String> url = new AtomicReference<String>();
64 final AtomicReference<String> title = new AtomicReference<String>();
65 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
68 isShowingInterstitialPage.set(contentViewCore.get().isShowingInterstitialPage());
69 url.set(contentViewCore.get().getUrl());
70 title.set(contentViewCore.get().getTitle());
73 assertFalse("Showed interstitial page instead of welcome page",
74 isShowingInterstitialPage.get());
75 assertNotNull("URL was null", url.get());
76 assertTrue("URL did not contain: " + welcomeUrl + ". Was: " + url.get(),
77 url.get().contains(welcomeUrl));
78 assertNotNull("Title was null", title.get());
79 assertFalse("Title should not contain: " + welcomeUrl + ". Was: " + title.get(),
80 title.get().toLowerCase().contains(welcomeUrl));
84 * Tests that creating an extra ContentViewRenderView does not cause an assert because we would
85 * initialize the compositor twice http://crbug.com/162312
89 public void testCompositorInit() throws InterruptedException {
90 // Start the ChromiumTestShell, this loads the native library and create an instance of
91 // ContentViewRenderView.
92 final ChromiumTestShellActivity activity = launchChromiumTestShellWithUrl(URL);
93 waitForActiveShellToBeDoneLoading();
95 // Now create a new ContentViewRenderView, it should not assert.
97 runTestOnUiThread(new Runnable() {
100 ContentViewRenderView contentViewRenderView =
101 new ContentViewRenderView(getInstrumentation().getTargetContext());
102 contentViewRenderView.setCurrentContentView(activity.getActiveContentView());
105 } catch (Throwable e) {
106 fail("Could not create a ContentViewRenderView: " + e);