summaryrefslogtreecommitdiff
path: root/plugins/cordova-plugin-crosswalk-webview/src/android/XWalkCordovaResourceClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/cordova-plugin-crosswalk-webview/src/android/XWalkCordovaResourceClient.java')
-rw-r--r--plugins/cordova-plugin-crosswalk-webview/src/android/XWalkCordovaResourceClient.java231
1 files changed, 0 insertions, 231 deletions
diff --git a/plugins/cordova-plugin-crosswalk-webview/src/android/XWalkCordovaResourceClient.java b/plugins/cordova-plugin-crosswalk-webview/src/android/XWalkCordovaResourceClient.java
deleted file mode 100644
index 57d0b0f9..00000000
--- a/plugins/cordova-plugin-crosswalk-webview/src/android/XWalkCordovaResourceClient.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- 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.crosswalk.engine;
-
-import android.net.Uri;
-import android.webkit.WebResourceResponse;
-
-import org.apache.cordova.CordovaResourceApi;
-import org.apache.cordova.CordovaResourceApi.OpenForReadResult;
-import org.apache.cordova.LOG;
-import org.chromium.net.NetError;
-import org.xwalk.core.XWalkResourceClient;
-import org.xwalk.core.XWalkView;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-public class XWalkCordovaResourceClient extends XWalkResourceClient {
-
- private static final String TAG = "XWalkCordovaResourceClient";
- protected XWalkWebViewEngine parentEngine;
-
- // Success
- public static final int ERROR_OK = 0;
- // Generic error
- public static final int ERROR_UNKNOWN = -1;
- // Server or proxy hostname lookup failed
- public static final int ERROR_HOST_LOOKUP = -2;
- // Unsupported authentication scheme (not basic or digest)
- public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3;
- // User authentication failed on server
- public static final int ERROR_AUTHENTICATION = -4;
- // User authentication failed on proxy
- public static final int ERROR_PROXY_AUTHENTICATION = -5;
- // Failed to connect to the server
- public static final int ERROR_CONNECT = -6;
- // Failed to read or write to the server
- public static final int ERROR_IO = -7;
- // Connection timed out
- public static final int ERROR_TIMEOUT = -8;
- // Too many redirects
- public static final int ERROR_REDIRECT_LOOP = -9;
- // Unsupported URI scheme
- public static final int ERROR_UNSUPPORTED_SCHEME = -10;
- // Failed to perform SSL handshake
- public static final int ERROR_FAILED_SSL_HANDSHAKE = -11;
- // Malformed URL
- public static final int ERROR_BAD_URL = -12;
- // Generic file error
- public static final int ERROR_FILE = -13;
- // File not found
- public static final int ERROR_FILE_NOT_FOUND = -14;
- // Too many requests during this load
- public static final int ERROR_TOO_MANY_REQUESTS = -15;
-
- public XWalkCordovaResourceClient(XWalkWebViewEngine parentEngine) {
- super(parentEngine.webView);
- this.parentEngine = parentEngine;
- }
-
- // Map XWalk error code about loading a page to Android specific ones.
- // XWalk shares the error code with chromium currently.
- static int convertErrorCode(int netError) {
- // Note: many NetError.Error constants don't have an obvious mapping.
- // These will be handled by the default case, ERROR_UNKNOWN.
- switch (netError) {
- case NetError.ERR_UNSUPPORTED_AUTH_SCHEME:
- return ERROR_UNSUPPORTED_AUTH_SCHEME;
-
- case NetError.ERR_INVALID_AUTH_CREDENTIALS:
- case NetError.ERR_MISSING_AUTH_CREDENTIALS:
- case NetError.ERR_MISCONFIGURED_AUTH_ENVIRONMENT:
- return ERROR_AUTHENTICATION;
-
- case NetError.ERR_TOO_MANY_REDIRECTS:
- return ERROR_REDIRECT_LOOP;
-
- case NetError.ERR_UPLOAD_FILE_CHANGED:
- return ERROR_FILE_NOT_FOUND;
-
- case NetError.ERR_INVALID_URL:
- return ERROR_BAD_URL;
-
- case NetError.ERR_DISALLOWED_URL_SCHEME:
- case NetError.ERR_UNKNOWN_URL_SCHEME:
- return ERROR_UNSUPPORTED_SCHEME;
-
- case NetError.ERR_IO_PENDING:
- case NetError.ERR_NETWORK_IO_SUSPENDED:
- return ERROR_IO;
-
- case NetError.ERR_CONNECTION_TIMED_OUT:
- case NetError.ERR_TIMED_OUT:
- return ERROR_TIMEOUT;
-
- case NetError.ERR_FILE_TOO_BIG:
- return ERROR_FILE;
-
- case NetError.ERR_HOST_RESOLVER_QUEUE_TOO_LARGE:
- case NetError.ERR_INSUFFICIENT_RESOURCES:
- case NetError.ERR_OUT_OF_MEMORY:
- return ERROR_TOO_MANY_REQUESTS;
-
- case NetError.ERR_CONNECTION_CLOSED:
- case NetError.ERR_CONNECTION_RESET:
- case NetError.ERR_CONNECTION_REFUSED:
- case NetError.ERR_CONNECTION_ABORTED:
- case NetError.ERR_CONNECTION_FAILED:
- case NetError.ERR_SOCKET_NOT_CONNECTED:
- return ERROR_CONNECT;
-
- case NetError.ERR_INTERNET_DISCONNECTED:
- case NetError.ERR_ADDRESS_INVALID:
- case NetError.ERR_ADDRESS_UNREACHABLE:
- case NetError.ERR_NAME_NOT_RESOLVED:
- case NetError.ERR_NAME_RESOLUTION_FAILED:
- return ERROR_HOST_LOOKUP;
-
- case NetError.ERR_SSL_PROTOCOL_ERROR:
- case NetError.ERR_SSL_CLIENT_AUTH_CERT_NEEDED:
- case NetError.ERR_TUNNEL_CONNECTION_FAILED:
- case NetError.ERR_NO_SSL_VERSIONS_ENABLED:
- case NetError.ERR_SSL_VERSION_OR_CIPHER_MISMATCH:
- case NetError.ERR_SSL_RENEGOTIATION_REQUESTED:
- case NetError.ERR_CERT_ERROR_IN_SSL_RENEGOTIATION:
- case NetError.ERR_BAD_SSL_CLIENT_AUTH_CERT:
- case NetError.ERR_SSL_NO_RENEGOTIATION:
- case NetError.ERR_SSL_DECOMPRESSION_FAILURE_ALERT:
- case NetError.ERR_SSL_BAD_RECORD_MAC_ALERT:
- case NetError.ERR_SSL_UNSAFE_NEGOTIATION:
- case NetError.ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY:
- case NetError.ERR_SSL_CLIENT_AUTH_PRIVATE_KEY_ACCESS_DENIED:
- case NetError.ERR_SSL_CLIENT_AUTH_CERT_NO_PRIVATE_KEY:
- return ERROR_FAILED_SSL_HANDSHAKE;
-
- case NetError.ERR_PROXY_AUTH_UNSUPPORTED:
- case NetError.ERR_PROXY_AUTH_REQUESTED:
- case NetError.ERR_PROXY_CONNECTION_FAILED:
- case NetError.ERR_UNEXPECTED_PROXY_AUTH:
- return ERROR_PROXY_AUTHENTICATION;
-
- // The certificate errors are handled by onReceivedSslError
- // and don't need to be reported here.
- case NetError.ERR_CERT_COMMON_NAME_INVALID:
- case NetError.ERR_CERT_DATE_INVALID:
- case NetError.ERR_CERT_AUTHORITY_INVALID:
- case NetError.ERR_CERT_CONTAINS_ERRORS:
- case NetError.ERR_CERT_NO_REVOCATION_MECHANISM:
- case NetError.ERR_CERT_UNABLE_TO_CHECK_REVOCATION:
- case NetError.ERR_CERT_REVOKED:
- case NetError.ERR_CERT_INVALID:
- case NetError.ERR_CERT_WEAK_SIGNATURE_ALGORITHM:
- case NetError.ERR_CERT_NON_UNIQUE_NAME:
- return ERROR_OK;
-
- default:
- return ERROR_UNKNOWN;
- }
- }
-
- /**
- * Report an error to the host application. These errors are unrecoverable (i.e. the main resource is unavailable).
- * The errorCode parameter corresponds to one of the ERROR_* constants.
- *
- * @param view The WebView that is initiating the callback.
- * @param errorCode The error code corresponding to an ERROR_* value.
- * @param description A String describing the error.
- * @param failingUrl The url that failed to load.
- */
- @Override
- public void onReceivedLoadError(XWalkView view, int errorCode, String description,
- String failingUrl) {
- LOG.d(TAG, "CordovaWebViewClient.onReceivedError: Error code=%s Description=%s URL=%s", errorCode, description, failingUrl);
-
- // Convert the XWalk error code to Cordova error code, which follows the Android spec,
- // http://developer.android.com/reference/android/webkit/WebViewClient.html.
- errorCode = XWalkCordovaResourceClient.convertErrorCode(errorCode);
- parentEngine.client.onReceivedError(errorCode, description, failingUrl);
- }
-
- @Override
- public WebResourceResponse shouldInterceptLoadRequest(XWalkView view, String url) {
- try {
- // Check the against the white-list.
- if (!parentEngine.pluginManager.shouldAllowRequest(url)) {
- LOG.w(TAG, "URL blocked by whitelist: " + url);
- // Results in a 404.
- return new WebResourceResponse("text/plain", "UTF-8", null);
- }
-
- CordovaResourceApi resourceApi = parentEngine.resourceApi;
- Uri origUri = Uri.parse(url);
- // Allow plugins to intercept WebView requests.
- Uri remappedUri = resourceApi.remapUri(origUri);
-
- if (!origUri.equals(remappedUri)) {
- OpenForReadResult result = resourceApi.openForRead(remappedUri, true);
- return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream);
- }
- // If we don't need to special-case the request, let the browser load it.
- return null;
- } catch (IOException e) {
- if (!(e instanceof FileNotFoundException)) {
- LOG.e(TAG, "Error occurred while loading a file (returning a 404).", e);
- }
- // Results in a 404.
- return new WebResourceResponse("text/plain", "UTF-8", null);
- }
- }
-
- @Override
- public boolean shouldOverrideUrlLoading(XWalkView view, String url) {
- return parentEngine.client.onNavigationAttempt(url);
- }
-}