@@ -21,34 +21,38 @@ public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceReque
2121 @ Override
2222 public WebResourceResponse shouldInterceptRequest (WebView view , String url ){
2323 String [] partes = url .split ("/" );
24- if (url .toLowerCase ().endsWith (".html" ) || !partes [partes .length - 1 ].contains ("." )){
25- Request request = new Request .Builder ()
26- .url (url )
27- .addHeader ("User-Agent" , view .getSettings ().getUserAgentString ())
28- .build ();
29- Response response = null ;
24+ if (url .toLowerCase ().endsWith (".html" ) || !partes [partes .length - 1 ].contains ("." ) || url .toLowerCase ().startsWith ("data:text/html," )){
3025 try {
31- response = client .newCall (request ).execute ();
26+ Document content ;
27+ if (url .toLowerCase ().startsWith ("data:text/html," )){
28+ content = Jsoup .parse (url .replaceFirst ("data:text/html," ));
29+ }else {
30+ Request request = new Request .Builder ()
31+ .url (url )
32+ .addHeader ("User-Agent" , view .getSettings ().getUserAgentString ())
33+ .build ();
34+ Response response = client .newCall (request ).execute ();
3235 if (!response .isSuccessful () || response .body () == null ) {
3336 return super .shouldInterceptRequest (view , url );
3437 }
35- Document content = Jsoup .parse (response .body ().string ());
36- Element head = content .head ();
37- for (Element script : content .select ("script" )) {
38+ content = Jsoup .parse (response .body ().string ());
39+ }
40+ Element head = content .head ();
41+ for (Element script : content .select ("script" )) {
3842 if (script .attr ("type" ).isEmpty () || script .attr ("type" ).equalsIgnoreCase ("text/javascript" ) || script .attr ("type" ).equalsIgnoreCase ("application/javascript" )) {
3943 script .attr ("type" , "text/babel" );
4044 }
41- }
42- if (head != null ) {
45+ }
46+ if (head != null ) {
4347 String urlPrefix = "file:///android_asset/WebViewCrea" ;
4448 head .prepend ("<script src='" +urlPrefix +"/babel.min.js'></script>\n <script src='" +urlPrefix +"/runtime.js' type='text/babel'></script>\n <script src='" +urlPrefix +"/core-js.min.js' type='text/babel'></script>\n <script src='" +urlPrefix +"/customEventPoly.js' type='text/babel'></script>\n <script src='" +urlPrefix +"/fetch.js' type='text/babel'></script>\n <script src='" +urlPrefix +"/url-polyfill.js' type='text/babel'></script>\n " );
45- }
46- InputStream inputStream = new ByteArrayInputStream (content .html ().getBytes ("UTF-8" ));
47- return new WebResourceResponse ("text/html" , "UTF-8" , inputStream );
49+ }
50+ InputStream inputStream = new ByteArrayInputStream (content .html ().getBytes ("UTF-8" ));
51+ return new WebResourceResponse ("text/html" , "UTF-8" , inputStream );
4852 }catch (Exception e ){
4953 return super .shouldInterceptRequest (view , url );
5054 }
5155 }
5256 return super .shouldInterceptRequest (view , url );
5357 }
54- }
58+ }
0 commit comments