33import android .content .Context ;
44import android .content .pm .ApplicationInfo ;
55import android .graphics .Bitmap ;
6- import android .net .Uri ;
76import android .os .Bundle ;
87import android .app .Fragment ;
98import android .util .Log ;
1817import android .webkit .WebViewClient ;
1918import android .widget .TextView ;
2019
21- import com .devgrapher .ocebook .readium .TocManager ;
22- import com .devgrapher .ocebook .readium .ScriptProcessor ;
23- import com .devgrapher .ocebook .readium .ReadiumServer ;
20+ import com .devgrapher .ocebook .readium .ReadiumService ;
2421import com .devgrapher .ocebook .model .ContainerHolder ;
2522import com .devgrapher .ocebook .model .OpenPageRequest ;
2623import com .devgrapher .ocebook .model .Page ;
2724import com .devgrapher .ocebook .model .PaginationInfo ;
28- import com .devgrapher .ocebook .model .ReadiumJSApi ;
2925import com .devgrapher .ocebook .model .ViewerSettings ;
3026
3127import org .readium .sdk .android .Container ;
4945public class WebViewFragment extends Fragment {
5046 private static final String TAG = WebViewFragment .class .toString ();
5147 private static final String ARG_CONTAINER_ID = "package" ;
52- private static final String READER_SKELETON = "file:///android_asset/readium-shared-js/reader.html" ;
5348
5449 private Package mPackage ;
5550 private OnFragmentInteractionListener mListener ;
5651 private ViewerSettings mViewerSettings ;
57- private ReadiumJSApi mReadiumJSApi ;
58- private ReadiumServer mReadiumServer ;
59- private TocManager mTocManager ;
6052
6153 private WebView mWebView ;
6254 private TextView mPageInfoTextView ;
6355
64- private ScriptProcessor mScriptProcessor ;
65-
6656 public WebViewFragment () {
6757 // Required empty public constructor
6858 }
@@ -106,21 +96,10 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
10696 initWebView ();
10797 intReadium ();
10898
109-
11099 mViewerSettings = new ViewerSettings (
111100 ViewerSettings .SyntheticSpreadMode .AUTO ,
112101 ViewerSettings .ScrollMode .AUTO , 100 , 20 );
113102
114- mReadiumJSApi = new ReadiumJSApi (new ReadiumJSApi .JSLoader () {
115- @ Override
116- public void loadJS (String javascript ) {
117- mWebView .loadUrl (javascript );
118- }
119- });
120-
121- mReadiumServer .start ();
122-
123- mTocManager = new TocManager (mPackage );
124103 return view ;
125104 }
126105
@@ -130,34 +109,30 @@ private void initWebView() {
130109 != 0 ) {
131110 WebView .setWebContentsDebuggingEnabled (true );
132111 }
133- mWebView . loadUrl ( READER_SKELETON );
112+
134113 mWebView .getSettings ().setJavaScriptEnabled (true );
135114 mWebView .getSettings ().setMediaPlaybackRequiresUserGesture (false );
136115 mWebView .getSettings ().setAllowUniversalAccessFromFileURLs (true );
137116 mWebView .setWebViewClient (new ReadiumWebViewClient ());
138117 mWebView .setWebChromeClient (new WebChromeClient ());
139118
140- mWebView .setOnTouchListener (new View .OnTouchListener () {
141- @ Override
142- public boolean onTouch (View v , MotionEvent event ) {
119+ mWebView .setOnTouchListener ((View v , MotionEvent event ) -> {
143120 switch (event .getAction ()) {
144121 case MotionEvent .ACTION_UP :
145122 if (event .getX () < v .getWidth () / 2 ) {
146123 Log .d (TAG , "Touch left" );
147- mReadiumJSApi .openPageLeft ();
124+ ReadiumService . getApi () .openPageLeft ();
148125 } else {
149126 Log .d (TAG , "Touch right" );
150- mReadiumJSApi .openPageRight ();
127+ ReadiumService . getApi () .openPageRight ();
151128 }
152129 }
153130 return false ;
154- }
155131 });
156132 }
157133
158134 private void intReadium () {
159- mScriptProcessor = new ScriptProcessor (
160- new ScriptProcessor .ContentProcessorDelegate () {
135+ ReadiumService .getInstance ().start (new ReadiumService .WebViewDelegate () {
161136 @ Override
162137 public void evaluateJavascript (String script ) {
163138 getActivity ().runOnUiThread (() -> {
@@ -178,15 +153,16 @@ public InputStream openAsset(String fileName) {
178153 }
179154
180155 @ Override
181- public void addJavascriptInterface (ScriptProcessor .JsInterface jsInterface ,
182- String name ) {
156+ public void addJavascriptInterface (ReadiumService .JsInterface jsInterface , String name ) {
183157 mWebView .addJavascriptInterface (jsInterface , name );
184158 }
185- }, mPackage );
186159
187- mScriptProcessor .setEventListener (new ReadiumJsEventListener ());
160+ @ Override
161+ public void loadUrl (String url ) {
162+ mWebView .loadUrl (url );
163+ }
188164
189- mReadiumServer = new ReadiumServer ( mScriptProcessor , mPackage );
165+ }, new ReadiumPageEventListener () , mPackage );
190166 }
191167
192168 @ Override
@@ -222,8 +198,8 @@ public void onDetach() {
222198 public void onDestroy () {
223199 super .onDestroy ();
224200
225- mReadiumServer .stop ();
226- mWebView .loadUrl (READER_SKELETON );
201+ ReadiumService . getInstance () .stop ();
202+ //TODO: mWebView.loadUrl(READER_SKELETON);
227203 ((ViewGroup ) mWebView .getParent ()).removeView (mWebView );
228204 mWebView .removeAllViews ();
229205 mWebView .clearCache (true );
@@ -272,8 +248,9 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
272248 public WebResourceResponse shouldInterceptRequest (WebView view , WebResourceRequest req ) {
273249 Log .d (TAG , "-------- interceptRequest: " + req .getUrl ().toString ());
274250
275- WebResourceResponse res = mScriptProcessor .interceptRequest (
276- req .getUrl ().toString ());
251+ WebResourceResponse res = ReadiumService .getInstance ()
252+ .handleWebRequest (req .getUrl ().toString ());
253+
277254 if (res == null ) {
278255 return super .shouldInterceptRequest (view , req );
279256 }
@@ -282,15 +259,15 @@ public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceReque
282259 }
283260 }
284261
285- public final class ReadiumJsEventListener implements ScriptProcessor . JsEventListener {
262+ public final class ReadiumPageEventListener implements ReadiumService . PageEventListener {
286263
287264 @ Override
288265 public void onReaderInitialized () {
289266 getActivity ().runOnUiThread (() -> {
290267 mPackage .getSpineItems ().stream ()
291268 .findAny ()
292269 .ifPresent (item -> {
293- mReadiumJSApi .openBook (mPackage , mViewerSettings ,
270+ ReadiumService . getApi () .openBook (mPackage , mViewerSettings ,
294271 OpenPageRequest .fromIdref (item .getIdRef ()));
295272 mListener .onPackageOpen (mPackage );
296273 });
0 commit comments