diff options
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/AboutPages.java')
-rw-r--r-- | mobile/android/base/java/org/mozilla/gecko/AboutPages.java | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/AboutPages.java b/mobile/android/base/java/org/mozilla/gecko/AboutPages.java new file mode 100644 index 000000000..705d700af --- /dev/null +++ b/mobile/android/base/java/org/mozilla/gecko/AboutPages.java @@ -0,0 +1,117 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.gecko; + +import org.mozilla.gecko.annotation.RobocopTarget; +import org.mozilla.gecko.home.HomeConfig; +import org.mozilla.gecko.home.HomeConfig.PanelType; +import org.mozilla.gecko.util.StringUtils; + +public class AboutPages { + // All of our special pages. + public static final String ACCOUNTS = "about:accounts"; + public static final String ADDONS = "about:addons"; + public static final String CONFIG = "about:config"; + public static final String DOWNLOADS = "about:downloads"; + public static final String FIREFOX = "about:firefox"; + public static final String HEALTHREPORT = "about:healthreport"; + public static final String HOME = "about:home"; + public static final String LOGINS = "about:logins"; + public static final String PRIVATEBROWSING = "about:privatebrowsing"; + public static final String READER = "about:reader"; + public static final String UPDATER = "about:"; + + public static final String URL_FILTER = "about:%"; + + public static final String PANEL_PARAM = "panel"; + + public static final boolean isAboutPage(final String url) { + return url != null && url.startsWith("about:"); + } + + public static final boolean isTitlelessAboutPage(final String url) { + return isAboutHome(url) || + PRIVATEBROWSING.equals(url); + } + + public static final boolean isAboutHome(final String url) { + if (url == null || !url.startsWith(HOME)) { + return false; + } + // We sometimes append a parameter to "about:home" to specify which page to + // show when we open the home pager. Discard this parameter when checking + // whether or not this URL is "about:home". + return HOME.equals(url.split("\\?")[0]); + } + + public static final String getPanelIdFromAboutHomeUrl(String aboutHomeUrl) { + return StringUtils.getQueryParameter(aboutHomeUrl, PANEL_PARAM); + } + + public static boolean isAboutReader(final String url) { + return isAboutPage(READER, url); + } + + public static boolean isAboutConfig(final String url) { + return isAboutPage(CONFIG, url); + } + + public static boolean isAboutAddons(final String url) { + return isAboutPage(ADDONS, url); + } + + public static boolean isAboutPrivateBrowsing(final String url) { + return isAboutPage(PRIVATEBROWSING, url); + } + + public static boolean isAboutPage(String page, String url) { + return url != null && url.toLowerCase().startsWith(page); + + } + + public static final String[] DEFAULT_ICON_PAGES = new String[] { + HOME, + ACCOUNTS, + ADDONS, + CONFIG, + DOWNLOADS, + FIREFOX, + HEALTHREPORT, + UPDATER + }; + + public static boolean isBuiltinIconPage(final String url) { + if (url == null || + !url.startsWith("about:")) { + return false; + } + + // about:home uses a separate search built-in icon. + if (isAboutHome(url)) { + return true; + } + + // TODO: it'd be quicker to not compare the "about:" part every time. + for (int i = 0; i < DEFAULT_ICON_PAGES.length; ++i) { + if (DEFAULT_ICON_PAGES[i].equals(url)) { + return true; + } + } + return false; + } + + /** + * Get a URL that navigates to the specified built-in Home Panel. + * + * @param panelType to navigate to. + * @return URL. + * @throws IllegalArgumentException if the built-in panel type is not a built-in panel. + */ + @RobocopTarget + public static String getURLForBuiltinPanelType(PanelType panelType) throws IllegalArgumentException { + return HOME + "?panel=" + HomeConfig.getIdForBuiltinPanelType(panelType); + } +} |