We won't want to duplicate / work with all of the classes in the android.webkit package under [android-project]/frameworks/base/core/java/android/webkit/. We only want to work with the ones that apps can use - i.e. the classes with public APIs.
One way of doing this would be to just manually list the classes that are public - another is to read android api files (e.g. api/21.txt).
Furthermore, different classes will be used in different ways. I think there are two major class types here:
1. classes implemented on the support library side (WebViewClient, WebMessage, etc.)
2. classes implemented in the webview APK (WebSettings, ServiceWorkerController, etc.)
note that the WebView + WebViewProvider + WebViewFactoryProvider classes are a bit special since WebView is implemented in android.webkit, by calling into WebViewProvider/WebViewFactoryProvider - most other classes fetched from the webview APK (e.g. the implementation of WebSettings) implement an app-facing API and are just passed directly from the glue layer to the app.
I believe you can tell which classes belong to which type (1/2) by looking at how the classes are fetched / used - all classes of type 1 are passed into the webview apk code through some setter/post (e.g. setWebViewClient), classes of type 2 have no such setter and instead provide a getter (e.g. WebView.getSettings returns WebSettings) - though some classes of type 1 also have a getter (e.g. getWebViewClient()).
Comment 1 by gsennton@chromium.org
, Nov 27 2017