blob: 3aa065f0fe0210947d7c632edc999c206b5b2455 [file] [log] [blame]
// Copyright 2015 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.chrome.browser.webapps;
import android.content.Intent;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.test.util.Feature;
import org.chromium.blink_public.platform.WebDisplayMode;
import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.ShortcutSource;
import org.chromium.content_public.common.ScreenOrientationValues;
import org.chromium.webapk.lib.common.WebApkConstants;
/**
* Tests the WebappInfo class's ability to parse various URLs.
*/
public class WebappInfoTest extends InstrumentationTestCase {
@SmallTest
@Feature({"Webapps"})
public void testAbout() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String url = "about:blank";
WebappInfo info = WebappInfo.create(id, url, null, name, shortName,
WebDisplayMode.Standalone, ScreenOrientationValues.DEFAULT, ShortcutSource.UNKNOWN,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING, false, null);
assertNotNull(info);
}
@SmallTest
@Feature({"Webapps"})
public void testRandomUrl() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String url = "http://google.com";
WebappInfo info = WebappInfo.create(id, url, null, name, shortName,
WebDisplayMode.Standalone, ScreenOrientationValues.DEFAULT, ShortcutSource.UNKNOWN,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING, false, null);
assertNotNull(info);
}
@SmallTest
@Feature({"Webapps"})
public void testSpacesInUrl() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String bustedUrl = "http://money.cnn.com/?category=Latest News";
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_NAME, name);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, bustedUrl);
WebappInfo info = WebappInfo.create(intent);
assertNotNull(info);
}
@SmallTest
@Feature({"Webapps"})
public void testIntentTitleFallBack() {
String id = "webapp id";
String title = "webapp title";
String url = "about:blank";
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_TITLE, title);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
WebappInfo info = WebappInfo.create(intent);
assertEquals(title, info.name());
assertEquals(title, info.shortName());
}
@SmallTest
@Feature({"Webapps"})
public void testIntentNameBlankNoTitle() {
String id = "webapp id";
String shortName = "name";
String url = "about:blank";
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
WebappInfo info = WebappInfo.create(intent);
assertEquals("", info.name());
assertEquals(shortName, info.shortName());
}
@SmallTest
@Feature({"Webapps"})
public void testIntentShortNameFallBack() {
String id = "webapp id";
String title = "webapp title";
String shortName = "name";
String url = "about:blank";
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_TITLE, title);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
WebappInfo info = WebappInfo.create(intent);
assertEquals(title, info.name());
assertEquals(shortName, info.shortName());
}
@SmallTest
@Feature({"Webapps"})
public void testIntentNameShortname() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String url = "about:blank";
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_NAME, name);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
WebappInfo info = WebappInfo.create(intent);
assertEquals(name, info.name());
assertEquals(shortName, info.shortName());
}
@SmallTest
@Feature({"Webapps"})
public void testDisplayModeAndOrientationAndSource() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String url = "http://money.cnn.com";
WebappInfo info = WebappInfo.create(id, url, null, name, shortName,
WebDisplayMode.Fullscreen, ScreenOrientationValues.DEFAULT, ShortcutSource.UNKNOWN,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING, false, null);
assertEquals(WebDisplayMode.Fullscreen, info.displayMode());
assertEquals(ScreenOrientationValues.DEFAULT, info.orientation());
assertEquals(ShortcutSource.UNKNOWN, info.source());
}
@SmallTest
@Feature({"Webapps"})
public void testNormalColors() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String url = "http://money.cnn.com";
long themeColor = 0xFF00FF00L;
long backgroundColor = 0xFF0000FFL;
WebappInfo info = WebappInfo.create(id, url, null, name, shortName,
WebDisplayMode.Standalone, ScreenOrientationValues.DEFAULT,
ShortcutSource.UNKNOWN, themeColor, backgroundColor, false, null);
assertEquals(info.themeColor(), themeColor);
assertEquals(info.backgroundColor(), backgroundColor);
}
@SmallTest
@Feature({"Webapps"})
public void testInvalidOrMissingColors() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String url = "http://money.cnn.com";
WebappInfo info = WebappInfo.create(id, url, null, name, shortName,
WebDisplayMode.Standalone, ScreenOrientationValues.DEFAULT, ShortcutSource.UNKNOWN,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING,
ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING, false, null);
assertEquals(info.themeColor(), ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING);
assertEquals(info.backgroundColor(), ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING);
}
@SmallTest
@Feature({"Webapps"})
public void testColorsIntentCreation() {
String id = "webapp id";
String url = "http://money.cnn.com";
long themeColor = 0xFF00FF00L;
long backgroundColor = 0xFF0000FFL;
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_THEME_COLOR, themeColor);
intent.putExtra(ShortcutHelper.EXTRA_BACKGROUND_COLOR, backgroundColor);
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
WebappInfo info = WebappInfo.create(intent);
assertEquals(info.themeColor(), themeColor);
assertEquals(info.backgroundColor(), backgroundColor);
}
@SmallTest
@Feature({"Webapps"})
public void testIntentGeneratedIcon() {
String id = "webapp id";
String name = "longName";
String shortName = "name";
String url = "about:blank";
// Default value.
{
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_NAME, name);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
assertFalse(name, WebappInfo.create(intent).isIconGenerated());
}
// Set to true.
{
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_NAME, name);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
intent.putExtra(ShortcutHelper.EXTRA_IS_ICON_GENERATED, true);
assertTrue(name, WebappInfo.create(intent).isIconGenerated());
}
// Set to false.
{
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_NAME, name);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
intent.putExtra(ShortcutHelper.EXTRA_IS_ICON_GENERATED, false);
assertFalse(name, WebappInfo.create(intent).isIconGenerated());
}
// Set to something else than a boolean.
{
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_NAME, name);
intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
intent.putExtra(ShortcutHelper.EXTRA_IS_ICON_GENERATED, "true");
assertFalse(name, WebappInfo.create(intent).isIconGenerated());
}
}
@SmallTest
@Feature({"WebApk"})
public void testIntentWebApkPackageName() {
String id = WebApkConstants.WEBAPK_ID_PREFIX + "id";
String name = "longName";
String url = "http://www.foo.com/homepage";
String packageName = WebApkConstants.WEBAPK_PACKAGE_PREFIX + ".foo";
Intent intent = new Intent();
intent.putExtra(ShortcutHelper.EXTRA_ID, id);
intent.putExtra(ShortcutHelper.EXTRA_NAME, name);
intent.putExtra(ShortcutHelper.EXTRA_URL, url);
intent.putExtra(ShortcutHelper.EXTRA_WEBAPK_PACKAGE_NAME, packageName);
WebappInfo info = WebappInfo.create(intent);
assertEquals(packageName, info.webApkPackageName());
}
}