123 lines
3.8 KiB
Java
123 lines
3.8 KiB
Java
/*
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
*/
|
|
|
|
package org.apache.cordova;
|
|
|
|
import java.util.List;
|
|
|
|
import android.app.Activity;
|
|
import android.util.Log;
|
|
|
|
@Deprecated // Use Whitelist, CordovaPrefences, etc. directly.
|
|
public class Config {
|
|
private static final String TAG = "Config";
|
|
|
|
static ConfigXmlParser parser;
|
|
|
|
private Config() {
|
|
}
|
|
|
|
public static void init(Activity action) {
|
|
parser = new ConfigXmlParser();
|
|
parser.parse(action);
|
|
parser.getPreferences().setPreferencesBundle(action.getIntent().getExtras());
|
|
parser.getPreferences().copyIntoIntentExtras(action);
|
|
}
|
|
|
|
// Intended to be used for testing only; creates an empty configuration.
|
|
public static void init() {
|
|
if (parser == null) {
|
|
parser = new ConfigXmlParser();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add entry to approved list of URLs (whitelist)
|
|
*
|
|
* @param origin URL regular expression to allow
|
|
* @param subdomains T=include all subdomains under origin
|
|
*/
|
|
public static void addWhiteListEntry(String origin, boolean subdomains) {
|
|
if (parser == null) {
|
|
Log.e(TAG, "Config was not initialised. Did you forget to Config.init(this)?");
|
|
return;
|
|
}
|
|
parser.getInternalWhitelist().addWhiteListEntry(origin, subdomains);
|
|
}
|
|
|
|
/**
|
|
* Determine if URL is in approved list of URLs to load.
|
|
*
|
|
* @param url
|
|
* @return true if whitelisted
|
|
*/
|
|
public static boolean isUrlWhiteListed(String url) {
|
|
if (parser == null) {
|
|
Log.e(TAG, "Config was not initialised. Did you forget to Config.init(this)?");
|
|
return false;
|
|
}
|
|
return parser.getInternalWhitelist().isUrlWhiteListed(url);
|
|
}
|
|
|
|
/**
|
|
* Determine if URL is in approved list of URLs to launch external applications.
|
|
*
|
|
* @param url
|
|
* @return true if whitelisted
|
|
*/
|
|
public static boolean isUrlExternallyWhiteListed(String url) {
|
|
if (parser == null) {
|
|
Log.e(TAG, "Config was not initialised. Did you forget to Config.init(this)?");
|
|
return false;
|
|
}
|
|
return parser.getExternalWhitelist().isUrlWhiteListed(url);
|
|
}
|
|
|
|
public static String getStartUrl() {
|
|
if (parser == null) {
|
|
return "file:///android_asset/www/index.html";
|
|
}
|
|
return parser.getLaunchUrl();
|
|
}
|
|
|
|
public static String getErrorUrl() {
|
|
return parser.getPreferences().getString("errorurl", null);
|
|
}
|
|
|
|
public static Whitelist getWhitelist() {
|
|
return parser.getInternalWhitelist();
|
|
}
|
|
|
|
public static Whitelist getExternalWhitelist() {
|
|
return parser.getExternalWhitelist();
|
|
}
|
|
|
|
public static List<PluginEntry> getPluginEntries() {
|
|
return parser.getPluginEntries();
|
|
}
|
|
|
|
public static CordovaPreferences getPreferences() {
|
|
return parser.getPreferences();
|
|
}
|
|
|
|
public static boolean isInitialized() {
|
|
return parser != null;
|
|
}
|
|
}
|