// Path: app/src/main/java/com/kong/lib/widget/SafeWebView.java
// public class SafeWebView extends WebView {
// 
//     public SafeWebView(Context context) {
//         super(context);
//         removeSearchBox();
//     }
// 
//     public SafeWebView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         removeSearchBox();
//     }
// 
//     public SafeWebView(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
//         removeSearchBox();
//     }
// 
//     /**
//      * 移除系统注入的对象，避免js漏洞
//      * <p>
//      * https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1939
//      * https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7224
//      */
//     private void removeSearchBox() {
//         super.removeJavascriptInterface("searchBoxJavaBridge_");
//         super.removeJavascriptInterface("accessibility");
//         super.removeJavascriptInterface("accessibilityTraversal");
//     }
// 
//     public static void disableAccessibility(Context context) {
//         if (Build.VERSION.SDK_INT == 17/*4.2 (Build.VERSION_CODES.JELLY_BEAN_MR1)*/) {
//             if (context != null) {
//                 try {
//                     AccessibilityManager am = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
//                     if (!am.isEnabled()) {
//                         //Not need to disable accessibility
//                         return;
//                     }
// 
//                     Method setState = am.getClass().getDeclaredMethod("setState", int.class);
//                     setState.setAccessible(true);
//                     setState.invoke(am, 0);/**{@link AccessibilityManager#STATE_FLAG_ACCESSIBILITY_ENABLED}*/
//                 } catch (Exception ignored) {
//                     ignored.printStackTrace();
//                 }
//             }
//         }
//     }
// 
//     @Override
//     public void setOverScrollMode(int mode) {
// //        try {
// //            super.setOverScrollMode(mode);
// //        } catch (Throwable e) {
// //            e.printStackTrace();
// //        }
// 
//         try {
//             super.setOverScrollMode(mode);
//         } catch (Throwable e) {
//             String trace = Log.getStackTraceString(e);
//             if (trace.contains("android.content.pm.PackageManager$NameNotFoundException")
//                     || trace.contains("java.lang.RuntimeException: Cannot load WebView")
//                     || trace.contains("android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed")) {
//                 e.printStackTrace();
//             } else {
//                 throw e;
//             }
//         }
//     }
// 
//     @Override
//     public boolean isPrivateBrowsingEnabled() {
//         if (Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1 && getSettings() == null) {
//             return false;
//         } else {
//             return super.isPrivateBrowsingEnabled();
//         }
//     }
// 
//     @Override
//     public void onResume() {
//         super.onResume();
//         resumeTimers();
//     }
// 
//     @Override
//     public void onPause() {
//         super.onPause();
//         pauseTimers();
//     }
// 
//     /**
//      * 释放相关操作
//      */
//     public void onDestroy() {
//         setWebViewClient(null);
//         removeAllViews();
//         stopLoading();
//         clearMatches();
//         clearHistory();
//         clearSslPreferences();
//         clearCache(true);
//         destroy();
//     }
// }
// 
// Path: app/src/main/java/com/kong/lib/mvp/BasePresenter.java
// public interface BasePresenter {
// 
// 	void start();
// 
// }
// 
// Path: app/src/main/java/com/kong/lib/mvp/BaseView.java
// public interface BaseView<T> {
// 
//     void setPresenter(T presenter);
// 
// }


import com.kong.lib.widget.SafeWebView;
import com.kong.lib.mvp.BasePresenter;
import com.kong.lib.mvp.BaseView;
package com.kong.app.news.detail;



/**
 * Created by whiskeyfei on 16/11/6.
 */

public interface DetailContract {

    interface View extends BaseView<Presenter> {
        void showLoadErrorMessage(String description);
    }

// Path: app/src/main/java/com/kong/lib/widget/SafeWebView.java
// public class SafeWebView extends WebView {
// 
//     public SafeWebView(Context context) {
//         super(context);
//         removeSearchBox();
//     }
// 
//     public SafeWebView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         removeSearchBox();
//     }
// 
//     public SafeWebView(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
//         removeSearchBox();
//     }
// 
//     /**
//      * 移除系统注入的对象，避免js漏洞
//      * <p>
//      * https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1939
//      * https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7224
//      */
//     private void removeSearchBox() {
//         super.removeJavascriptInterface("searchBoxJavaBridge_");
//         super.removeJavascriptInterface("accessibility");
//         super.removeJavascriptInterface("accessibilityTraversal");
//     }
// 
//     public static void disableAccessibility(Context context) {
//         if (Build.VERSION.SDK_INT == 17/*4.2 (Build.VERSION_CODES.JELLY_BEAN_MR1)*/) {
//             if (context != null) {
//                 try {
//                     AccessibilityManager am = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
//                     if (!am.isEnabled()) {
//                         //Not need to disable accessibility
//                         return;
//                     }
// 
//                     Method setState = am.getClass().getDeclaredMethod("setState", int.class);
//                     setState.setAccessible(true);
//                     setState.invoke(am, 0);/**{@link AccessibilityManager#STATE_FLAG_ACCESSIBILITY_ENABLED}*/
//                 } catch (Exception ignored) {
//                     ignored.printStackTrace();
//                 }
//             }
//         }
//     }
// 
//     @Override
//     public void setOverScrollMode(int mode) {
// //        try {
// //            super.setOverScrollMode(mode);
// //        } catch (Throwable e) {
// //            e.printStackTrace();
// //        }
// 
//         try {
//             super.setOverScrollMode(mode);
//         } catch (Throwable e) {
//             String trace = Log.getStackTraceString(e);
//             if (trace.contains("android.content.pm.PackageManager$NameNotFoundException")
//                     || trace.contains("java.lang.RuntimeException: Cannot load WebView")
//                     || trace.contains("android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed")) {
//                 e.printStackTrace();
//             } else {
//                 throw e;
//             }
//         }
//     }
// 
//     @Override
//     public boolean isPrivateBrowsingEnabled() {
//         if (Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1 && getSettings() == null) {
//             return false;
//         } else {
//             return super.isPrivateBrowsingEnabled();
//         }
//     }
// 
//     @Override
//     public void onResume() {
//         super.onResume();
//         resumeTimers();
//     }
// 
//     @Override
//     public void onPause() {
//         super.onPause();
//         pauseTimers();
//     }
// 
//     /**
//      * 释放相关操作
//      */
//     public void onDestroy() {
//         setWebViewClient(null);
//         removeAllViews();
//         stopLoading();
//         clearMatches();
//         clearHistory();
//         clearSslPreferences();
//         clearCache(true);
//         destroy();
//     }
// }
// 
// Path: app/src/main/java/com/kong/lib/mvp/BasePresenter.java
// public interface BasePresenter {
// 
// 	void start();
// 
// }
// 
// Path: app/src/main/java/com/kong/lib/mvp/BaseView.java
// public interface BaseView<T> {
// 
//     void setPresenter(T presenter);
// 
// }


// Path: app/src/main/java/com/kong/app/news/detail/DetailContract.java
import com.kong.lib.widget.SafeWebView;
import com.kong.lib.mvp.BasePresenter;
import com.kong.lib.mvp.BaseView;

package com.kong.app.news.detail;



/**
 * Created by whiskeyfei on 16/11/6.
 */

public interface DetailContract {

    interface View extends BaseView<Presenter> {
        void showLoadErrorMessage(String description);
    }

    interface Presenter extends BasePresenter {