blob: da335f1eb1494862f12891ab4e89f35f98ebf37b [file] [log] [blame]
// Copyright 2018 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.support_lib_boundary;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import java.lang.reflect.InvocationHandler;
/**
* Boundary interface for a class used for converting webkit objects into Compat (support library)
* objects.
*/
public interface WebkitToCompatConverterBoundaryInterface {
// ====================================================
// Pre-L classes, these only need conversion methods from webkit -> support library since their
// support library implementations are all static methods.
// Webkit -> support library conversions.
// ====================================================
/* SupportLibraryWebSettings */ InvocationHandler convertSettings(WebSettings webSettings);
/* SupportLibraryWebResourceRequest */ InvocationHandler convertWebResourceRequest(
WebResourceRequest request);
// ====================================================
// Post-L classes, these classes need conversion methods both from webkit -> support library and
// back because they have full functional implementations in the support library (so some APIs
// will return the support library version of the class).
//
// None of the following methods can be called before the API level in which the related webkit
// class was introduced (e.g. API level 24 for convertServiceWorkerSettings since
// android.webkit.ServiceWorkerWebSettings was introduced at API level 24).
//
// Note that these methods use the 'Object' class to represent webkit classes because these are
// post-L webkit classes. Whenever we would create a Proxy for the version of
// WebkitToCompatConverterBoundaryInterface using actual webkit classes on an L device the Proxy
// class would fail to look up post-L webkit classes and thus cause a crash, see
// http://crbug.com/831554.
// ====================================================
// ServiceWorkerWebSettings
/* SupportLibServiceWorkerSettings */ InvocationHandler convertServiceWorkerSettings(
/* ServiceWorkerWebSettings */ Object serviceWorkerWebSettings);
/* ServiceWorkerWebSettings */ Object convertServiceWorkerSettings(
/* SupportLibServiceWorkerSettings */ InvocationHandler serviceWorkerSettings);
// WebResourceError
/* SupportLibWebResourceError */ InvocationHandler convertWebResourceError(
/* WebResourceError */ Object webResourceError);
/* WebResourceError */ Object convertWebResourceError(
/* SupportLibWebResourceError */ InvocationHandler webResourceError);
// SafeBrowsingResponse
/* SupportLibSafeBrowsingResponse */ InvocationHandler convertSafeBrowsingResponse(
/* SafeBrowsingResponse */ Object safeBrowsingResponse);
/* SafeBrowsingResponse */ Object convertSafeBrowsingResponse(
/* SupportLibSafeBrowsingResponse */ InvocationHandler safeBrowsingResponse);
// WebMessagePort
/* SupportLibWebMessagePort */ InvocationHandler convertWebMessagePort(
/* WebMessagePort */ Object webMessagePort);
/* WebMessagePort */ Object convertWebMessagePort(
/* SupportLibWebMessagePort */ InvocationHandler webMessagePort);
// CookieManager
/* SupportLibWebViewCookieManager */ InvocationHandler convertCookieManager(
Object cookieManager);
}